Patch "mtd: nand: ifc: Fix location of eccstat registers for IFC V1.0" has been added to the 4.10-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
mtd: nand: ifc: Fix location of eccstat registers for IFC V1.0
to the 4.10-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
mtd-nand-ifc-fix-location-of-eccstat-registers-for-ifc-v1.0.patch
and it can be found in the queue-4.10 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
656441478ed55d960df5f3ccdf5a0f8c61dfd0b3Mon Sep 17 00:00:00 2001
From: Mark Marshall <[email protected]>
Date: Thu, 26 Jan 2017 16:18:27 +0100
Subject: mtd: nand: ifc: Fix location of eccstat registers for IFC V1.0
From: Mark Marshall <[email protected]>
commit 656441478ed55d960df5f3ccdf5a0f8c61dfd0b3 upstream.
The commit 7a654172161c ("mtd/ifc: Add support for IFC controller version 2.0") added support for version 2.0 of the IFC controller. The version 2.0 controller has the ECC status registers at a different location to the previous versions.
Correct the fsl_ifc_nand structure so that the ECC status can be read from the correct location for both version 1.0 and 2.0 of the controller.
--- drivers/mtd/nand/fsl_ifc_nand.c | 8 +++++++- include/linux/fsl_ifc.h | 8 ++++++-- 2 files changed, 13 insertions(+), 3 deletions(-)
drivers/mtd/nand/fsl_ifc_nand.c +7 -1
@@ -258,9 +258,15 @@ static void fsl_ifc_run_command(struct mint bufnum = nctrl->page & priv->bufnum_mask;int sector = bufnum * chip->ecc.steps;int sector_end = sector + chip->ecc.steps -1 ; +__be32 *eccstat_regs; + +if (ctrl->version >=FSL_IFC_VERSION_2_0_0 ) + eccstat_regs = ifc->ifc_nand.v2_nand_eccstat; +else + eccstat_regs = ifc->ifc_nand.v1_nand_eccstat;for (i = sector /4 ; i <= sector_end /4 ; i++) - eccstat[i] =ifc_in32 (&ifc->ifc_nand.nand_eccstat[i]); + eccstat[i] =ifc_in32 (&eccstat_regs[i]);for (i = sector; i <= sector_end; i++) { errors =check_read_ecc (mtd, ctrl, eccstat, i);
include/linux/fsl_ifc.h +6 -2
@@ -733,8 +733,12 @@ struct fsl_ifc_nand {__be32 nand_erattr1;u32 res19[0x10 ];__be32 nand_fsr; -u32 res20[0x3 ]; -__be32 nand_eccstat[6 ]; +u32 res20; +/* The V1 nand_eccstat is actually 4 words that overlaps the +* V2 nand_eccstat. +*/ +__be32 v1_nand_eccstat[2 ]; +__be32 v2_nand_eccstat[6 ];u32 res21[0x1c ];__be32 nanndcr;u32 res22[0x2 ];
Patches currently in stable-queue which might be from [email protected] are
queue-4.10/mtd-nand-ifc-fix-location-of-eccstat-registers-for-ifc-v1.0.patch