
<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/