From: Jordan Friendshuh Date: Wed, 27 Aug 2014 17:45:36 +0000 (-0500) Subject: mtd: nand: Base BCH ECC bytes on required strength X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=438320dd34a4d0b2b177fbae749c3b9d00532faf;p=openwrt%2Fstaging%2Fblogic.git mtd: nand: Base BCH ECC bytes on required strength 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 Signed-off-by: Aaron Sierra Signed-off-by: Brian Norris --- diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c index 5b5c62712814..4b7e0287b48f 100644 --- a/drivers/mtd/nand/nand_base.c +++ b/drivers/mtd/nand/nand_base.c @@ -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);