summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHan Xu <han.xu@nxp.com>2016-03-28 10:35:59 -0500
committerFrank Li <Frank.Li@nxp.com>2016-05-23 15:00:07 -0500
commit5102a01f1aee8b53faa874dd6f54e69d4b7dd624 (patch)
tree278204c7ab1c16b4da755d17dbf098dc1e7ab57c
parent30c1b15176df15ba53ef50f6dbf94f03b52c779b (diff)
MLK-12601: mtd: gpmi: provide the option to use legacy bch geometry
Provide an option in DT to use legacy bch geometry, which compatible with the 3.10 kernel bch setting. To enable the feature, adding "fsl,legacy-bch-geometry" under gpmi-nand node. NOTICE: The feature must be enabled/disabled in both u-boot and kernel. Conflicts: drivers/mtd/nand/gpmi-nand/gpmi-nand.h Signed-off-by: Han Xu <han.xu@nxp.com> (cherry picked from commit 4d28b1693905526558892d40525763e6bc4469e4)
-rw-r--r--drivers/mtd/nand/gpmi-nand/gpmi-nand.c8
-rw-r--r--drivers/mtd/nand/gpmi-nand/gpmi-nand.h2
2 files changed, 8 insertions, 2 deletions
diff --git a/drivers/mtd/nand/gpmi-nand/gpmi-nand.c b/drivers/mtd/nand/gpmi-nand/gpmi-nand.c
index c799a18eb3d6..cc91740dc277 100644
--- a/drivers/mtd/nand/gpmi-nand/gpmi-nand.c
+++ b/drivers/mtd/nand/gpmi-nand/gpmi-nand.c
@@ -559,8 +559,9 @@ int common_nfc_set_geometry(struct gpmi_nand_data *this)
return -EINVAL;
}
- if (!(chip->ecc_strength_ds > 0 && chip->ecc_step_ds > 0) &&
- !(mtd->oobsize > 1024))
+ if ((!(chip->ecc_strength_ds > 0 && chip->ecc_step_ds > 0) &&
+ (mtd->oobsize < 1024)) || this->legacy_bch_geometry)
+ dev_warn(this->dev, "use legacy bch geometry\n");
return legacy_set_geometry(this);
if (mtd->oobsize > 1024 || chip->ecc_step_ds < mtd->oobsize)
@@ -2263,6 +2264,9 @@ static int gpmi_nand_init(struct gpmi_nand_data *this)
if (of_get_nand_on_flash_bbt(this->dev->of_node)) {
chip->bbt_options |= NAND_BBT_USE_FLASH | NAND_BBT_NO_OOB;
+ if (of_property_read_bool(this->dev->of_node,
+ "fsl,legacy-bch-geometry"))
+ this->legacy_bch_geometry = true;
if (of_property_read_bool(this->dev->of_node,
"fsl,no-blockmark-swap"))
diff --git a/drivers/mtd/nand/gpmi-nand/gpmi-nand.h b/drivers/mtd/nand/gpmi-nand/gpmi-nand.h
index c3a51f1bb143..a92158ad29e8 100644
--- a/drivers/mtd/nand/gpmi-nand/gpmi-nand.h
+++ b/drivers/mtd/nand/gpmi-nand/gpmi-nand.h
@@ -197,6 +197,8 @@ struct gpmi_nand_data {
dma_addr_t auxiliary_phys;
void *raw_buffer;
+ /* legacy bch geometry flag */
+ bool legacy_bch_geometry;
/* DMA channels */
#define DMA_CHANS 8