mtd: nand: Base BCH ECC bytes on required strength
authorJordan Friendshuh <jfriendshuh@xes-inc.com>
Wed, 27 Aug 2014 17:45:36 +0000 (12:45 -0500)
committerBrian Norris <computersforpeace@gmail.com>
Wed, 5 Nov 2014 08:08:59 +0000 (00:08 -0800)
NAND devices with page sizes over 4 KiB require more than 4-bits of ECC
coverage. This patch calculates the value of ecc_bytes based on a still
assumed 512-byte step size (13-bits) and the ecc_strength.

Example:
Micron M73A devices (8 KiB page) require 8-bit ECC per 512-byte

Signed-off-by: Jordan Friendshuh <jfriendshuh@xes-inc.com>
Signed-off-by: Aaron Sierra <asierra@xes-inc.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
drivers/mtd/nand/nand_base.c

index 5b5c62712814e37264af04eee92f0b379c9c9741..4b7e0287b48fa9010692a935ed563e4241a92b04 100644 (file)
@@ -4035,7 +4035,7 @@ int nand_scan_tail(struct mtd_info *mtd)
                 */
                if (!ecc->size && (mtd->oobsize >= 64)) {
                        ecc->size = 512;
-                       ecc->bytes = 7;
+                       ecc->bytes = DIV_ROUND_UP(13 * ecc->strength, 8);
                }
                ecc->priv = nand_bch_init(mtd, ecc->size, ecc->bytes,
                                               &ecc->layout);