linux-omap.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] ARM: OMAP3: DMA: Fix for sDMA Errata 1.113
@ 2008-09-25 10:01 Shilimkar, Santosh
  0 siblings, 0 replies; 3+ messages in thread
From: Shilimkar, Santosh @ 2008-09-25 10:01 UTC (permalink / raw)
  To: linux-omap@vger.kernel.org; +Cc: Pandita, Vikram

From: Santosh Shilimkar <santosh.shilimkar@ti.com>

SDMA channel is not disabled after transaction error. So explicitly disable it.

Signed-off-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
Acked By : Nishant kamat <nskamat@ti.com>
---
Index: linux-omap-2.6/arch/arm/plat-omap/dma.c
===================================================================
--- linux-omap-2.6.orig/arch/arm/plat-omap/dma.c	2008-09-23 16:41:23.000000000 +0530
+++ linux-omap-2.6/arch/arm/plat-omap/dma.c	2008-09-25 14:54:00.162059260 +0530
@@ -1849,9 +1849,22 @@ static int omap2_dma_handle_ch(int ch)
 		printk(KERN_INFO
 		       "DMA synchronization event drop occurred with device "
 		       "%d\n", dma_chan[ch].dev_id);
-	if (unlikely(status & OMAP2_DMA_TRANS_ERR_IRQ))
+	if (unlikely(status & OMAP2_DMA_TRANS_ERR_IRQ)) {
 		printk(KERN_INFO "DMA transaction error with device %d\n",
 		       dma_chan[ch].dev_id);
+		if (cpu_class_is_omap2()) {
+			/* Errata: sDMA Channel is not disabled
+			 * after a transaction error. So we explicitely
+			 * disable the channel
+			 */
+			u32 ccr;
+
+			ccr = dma_read(CCR(ch));
+			ccr &= ~OMAP_DMA_CCR_EN;
+			dma_write(ccr, CCR(ch));
+			dma_chan[ch].flags &= ~OMAP_DMA_ACTIVE;
+		}
+	}
 	if (unlikely(status & OMAP2_DMA_SECURE_ERR_IRQ))
 		printk(KERN_INFO "DMA secure error with device %d\n",
 		       dma_chan[ch].dev_id);

^ permalink raw reply	[flat|nested] 3+ messages in thread

* RE: [PATCH] ARM: OMAP3: DMA: Fix for sDMA Errata 1.113
@ 2008-10-01 11:09 Shilimkar, Santosh
  2008-10-01 12:12 ` Tony Lindgren
  0 siblings, 1 reply; 3+ messages in thread
From: Shilimkar, Santosh @ 2008-10-01 11:09 UTC (permalink / raw)
  To: Shilimkar, Santosh, linux-omap@vger.kernel.org; +Cc: Pandita, Vikram

> -----Original Message-----
> From: Shilimkar, Santosh 
> Sent: Thursday, September 25, 2008 3:31 PM
> To: linux-omap@vger.kernel.org
> Cc: Pandita, Vikram
> Subject: [PATCH] ARM: OMAP3: DMA: Fix for sDMA Errata 1.113
> 
> From: Santosh Shilimkar <santosh.shilimkar@ti.com>
> 
> SDMA channel is not disabled after transaction error. So 
> explicitly disable it.
> 
> Signed-off-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
> Acked By : Nishant kamat <nskamat@ti.com>
> ---
> Index: linux-omap-2.6/arch/arm/plat-omap/dma.c
> ===================================================================
> --- linux-omap-2.6.orig/arch/arm/plat-omap/dma.c 2008-09-23 16:41:23.000000000 +0530
> +++ linux-omap-2.6/arch/arm/plat-omap/dma.c	2008-09-25 14:54:00.162059260 +0530
> @@ -1849,9 +1849,22 @@ static int omap2_dma_handle_ch(int ch)
>  		printk(KERN_INFO
>  		       "DMA synchronization event drop occurred 
> with device "
>  		       "%d\n", dma_chan[ch].dev_id);
> -	if (unlikely(status & OMAP2_DMA_TRANS_ERR_IRQ))
> +	if (unlikely(status & OMAP2_DMA_TRANS_ERR_IRQ)) {
>  		printk(KERN_INFO "DMA transaction error with 
> device %d\n",
>  		       dma_chan[ch].dev_id);
> +		if (cpu_class_is_omap2()) {
> +			/* Errata: sDMA Channel is not disabled
> +			 * after a transaction error. So we explicitely
> +			 * disable the channel
> +			 */
> +			u32 ccr;
> +
> +			ccr = dma_read(CCR(ch));
> +			ccr &= ~OMAP_DMA_CCR_EN;
> +			dma_write(ccr, CCR(ch));
> +			dma_chan[ch].flags &= ~OMAP_DMA_ACTIVE;
> +		}
> +	}
>  	if (unlikely(status & OMAP2_DMA_SECURE_ERR_IRQ))
>  		printk(KERN_INFO "DMA secure error with device %d\n",
>  		       dma_chan[ch].dev_id);

Tony,
What about this patch ?

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] ARM: OMAP3: DMA: Fix for sDMA Errata 1.113
  2008-10-01 11:09 [PATCH] ARM: OMAP3: DMA: Fix for sDMA Errata 1.113 Shilimkar, Santosh
@ 2008-10-01 12:12 ` Tony Lindgren
  0 siblings, 0 replies; 3+ messages in thread
