* [PATCH] dma: fix scope of errata i88 upto 3430ES1.0 @ 2010-04-02 11:35 Venkatraman S 2010-04-05 14:26 ` Shilimkar, Santosh 0 siblings, 1 reply; 9+ messages in thread From: Venkatraman S @ 2010-04-02 11:35 UTC (permalink / raw) To: linux-omap; +Cc: thara, Tony Lindgren, Santosh Shilimkar 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@ti.com> Signed-off-by: Venkatraman S <svenkatr@ti.com> --- 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)) { + 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)) + dma_write(sys_cf, OCP_SYSCONFIG); return 0; } -- 1.6.3.3 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* RE: [PATCH] dma: fix scope of errata i88 upto 3430ES1.0 2010-04-02 11:35 [PATCH] dma: fix scope of errata i88 upto 3430ES1.0 Venkatraman S @ 2010-04-05 14:26 ` Shilimkar, Santosh 2010-04-05 15:19 ` Venkatraman S 0 siblings, 1 reply; 9+ messages in thread From: Shilimkar, Santosh @ 2010-04-05 14:26 UTC (permalink / raw) To: S, Venkatraman, linux-omap@vger.kernel.org; +Cc: Gopinath, Thara, Tony Lindgren Venkat, > -----Original Message----- > From: svenkatr@gmail.com [mailto:svenkatr@gmail.com] On Behalf Of S, Venkatraman > Sent: Friday, April 02, 2010 5:05 PM > To: linux-omap@vger.kernel.org > 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@ti.com> > Signed-off-by: Venkatraman S <svenkatr@ti.com> > --- > 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)) > + 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. > -- > 1.6.3.3 ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] dma: fix scope of errata i88 upto 3430ES1.0 2010-04-05 14:26 ` Shilimkar, Santosh @ 2010-04-05 15:19 ` Venkatraman S 2010-04-05 15:36 ` [PATCH v2] " Venkatraman S 0 siblings, 1 reply; 9+ messages in thread From: Venkatraman S @ 2010-04-05 15:19 UTC (permalink / raw) To: Shilimkar, Santosh Cc: linux-omap@vger.kernel.org, Gopinath, Thara, Tony Lindgren On Mon, Apr 5, 2010 at 7:56 PM, Shilimkar, Santosh <santosh.shilimkar@ti.com> wrote: > Venkat, >> -----Original Message----- >> From: svenkatr@gmail.com [mailto:svenkatr@gmail.com] On Behalf Of S, Venkatraman >> Sent: Friday, April 02, 2010 5:05 PM >> To: linux-omap@vger.kernel.org >> 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@ti.com> >> Signed-off-by: Venkatraman S <svenkatr@ti.com> >> --- >> 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@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH v2] dma: fix scope of errata i88 upto 3430ES1.0 2010-04-05 15:19 ` Venkatraman S @ 2010-04-05 15:36 ` Venkatraman S 2010-04-19 10:51 ` Venkatraman S 0 siblings, 1 reply; 9+ messages in thread From: Venkatraman S @ 2010-04-05 15:36 UTC (permalink / raw) To: linux-omap; +Cc: Santosh Shilimkar, Tony Lindgren >From 2799506180649cbb61d24cf2b4171425b2e1fa80 Mon Sep 17 00:00:00 2001 From: Venkatraman S <svenkatr@ti.com> Date: Mon, 5 Apr 2010 20:56:27 +0530 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@ti.com> Signed-off-by: Venkatraman S <svenkatr@ti.com> Reviewed-by: Shilimkar Santosh <santosh.shilimkar@ti.com> --- >From v1, removed the redundant omap3430() check arch/arm/plat-omap/dma.c | 20 ++++++++++++-------- 1 files changed, 12 insertions(+), 8 deletions(-) diff --git a/arch/arm/plat-omap/dma.c b/arch/arm/plat-omap/dma.c index 2ab224c..a9b480a 100644 --- a/arch/arm/plat-omap/dma.c +++ b/arch/arm/plat-omap/dma.c @@ -1663,14 +1663,17 @@ 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() || (omap_rev() == OMAP3430_REV_ES1_0)) { + 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 +1692,9 @@ 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() || (omap_rev() == OMAP3430_REV_ES1_0)) + dma_write(sys_cf, OCP_SYSCONFIG); return 0; } -- 1.6.3.3 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH v2] dma: fix scope of errata i88 upto 3430ES1.0 2010-04-05 15:36 ` [PATCH v2] " Venkatraman S @ 2010-04-19 10:51 ` Venkatraman S 2010-04-21 21:14 ` Tony Lindgren 0 siblings, 1 reply; 9+ messages in thread From: Venkatraman S @ 2010-04-19 10:51 UTC (permalink / raw) To: Tony Lindgren; +Cc: Santosh Shilimkar, linux-omap Hi Tony, > Venkatraman S <svenkatr@ti.com> wrote: > From 2799506180649cbb61d24cf2b4171425b2e1fa80 Mon Sep 17 00:00:00 2001 > From: Venkatraman S <svenkatr@ti.com> > Date: Mon, 5 Apr 2010 20:56:27 +0530 > 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@ti.com> > Signed-off-by: Venkatraman S <svenkatr@ti.com> > Reviewed-by: Shilimkar Santosh <santosh.shilimkar@ti.com> > --- > From v1, removed the redundant omap3430() check > > arch/arm/plat-omap/dma.c | 20 ++++++++++++-------- > 1 files changed, 12 insertions(+), 8 deletions(-) > > diff --git a/arch/arm/plat-omap/dma.c b/arch/arm/plat-omap/dma.c > index 2ab224c..a9b480a 100644 > --- a/arch/arm/plat-omap/dma.c > +++ b/arch/arm/plat-omap/dma.c > @@ -1663,14 +1663,17 @@ 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() || (omap_rev() == OMAP3430_REV_ES1_0)) { > + 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 +1692,9 @@ 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() || (omap_rev() == OMAP3430_REV_ES1_0)) > + dma_write(sys_cf, OCP_SYSCONFIG); > > return 0; > } > -- > 1.6.3.3 > If there are no other concerns about this patch, can you please include it ? Many thanks, Venkat. -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2] dma: fix scope of errata i88 upto 3430ES1.0 2010-04-19 10:51 ` Venkatraman S @ 2010-04-21 21:14 ` Tony Lindgren 2010-04-26 14:51 ` Venkatraman S 0 siblings, 1 reply; 9+ messages in thread From: Tony Lindgren @ 2010-04-21 21:14 UTC (permalink / raw) To: Venkatraman S; +Cc: Santosh Shilimkar, linux-omap * Venkatraman S <svenkatr@ti.com> [100419 03:47]: > Hi Tony, > > Venkatraman S <svenkatr@ti.com> wrote: > > From 2799506180649cbb61d24cf2b4171425b2e1fa80 Mon Sep 17 00:00:00 2001 > > From: Venkatraman S <svenkatr@ti.com> > > Date: Mon, 5 Apr 2010 20:56:27 +0530 > > 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@ti.com> > > Signed-off-by: Venkatraman S <svenkatr@ti.com> > > Reviewed-by: Shilimkar Santosh <santosh.shilimkar@ti.com> > > --- > > From v1, removed the redundant omap3430() check > > > > arch/arm/plat-omap/dma.c | 20 ++++++++++++-------- > > 1 files changed, 12 insertions(+), 8 deletions(-) > > > > diff --git a/arch/arm/plat-omap/dma.c b/arch/arm/plat-omap/dma.c > > index 2ab224c..a9b480a 100644 > > --- a/arch/arm/plat-omap/dma.c > > +++ b/arch/arm/plat-omap/dma.c > > @@ -1663,14 +1663,17 @@ 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() || (omap_rev() == OMAP3430_REV_ES1_0)) { > > + 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++) { > > What about other omaps? It seems that we're currently doing the workaround for all omaps. Seems like "Tested on 3430 SDP" is not quite safe enough for making change that might affect other omaps. Tony > > @@ -1689,8 +1692,9 @@ 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() || (omap_rev() == OMAP3430_REV_ES1_0)) > > + dma_write(sys_cf, OCP_SYSCONFIG); > > > > return 0; > > } > > -- > > 1.6.3.3 > > > > If there are no other concerns about this patch, can you please include it ? > Many thanks, > Venkat. -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2] dma: fix scope of errata i88 upto 3430ES1.0 2010-04-21 21:14 ` Tony Lindgren @ 2010-04-26 14:51 ` Venkatraman S 2010-05-03 16:35 ` Tony Lindgren 0 siblings, 1 reply; 9+ messages in thread From: Venkatraman S @ 2010-04-26 14:51 UTC (permalink / raw) To: Tony Lindgren; +Cc: Santosh Shilimkar, linux-omap Tony Lindgren <tony@atomide.com> wrote: > * Venkatraman S <svenkatr@ti.com> [100419 03:47]: >> Hi Tony, >> > Venkatraman S <svenkatr@ti.com> wrote: >> > From 2799506180649cbb61d24cf2b4171425b2e1fa80 Mon Sep 17 00:00:00 2001 >> > From: Venkatraman S <svenkatr@ti.com> >> > Date: Mon, 5 Apr 2010 20:56:27 +0530 >> > 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@ti.com> >> > Signed-off-by: Venkatraman S <svenkatr@ti.com> >> > Reviewed-by: Shilimkar Santosh <santosh.shilimkar@ti.com> >> > --- >> > From v1, removed the redundant omap3430() check >> > >> > arch/arm/plat-omap/dma.c | 20 ++++++++++++-------- >> > 1 files changed, 12 insertions(+), 8 deletions(-) >> > >> > diff --git a/arch/arm/plat-omap/dma.c b/arch/arm/plat-omap/dma.c >> > index 2ab224c..a9b480a 100644 >> > --- a/arch/arm/plat-omap/dma.c >> > +++ b/arch/arm/plat-omap/dma.c >> > @@ -1663,14 +1663,17 @@ 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() || (omap_rev() == OMAP3430_REV_ES1_0)) { >> > + 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++) { >> > > > What about other omaps? It seems that we're currently doing the workaround > for all omaps. Seems like "Tested on 3430 SDP" is not quite safe enough > for making change that might affect other omaps. > > Tony The Errata document specifically mentions that the workaround is needed only for 3430 ES1.0 or earlier. I had actually tested on the ES2.0. [Now that you have mentioned it, I tested on 3630 and 4430 as well] Let me know if you need more test results or information. Thanks, Venkat. -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2] dma: fix scope of errata i88 upto 3430ES1.0 2010-04-26 14:51 ` Venkatraman S @ 2010-05-03 16:35 ` Tony Lindgren 2010-05-04 6:50 ` Venkatraman S 0 siblings, 1 reply; 9+ messages in thread From: Tony Lindgren @ 2010-05-03 16:35 UTC (permalink / raw) To: Venkatraman S; +Cc: Santosh Shilimkar, linux-omap * Venkatraman S <svenkatr@ti.com> [100426 07:46]: > Tony Lindgren <tony@atomide.com> wrote: > > * Venkatraman S <svenkatr@ti.com> [100419 03:47]: > >> Hi Tony, > >> > Venkatraman S <svenkatr@ti.com> wrote: > >> > From 2799506180649cbb61d24cf2b4171425b2e1fa80 Mon Sep 17 00:00:00 2001 > >> > From: Venkatraman S <svenkatr@ti.com> > >> > Date: Mon, 5 Apr 2010 20:56:27 +0530 > >> > 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@ti.com> > >> > Signed-off-by: Venkatraman S <svenkatr@ti.com> > >> > Reviewed-by: Shilimkar Santosh <santosh.shilimkar@ti.com> > >> > --- > >> > From v1, removed the redundant omap3430() check > >> > > >> > arch/arm/plat-omap/dma.c | 20 ++++++++++++-------- > >> > 1 files changed, 12 insertions(+), 8 deletions(-) > >> > > >> > diff --git a/arch/arm/plat-omap/dma.c b/arch/arm/plat-omap/dma.c > >> > index 2ab224c..a9b480a 100644 > >> > --- a/arch/arm/plat-omap/dma.c > >> > +++ b/arch/arm/plat-omap/dma.c > >> > @@ -1663,14 +1663,17 @@ 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() || (omap_rev() == OMAP3430_REV_ES1_0)) { > >> > + 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++) { > >> > > > > > What about other omaps? It seems that we're currently doing the workaround > > for all omaps. Seems like "Tested on 3430 SDP" is not quite safe enough > > for making change that might affect other omaps. > > > > Tony > > The Errata document specifically mentions that the workaround is > needed only for > 3430 ES1.0 or earlier. I had actually tested on the ES2.0. [Now that > you have mentioned it, > I tested on 3630 and 4430 as well] > Let me know if you need more test results or information. Uhh. The old code does this for all omaps. I rather trust the existing than TI documentation. What about 2420 and 2430? Regards, Tony -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2] dma: fix scope of errata i88 upto 3430ES1.0 2010-05-03 16:35 ` Tony Lindgren @ 2010-05-04 6:50 ` Venkatraman S 0 siblings, 0 replies; 9+ messages in thread From: Venkatraman S @ 2010-05-04 6:50 UTC (permalink / raw) To: Tony Lindgren; +Cc: Santosh Shilimkar, linux-omap Tony Lindgren <tony@atomide.com> wrote: > * Venkatraman S <svenkatr@ti.com> [100426 07:46]: >> Tony Lindgren <tony@atomide.com> wrote: >> > * Venkatraman S <svenkatr@ti.com> [100419 03:47]: >> >> Hi Tony, >> >> > Venkatraman S <svenkatr@ti.com> wrote: >> >> > From 2799506180649cbb61d24cf2b4171425b2e1fa80 Mon Sep 17 00:00:00 2001 >> >> > From: Venkatraman S <svenkatr@ti.com> >> >> > Date: Mon, 5 Apr 2010 20:56:27 +0530 >> >> > 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@ti.com> >> >> > Signed-off-by: Venkatraman S <svenkatr@ti.com> >> >> > Reviewed-by: Shilimkar Santosh <santosh.shilimkar@ti.com> >> >> > --- >> >> > From v1, removed the redundant omap3430() check >> >> > >> >> > arch/arm/plat-omap/dma.c | 20 ++++++++++++-------- >> >> > 1 files changed, 12 insertions(+), 8 deletions(-) >> >> > >> >> > diff --git a/arch/arm/plat-omap/dma.c b/arch/arm/plat-omap/dma.c >> >> > index 2ab224c..a9b480a 100644 >> >> > --- a/arch/arm/plat-omap/dma.c >> >> > +++ b/arch/arm/plat-omap/dma.c >> >> > @@ -1663,14 +1663,17 @@ 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() || (omap_rev() == OMAP3430_REV_ES1_0)) { >> >> > + 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++) { >> >> > >> > >> > What about other omaps? It seems that we're currently doing the workaround >> > for all omaps. Seems like "Tested on 3430 SDP" is not quite safe enough >> > for making change that might affect other omaps. >> > >> > Tony >> >> The Errata document specifically mentions that the workaround is >> needed only for >> 3430 ES1.0 or earlier. I had actually tested on the ES2.0. [Now that >> you have mentioned it, >> I tested on 3630 and 4430 as well] >> Let me know if you need more test results or information. > > Uhh. The old code does this for all omaps. I rather trust the existing > than TI documentation. What about 2420 and 2430? > I don't have OMAP2 boards to test, unfortunately. I felt that the code didn't get updated with respect to the later versions of the silicon where the h/w defect is no longer seen (atleast, according to the errata specifications I have) No driver is currently using omap_stop_dma_chain_transfers in the tree, as far as I checked. So that makes it somewhat less risky than it seems. You can make a call on that. Regards, Venkat. -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2010-05-04 6:50 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2010-04-02 11:35 [PATCH] dma: fix scope of errata i88 upto 3430ES1.0 Venkatraman S 2010-04-05 14:26 ` Shilimkar, Santosh 2010-04-05 15:19 ` Venkatraman S 2010-04-05 15:36 ` [PATCH v2] " Venkatraman S 2010-04-19 10:51 ` Venkatraman S 2010-04-21 21:14 ` Tony Lindgren 2010-04-26 14:51 ` Venkatraman S 2010-05-03 16:35 ` Tony Lindgren 2010-05-04 6:50 ` Venkatraman S
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).