mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-25 09:50:55 +07:00
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.
Fixes: 1fef62c142
("mtd: nand: add sunxi NAND flash controller support")
Cc: <stable@vger.kernel.org>
Suggested-by: Boris Brezillon <boris.brezillon@free-electrons.com>
Signed-off-by: Miquel Raynal <miquel.raynal@free-electrons.com>
Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
This commit is contained in:
parent
4c7e95b1b3
commit
f4c6cd1a7f
@ -1858,9 +1858,15 @@ static int sunxi_nand_hw_common_ecc_ctrl_init(struct mtd_info *mtd,
|
|||||||
|
|
||||||
/* Add ECC info retrieval from DT */
|
/* Add ECC info retrieval from DT */
|
||||||
for (i = 0; i < ARRAY_SIZE(strengths); i++) {
|
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;
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (i >= ARRAY_SIZE(strengths)) {
|
if (i >= ARRAY_SIZE(strengths)) {
|
||||||
dev_err(nfc->dev, "unsupported strength\n");
|
dev_err(nfc->dev, "unsupported strength\n");
|
||||||
|
Loading…
Reference in New Issue
Block a user