From: Tony Lindgren @ 2008-10-01 12:12 UTC (permalink / raw)
  To: Shilimkar, Santosh; +Cc: linux-omap@vger.kernel.org, Pandita, Vikram

* Shilimkar, Santosh <santosh.shilimkar@ti.com> [081001 14:09]:
> > -----Original Message-----
> > From: Shilimkar, Santosh 
> > Sent: Thursday, September 25, 2008 3:31 PM
> > To: linux-omap@vger.kernel.org
> > Cc: Pandita, Vikram
> > Subject: [PATCH] ARM: OMAP3: DMA: Fix for sDMA Errata 1.113
> > 
> > From: Santosh Shilimkar <santosh.shilimkar@ti.com>
> > 
> > SDMA channel is not disabled after transaction error. So 
> > explicitly disable it.
> > 
> > Signed-off-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
> > Acked By : Nishant kamat <nskamat@ti.com>
> > ---
> > Index: linux-omap-2.6/arch/arm/plat-omap/dma.c
> > ===================================================================
> > --- linux-omap-2.6.orig/arch/arm/plat-omap/dma.c 2008-09-23 16:41:23.000000000 +0530
> > +++ linux-omap-2.6/arch/arm/plat-omap/dma.c	2008-09-25 14:54:00.162059260 +0530
> > @@ -1849,9 +1849,22 @@ static int omap2_dma_handle_ch(int ch)
> >  		printk(KERN_INFO
> >  		       "DMA synchronization event drop occurred 
> > with device "
> >  		       "%d\n", dma_chan[ch].dev_id);
> > -	if (unlikely(status & OMAP2_DMA_TRANS_ERR_IRQ))
> > +	if (unlikely(status & OMAP2_DMA_TRANS_ERR_IRQ)) {
> >  		printk(KERN_INFO "DMA transaction error with 
> > device %d\n",
> >  		       dma_chan[ch].dev_id);
> > +		if (cpu_class_is_omap2()) {
> > +			/* Errata: sDMA Channel is not disabled
> > +			 * after a transaction error. So we explicitely
> > +			 * disable the channel
> > +			 */
> > +			u32 ccr;
> > +
> > +			ccr = dma_read(CCR(ch));
> > +			ccr &= ~OMAP_DMA_CCR_EN;
> > +			dma_write(ccr, CCR(ch));
> > +			dma_chan[ch].flags &= ~OMAP_DMA_ACTIVE;
> > +		}
> > +	}
> >  	if (unlikely(status & OMAP2_DMA_SECURE_ERR_IRQ))
> >  		printk(KERN_INFO "DMA secure error with device %d\n",
> >  		       dma_chan[ch].dev_id);
> 
> Tony,
> What about this patch ?--

Looks OK, I'll add it and queue it up for upstream too.

Tony

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2008-10-01 12:09 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-10-01 11:09 [PATCH] ARM: OMAP3: DMA: Fix for sDMA Errata 1.113 Shilimkar, Santosh
2008-10-01 12:12 ` Tony Lindgren
  -- strict thread matches above, loose matches on Subject: below --
2008-09-25 10:01 Shilimkar, Santosh

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).