[U-Boot] [PATCH] nand: fix reading after switching ecc

Scott Wood scottwood at freescale.com
Mon Jan 13 19:18:45 CET 2014


On Mon, 2014-01-13 at 08:29 +0000, Gupta, Pekon wrote:
> Hi Jeroen,
> 
> >
> >The omap_gpmc allows switching ecc at runtime. Since
> >the NAND_SUBPAGE_READ flag is only set, it is kept when
> >switching to hw ecc, which is not correct. This leads to
> >calling chip->ecc.read_subpage which is not a valid
> >pointer. Therefore also clear the flag so reading in
> >hw mode works again.
> >
> >Cc: Scott Wood <scottwood at freescale.com>
> >Cc: Pekon Gupta <pekon at ti.com>
> >Cc: Nikita Kiryanov <nikita at compulab.co.il>
> >Signed-off-by: Jeroen Hofstee <jeroen at myspectrum.nl>
> >---
> > drivers/mtd/nand/nand_base.c | 2 ++
> > 1 file changed, 2 insertions(+)
> >
> >diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c
> >index 1ce55fd..0762a19 100644
> >--- a/drivers/mtd/nand/nand_base.c
> >+++ b/drivers/mtd/nand/nand_base.c
> >@@ -3354,6 +3354,8 @@ int nand_scan_tail(struct mtd_info *mtd)
> > 	/* Large page NAND with SOFT_ECC should support subpage reads */
> > 	if ((chip->ecc.mode == NAND_ECC_SOFT) && (chip->page_shift > 9))
> > 		chip->options |= NAND_SUBPAGE_READ;
> >+	else
> >+		chip->options &= ~NAND_SUBPAGE_READ;

NACK; this breaks NAND_SUBPAGE_READ with hardware ECC for drivers that
support it.

> I don't think it's good to add OMAP specific changes to nand_base.c.
> It's better if you can add this as part of omap_select_ecc_scheme() in omap_gpmc.c

Yes, clear it from the OMAP switching code if OMAP can't do subpage
reads with hardware ECC.

-Scott




More information about the U-Boot mailing list