[U-Boot] NAND ECC Error with wrong SMC ording bug

vimal singh vimal.newwork at gmail.com
Fri Aug 21 01:17:09 EDT 2009


<snip>

> With the current ndfc code, the error correction gets the bits wrong.
> Switching it back to the original way and the correction is correct.
>
> diff --git a/drivers/mtd/nand/ndfc.c b/drivers/mtd/nand/ndfc.c
> index 89bf85a..497e175 100644
> --- a/drivers/mtd/nand/ndfc.c
> +++ b/drivers/mtd/nand/ndfc.c
> @@ -101,9 +101,8 @@ static int ndfc_calculate_ecc(struct mtd_info *mtd,
>
>        wmb();
>        ecc = in_be32(ndfc->ndfcbase + NDFC_ECC);
> -       /* The NDFC uses Smart Media (SMC) bytes order */
> -       ecc_code[0] = p[2];
> -       ecc_code[1] = p[1];
> +       ecc_code[0] = p[1];
> +       ecc_code[1] = p[2];
>        ecc_code[2] = p[3];
>
>        return 0;
>
> Does anybody see a problem with my method of reproducing the bug? This
> bug is deadly for our customers. I don't want to make the change unless
> it is absolutely necessary..

Just one question: did you enabled MTD_NAND_ECC_SMC in configs?

-vimal

>
> Cheers,
>   Sean
>
> ______________________________________________________
> Linux MTD discussion mailing list
> http://lists.infradead.org/mailman/listinfo/linux-mtd/
>



More information about the linux-mtd mailing list