> -----Original Message----- > From: Kevin Hilman [mailto:khilman@xxxxxxxxxxxxxxxxxxx] > Sent: Wednesday, November 10, 2010 3:43 AM > To: G, Manjunath Kondaiah > Cc: linux-omap@xxxxxxxxxxxxxxx; > linux-arm-kernel@xxxxxxxxxxxxxxxxxxx; Peter Ujfalusi; > Cousson, Benoit; Shilimkar, Santosh > Subject: Re: [PATCH v3 02/13] OMAP: DMA: Introduce errata > handling feature > > "G, Manjunath Kondaiah" <manjugk@xxxxxx> 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@xxxxxxxxx> > > 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@xxxxxx> > > Cc: Peter Ujfalusi <peter.ujfalusi@xxxxxxxxx> > > Cc: Benoit Cousson <b-cousson@xxxxxx> > > Cc: Kevin Hilman <khilman@xxxxxxxxxxxxxxxxxxx> > > Cc: Santosh Shilimkar <santosh.shilimkar@xxxxxx> > > --- > > 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-- 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