[PATCH] mtd: nand: mxs: Fix 2k nand with oob size of 224 bytes

Sascha Hauer s.hauer at pengutronix.de
Mon May 19 06:42:25 PDT 2014


The mxs nand driver has a calculation for the ecc strength.
This calculation was not used for some common nands and it
was assumed that 2k page nands always have a ecc strength
of 8. This is not true since there are devices with 224 bytes
of oob instread of 64 bytes. These allow for a greater ecc
strength. Since the kernel relies on the calculation and
we have to be consistent with the kernel use the calculcation
in barebox aswell and just remove our assumptions.

Signed-off-by: Sascha Hauer <s.hauer at pengutronix.de>
---
 drivers/mtd/nand/nand_mxs.c | 16 ----------------
 1 file changed, 16 deletions(-)

diff --git a/drivers/mtd/nand/nand_mxs.c b/drivers/mtd/nand/nand_mxs.c
index d5428bc..5a4449d 100644
--- a/drivers/mtd/nand/nand_mxs.c
+++ b/drivers/mtd/nand/nand_mxs.c
@@ -238,22 +238,6 @@ static inline uint32_t mxs_nand_get_ecc_strength(uint32_t page_data_size,
 	int ecc_strength = 0;
 	int gf_len = 13;  /* length of Galois Field for non-DDR nand */
 
-	/*
-	 * Possibly this if-else calculation may be removed since
-	 * ecc_strength calculated after it is taken from kernel driver
-	 * and therefore should work for all cases. But it was tested only
-	 * on devices with {data_size = 2046, oob_size = 64} and
-	 * {data_size = 4096, oob_size = 224} configuration.
-	 */
-	if (page_data_size == 2048)
-		return 8;
-	else if (page_data_size == 4096) {
-		if (page_oob_size == 128)
-			return 8;
-		if (page_oob_size == 218)
-			return 16;
-	}
-
 	ecc_strength = ((page_oob_size - MXS_NAND_METADATA_SIZE) * 8)
 		/ (gf_len * ecc_chunk_count);
 
-- 
2.0.0.rc0




More information about the barebox mailing list