On Mon, Apr 5, 2010 at 7:56 PM, Shilimkar, Santosh <santosh.shilimkar@xxxxxx> wrote: > Venkat, >> -----Original Message----- >> From: svenkatr@xxxxxxxxx [mailto:svenkatr@xxxxxxxxx] On Behalf Of S, Venkatraman >> Sent: Friday, April 02, 2010 5:05 PM >> To: linux-omap@xxxxxxxxxxxxxxx >> Cc: Gopinath, Thara; Tony Lindgren; Shilimkar, Santosh >> Subject: [PATCH] dma: fix scope of errata i88 upto 3430ES1.0 >> >> DMA errata for special end of block programming is applicable >> only for OMAP2430 & OMAP3430 ES1.0. >> This patch does the necessary checks before the workaround >> is applied. Tested on 3430 SDP >> >> Signed-off-by: Thara Gopinath <thara@xxxxxx> >> Signed-off-by: Venkatraman S <svenkatr@xxxxxx> >> --- >> arch/arm/plat-omap/dma.c | 22 ++++++++++++++-------- >> 1 files changed, 14 insertions(+), 8 deletions(-) >> >> diff --git a/arch/arm/plat-omap/dma.c b/arch/arm/plat-omap/dma.c >> index 2ab224c..ef965ac 100644 >> --- a/arch/arm/plat-omap/dma.c >> +++ b/arch/arm/plat-omap/dma.c >> @@ -1663,14 +1663,18 @@ int omap_stop_dma_chain_transfers(int chain_id) >> channels = dma_linked_lch[chain_id].linked_dmach_q; >> >> /* >> - * DMA Errata: >> - * Special programming model needed to disable DMA before end of block >> + * DMA Errata: i88 >> + * Special programming model needed >> + * to disable DMA before end of block >> */ >> sys_cf = dma_read(OCP_SYSCONFIG); >> - l = sys_cf; >> - /* Middle mode reg set no Standby */ >> - l &= ~((1 << 12)|(1 << 13)); >> - dma_write(l, OCP_SYSCONFIG); >> + if (cpu_is_omap2430() || (cpu_is_omap3430() && >> + omap_rev() == OMAP3430_REV_ES1_0)) { > Since the Errata is applicable only for "omap2430" and > "OMAP3430 ES1.0", below should be enough, isn't it ? > > if (cpu_is_omap2430() || omap_rev() == OMAP3430_REV_ES1_0)) Yup.. Looks simpler. I will update. >> + l = sys_cf; >> + /* Middle mode reg set no Standby */ >> + l &= ~((1 << 12)|(1 << 13)); >> + dma_write(l, OCP_SYSCONFIG); >> + } >> >> for (i = 0; i < dma_linked_lch[chain_id].no_of_lchs_linked; i++) { >> >> @@ -1689,8 +1693,10 @@ int omap_stop_dma_chain_transfers(int chain_id) >> /* Reset the Queue pointers */ >> OMAP_DMA_CHAIN_QINIT(chain_id); >> >> - /* Errata - put in the old value */ >> - dma_write(sys_cf, OCP_SYSCONFIG); >> + /* Errata: put back the old value */ >> + if (cpu_is_omap2430() || (cpu_is_omap3430() && >> + omap_rev() == OMAP3430_REV_ES1_0)) > Same as above comment. >> + dma_write(sys_cf, OCP_SYSCONFIG); >> >> return 0; >> } > After fixing above two, the patch is fine with me. Thanks, I take that as ack ? :-) Regards, Venkat. -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html