Commit 6b00c351 authored by Jagdish Gediya's avatar Jagdish Gediya Committed by Boris Brezillon

mtd: nand: fsl_ifc: Read ECCSTAT0 and ECCSTAT1 registers for IFC 2.0

Due to missing information in Hardware manual, current
implementation doesn't read ECCSTAT0 and ECCSTAT1 registers
for IFC 2.0.

Add support to read ECCSTAT0 and ECCSTAT1 registers during
ecccheck for IFC 2.0.

Fixes: 65644147 ("mtd: nand: ifc: Fix location of eccstat registers for IFC V1.0")
Cc: stable@vger.kernel.org # v3.18+
Signed-off-by: default avatarJagdish Gediya <jagdish.gediya@nxp.com>
Reviewed-by: default avatarPrabhakar Kushwaha <prabhakar.kushwaha@nxp.com>
Signed-off-by: default avatarBoris Brezillon <boris.brezillon@bootlin.com>
parent 843c3a59
...@@ -227,11 +227,7 @@ static void fsl_ifc_run_command(struct mtd_info *mtd) ...@@ -227,11 +227,7 @@ static void fsl_ifc_run_command(struct mtd_info *mtd)
int sector_end = sector_start + chip->ecc.steps - 1; int sector_end = sector_start + chip->ecc.steps - 1;
__be32 *eccstat_regs; __be32 *eccstat_regs;
if (ctrl->version >= FSL_IFC_VERSION_2_0_0) eccstat_regs = ifc->ifc_nand.nand_eccstat;
eccstat_regs = ifc->ifc_nand.v2_nand_eccstat;
else
eccstat_regs = ifc->ifc_nand.v1_nand_eccstat;
eccstat = ifc_in32(&eccstat_regs[sector_start / 4]); eccstat = ifc_in32(&eccstat_regs[sector_start / 4]);
for (i = sector_start; i <= sector_end; i++) { for (i = sector_start; i <= sector_end; i++) {
......
...@@ -734,11 +734,7 @@ struct fsl_ifc_nand { ...@@ -734,11 +734,7 @@ struct fsl_ifc_nand {
u32 res19[0x10]; u32 res19[0x10];
__be32 nand_fsr; __be32 nand_fsr;
u32 res20; u32 res20;
/* The V1 nand_eccstat is actually 4 words that overlaps the __be32 nand_eccstat[8];
* V2 nand_eccstat.
*/
__be32 v1_nand_eccstat[2];
__be32 v2_nand_eccstat[6];
u32 res21[0x1c]; u32 res21[0x1c];
__be32 nanndcr; __be32 nanndcr;
u32 res22[0x2]; u32 res22[0x2];
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment