[PATCH v3 02/13] OMAP: DMA: Introduce errata handling feature

G, Manjunath Kondaiah manjugk at ti.com
Wed Nov 10 09:02:03 EST 2010



> -----Original Message-----
> From: Kevin Hilman [mailto:khilman at deeprootsystems.com] 
> Sent: Wednesday, November 10, 2010 3:43 AM
> To: G, Manjunath Kondaiah
> Cc: linux-omap at vger.kernel.org; 
> linux-arm-kernel at lists.infradead.org; Peter Ujfalusi; 
> Cousson, Benoit; Shilimkar, Santosh
> Subject: Re: [PATCH v3 02/13] OMAP: DMA: Introduce errata 
> handling feature
> 
> "G, Manjunath Kondaiah" <manjugk at ti.com> writes:
> 
> > Implement errata handling to use flags instead of cpu_is_*
> > and cpu_class_* in the code.
> >
> > The errata flags are initialized at init time and during runtime
> > we are using the errata variable (via the IS_DMA_ERRATA macro)
> > to execute the required errata workaround.
> >
> > Reused errata handling patch from Peter Ujfalusi 
> <peter.ujfalusi at nokia.com>
> > https://patchwork.kernel.org/patch/231191/
> 
> When starting from someone else's work, would be very helpful to
> reviewers (and original authors) if you summarized what you
> changed/fixed/updated etc.

ok. I will update patch summary.

> 
> > Signed-off-by: G, Manjunath Kondaiah <manjugk at ti.com>
> > Cc: Peter Ujfalusi <peter.ujfalusi at nokia.com>
> > Cc: Benoit Cousson <b-cousson at ti.com>
> > Cc: Kevin Hilman <khilman at deeprootsystems.com>
> > Cc: Santosh Shilimkar <santosh.shilimkar at ti.com>
> > ---
> >  arch/arm/plat-omap/dma.c              |  134 
> ++++++++++++++++++++++----------
[...]
> > +	if (omap_type() == OMAP3430_REV_ES1_0)
> > +		SET_DMA_ERRATA(DMA_ERRATA_i88);
> > +
> > +	/*
> > +	 * Errata 3.2/3.3: sometimes 0 is returned if CSAC/CDAC is
> 
> This doesn't look like a unique errata identifier.  Chapter 3 
> is usually
> the 'Cautions' section, and I don't listed in either the 34xx (v5.9),
> 36xx (v1.3) or 44xx (v1.3) errata docs under this number, and 
> don't see
> that number in either of the 24xx errata docs either.   
> Please clarify.

Even I tried to find this info from errata docs prior to migrating
all errata's to generic errata handling. This code was exising earlier,
hence I retained it "as is", no documentation exists for this errata.

> 
> > +	 * read before the DMA controller finished disabling 
> the channel.
> > +	 */
> > +	if (!cpu_is_omap15xx())
> > +		SET_DMA_ERRATA(DMA_ERRATA_3_3);
> > +}
> > +
> >  
> /*------------------------------------------------------------
> ----------------*/
> >  
> >  static int __init omap_init_dma(void)
> > @@ -2481,6 +2528,9 @@ static int __init omap_init_dma(void)
> >  		}
> >  	}
> >  
> > +	/* Configure errata handling for all omap's */
> > +	configure_dma_errata();
> > +
> >  	return 0;
> >  
> >  out_free:
> > diff --git a/arch/arm/plat-omap/include/plat/dma.h 
> b/arch/arm/plat-omap/include/plat/dma.h
> > index 27578f3..5e28d26 100644
> > --- a/arch/arm/plat-omap/include/plat/dma.h
> > +++ b/arch/arm/plat-omap/include/plat/dma.h
> > @@ -285,6 +285,17 @@
> >  #define DMA_CH_PRIO_HIGH		0x1
> >  #define DMA_CH_PRIO_LOW			0x0 /* Def */
> >  
> > +/* Errata handling */
> > +#define IS_DMA_ERRATA(id)		(errata &= (id))
> 
> Why the '&=' here?  I guess it should just be a '&'  The '=' 
> was not in
> Peter's original.

correct. There was bug in peter's original patch for SET_DMA_ERRATA(id)
it was | instead |=, while fixing set_dma_errata, accidentally, I have
changed is_dma_errata also. Will fix it.

> 
> > +#define SET_DMA_ERRATA(id)		(errata |= (id))
> > +
> > +#define DMA_ERRATA_IFRAME_BUFFERING	(1 << 0)
> > +#define DMA_ERRATA_PARALLEL_CHANNELS	(1 << 1)
> > +#define DMA_ERRATA_i378			(1 << 2)
> > +#define DMA_ERRATA_i541			(1 << 3)
> > +#define DMA_ERRATA_i88			(1 << 4)
> > +#define DMA_ERRATA_3_3			(1 << 5)
> 
> Please use BIT()
ok.

-Manjunath


More information about the linux-arm-kernel mailing list