[PATCH 04/10] mtd nand omap: call ecc calculate function outside omap_correct_bch
Sascha Hauer
s.hauer at pengutronix.de
Tue Nov 8 08:01:47 EST 2011
Move omap_calculate_ecc outside omap_correct_bch. When implementing
the romcode bch read page we have to call omap_calculate_ecc with
different arguments than in the standard case.
Signed-off-by: Sascha Hauer <s.hauer at pengutronix.de>
---
drivers/mtd/nand/nand_omap_gpmc.c | 8 ++++++--
1 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/drivers/mtd/nand/nand_omap_gpmc.c b/drivers/mtd/nand/nand_omap_gpmc.c
index 0713b64..8dd6b8c 100644
--- a/drivers/mtd/nand/nand_omap_gpmc.c
+++ b/drivers/mtd/nand/nand_omap_gpmc.c
@@ -360,8 +360,6 @@ static int omap_correct_bch(struct mtd_info *mtd, uint8_t *dat,
else
blocks = 1;
- omap_calculate_ecc(mtd, dat, calc_ecc);
-
for (i = 0; i < blocks; i++) {
/* check if any ecc error */
eccflag = 0;
@@ -471,6 +469,12 @@ static int omap_correct_data(struct mtd_info *mtd, uint8_t *dat,
case OMAP_ECC_BCH4_CODE_HW:
case OMAP_ECC_BCH8_CODE_HW:
case OMAP_ECC_BCH8_CODE_HW_ROMCODE:
+ /*
+ * The nand layer already called omap_calculate_ecc,
+ * but before it has read the oob data. Do it again,
+ * this time with oob data.
+ */
+ omap_calculate_ecc(mtd, dat, calc_ecc);
return omap_correct_bch(mtd, dat, read_ecc, calc_ecc);
default:
return -EINVAL;
--
1.7.7
More information about the barebox
mailing list