mtd: nand: sunxi: Fix ECC strength choice
PATCH 1/1 mtd: nand: sunxi: Fix ECC strength choice
When the requested ECC strength does not exactly match the strengths supported by the ECC engine, the driver is selecting the closest strength meeting the 'selected_strength > requested_strength' constraint. Fix the fact that, in this particular case, ecc->strength value was not updated to match the 'selected_strength'.
For instance, one can encounter this issue when no ECC requirement is filled in the device tree while the NAND chip minimum requirement is not a strength/step_size combo natively supported by the ECC engine.
--- drivers/mtd/nand/sunxi_nand.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-)
drivers/mtd/nand/sunxi_nand.c +7 -1
@@ -1853,8 +1853,14 @@ static int sunxi_nand_hw_common_ecc_ctrl_init(struct mtd_info *mtd,/* Add ECC info retrieval from DT */ for (i =0 ; i <ARRAY_SIZE (strengths); i++) { -if (ecc->strength <= strengths[i]) +if (ecc->strength <= strengths[i]) { +/* +* Update ecc->strength value with the actual strength +* that will be used by the ECC engine. +*/ + ecc->strength = strengths[i];break ; + } }if (i >=ARRAY_SIZE (strengths)) {
Signature · 1 line
2.11.0
PATCH 1/1 mtd: nand: sunxi: Fix ECC strength choice
Hello,
Quoted 10 lines · On Wed, 24 Jan 2018 23:49:31 +0100 Miquel Raynal…
When the requested ECC strength does not exactly match the strengths supported by the ECC engine, the driver is selecting the closest strength meeting the '
selected_strength>requested_strength' constraint. Fix the fact that, in this particular case,ecc->strengthvalue was not updated to match the 'selected_strength'.For instance, one can encounter this issue when no ECC requirement is filled in the device tree while the NAND chip minimum requirement is not a strength/step_size combo natively supported by the ECC engine.
I forgot to add the Fixes/CC tags, but it seems that this problem has always been out there...
support")
CC: stable at vger.kernel.org
Quoted 2 lines
Suggested-by Boris Brezillon <[email protected]>Signed-off-by Miquel Raynal <[email protected]>
I will wait a review before sending a v2.
Thanks,
Miqu?l
PATCH 1/1 mtd: nand: sunxi: Fix ECC strength choice
Quoted 16 lines · On Wed, 24 Jan 2018 23:59:36 +0100 Miquel Raynal…
Hello,
Quoted 10 lines · On Wed, 24 Jan 2018 23:49:31 +0100 Miquel Raynal…
When the requested ECC strength does not exactly match the strengths supported by the ECC engine, the driver is selecting the closest strength meeting the '
selected_strength>requested_strength' constraint. Fix the fact that, in this particular case,ecc->strengthvalue was not updated to match the 'selected_strength'.For instance, one can encounter this issue when no ECC requirement is filled in the device tree while the NAND chip minimum requirement is not a strength/step_size combo natively supported by the ECC engine.
Quoted 6 lines
I forgot to add the Fixes/CC tags, but it seems that this problem has always been out there...
Fixes 1fef62c1423b ("mtd: nand: add sunxi NAND flash controllersupport")
CC: stable at vger.kernel.org
No need to send a new version. I added the Fixes+stable tags when applying.
Thanks,
Boris
Quoted 8 lines
Quoted 3 lines
Suggested-by Boris Brezillon <[email protected]>Signed-off-by Miquel Raynal <[email protected]>I will wait a review before sending a v2.
Thanks,
Miqu?l