diff options
Diffstat (limited to 'drivers/mtd/nand')
-rw-r--r-- | drivers/mtd/nand/Kconfig | 7 | ||||
-rw-r--r-- | drivers/mtd/nand/mxs_nand.c | 6 |
2 files changed, 13 insertions, 0 deletions
diff --git a/drivers/mtd/nand/Kconfig b/drivers/mtd/nand/Kconfig index a2ea9b1..8333d49 100644 --- a/drivers/mtd/nand/Kconfig +++ b/drivers/mtd/nand/Kconfig @@ -87,6 +87,13 @@ config NAND_MXS This enables NAND driver for the NAND flash controller on the MXS processors. +config NAND_MXS_BCH_LEGACY_GEO + bool "Keep using legacy bch geometry for MXS NAND driver" + depends on NAND_MXS + help + Users can use legacy bch geometry in u-boot by enabling this configuration. + NOTICE: the feature must be enabled/disabled in both u-boot and kernel. + config NAND_ZYNQ bool "Support for Zynq Nand controller" select SYS_NAND_SELF_INIT diff --git a/drivers/mtd/nand/mxs_nand.c b/drivers/mtd/nand/mxs_nand.c index 1ffe4ce..22ba85e 100644 --- a/drivers/mtd/nand/mxs_nand.c +++ b/drivers/mtd/nand/mxs_nand.c @@ -254,6 +254,12 @@ static int mxs_nand_get_ecc_strength(struct mtd_info *mtd) } else { ecc_strength = chip->ecc_strength_ds; ecc_strength += ecc_strength & 1; +#if defined(CONFIG_NAND_MXS_BCH_LEGACY_GEO) + ecc_strength = ((page_oob_size - MXS_NAND_METADATA_SIZE) * 8) + /(galois_field * mxs_nand_ecc_chunk_cnt(mtd->writesize)); + ecc_strength += ecc_strength & 1; + ecc_strength = min(ecc_strength, MXS_NAND_MAX_ECC_STRENGTH); +#endif } return 0; }; |