[PATCH v2] ARM: OMAP3: gpmc: add BCH ecc api and modes

Tony Lindgren tony at atomide.com
Wed Apr 25 16:57:46 EDT 2012


* Ivan Djelic <ivan.djelic at parrot.com> [120425 11:33]:
> Hi Tony,
> Thanks for the review,
> 
> On Wed, Apr 25, 2012 at 06:03:14PM +0100, Tony Lindgren wrote:
> (...)
> > >  #define GPMC_ECC1_RESULT        0x200
> > > +#define GPMC_ECC_BCH_RESULT_0   0x240
> > 
> > Can you please add a comment here saying something like:
> > 
> > #define GPMC_ECC_BCH_RESULT_0   0x240	/* Not available on omap2 */
> 
> OK sure.
> 
> > > +	/* check if ecc module is in use */
> > > +	if (gpmc_ecc_used != -EINVAL)
> > > +		return -EINVAL;
> > > +	/*
> > > +	 * FIXME: some OMAP3 revisions have a hardware bug which prevents
> > > +	 * the 4-bit BCH mode from working properly. Such revisions could be
> > > +	 * detected and rejected here.
> > > +	 */
> > 
> > This should then be disabled to avoid corruption. Maybe only allow it
> > initially on omaps that have been tested? And for omap2 it should return
> > error  for sure.
> 
> OK I'll add a check.
> 
> > 
> > Or do you know the broken omap3 versions?
> 
> Well, I was hoping that someone from linux-omap could tell me :)
> I found this HW ECC feature table in
> http://processors.wiki.ti.com/index.php/Raw_NAND_ECC:
> 
>          1b     4b      8b
> ---------------------------
> OMAP35x  YES    NO      YES
> AM35x    YES    YES     YES
> AM/DM37x YES    YES     YES
> 
> and other wiki pages confirmed that 4-bit mode is not supported on all OMAP35xx chips.
> OTOH, I know from TI support that 4-bit mode is at least supported on
> OMAP3630 ES1.x (x >= 1).
> 
> So, a conservative approach would be to reject 4-bit mode on all chips but
> omap3630 with rev >= 1.1. Other revisions/chips could be added later if they are
> confirmed to work; what do you think ?

Sounds good to me.
 
> > Also, should you first request this feature in case multiple drivers
> > need to share it?
> 
> According to TI documentation (OMAP36xx ES1.x TRM, §10.1.4, GPMC functional diagram),
> the GPMC ECC engines (Hamming and BCH) are dedicated to NAND access only; therefore
> I believe the mtd driver is the only potential user of this feature.
> Also, the existing Hamming ecc API does not perform any request; or did I miss
> something? If I need to perform the request, is there an existing api to do so?

OK I guess the only conflict would be multiple NAND chips then, which we don't
have at least currently AFAIK.

Tony



More information about the linux-mtd mailing list