summaryrefslogtreecommitdiff
path: root/drivers/mtd/nand
diff options
context:
space:
mode:
authorHan Xu <han.xu@nxp.com>2016-03-28 10:35:59 -0500
committerOctavian Purdila <octavian.purdila@nxp.com>2017-02-23 15:21:25 +0200
commita8f5e6697191558c71d8d67b62d5010fed0411cf (patch)
tree09c17077f2e558e216e073583e36bd44811351a2 /drivers/mtd/nand
parenta70da5ee382055894a5fb55b907356f114dfb5ca (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)
Diffstat (limited to 'drivers/mtd/nand')
-rw-r--r--drivers/mtd/nand/gpmi-nand/gpmi-nand.c9
-rw-r--r--drivers/mtd/nand/gpmi-nand/gpmi-nand.h2
2 files changed, 9 insertions, 2 deletions
diff --git a/drivers/mtd/nand/gpmi-nand/gpmi-nand.c b/drivers/mtd/nand/gpmi-nand/gpmi-nand.c
index 37a5cb87bea8..d3a77f1f719e 100644
--- a/drivers/mtd/nand/gpmi-nand/gpmi-nand.c
+++ b/drivers/mtd/nand/gpmi-nand/gpmi-nand.c
@@ -584,8 +584,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)
@@ -2317,6 +2318,10 @@ static int gpmi_nand_init(struct gpmi_nand_data *this)
if (of_property_read_bool(this->dev->of_node,
"fsl,no-blockmark-swap"))
this->swap_block_mark = false;
+
+ if (of_property_read_bool(this->dev->of_node,
+ "fsl,legacy-bch-geometry"))
+ this->legacy_bch_geometry = true;
}
dev_dbg(this->dev, "Blockmark swapping %sabled\n",
this->swap_block_mark ? "en" : "dis");
diff --git a/drivers/mtd/nand/gpmi-nand/gpmi-nand.h b/drivers/mtd/nand/gpmi-nand/gpmi-nand.h
index dd9b6fa625d0..816097aa77f3 100644
--- a/drivers/mtd/nand/gpmi-nand/gpmi-nand.h
+++ b/drivers/mtd/nand/gpmi-nand/gpmi-nand.h
@@ -196,6 +196,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