summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorEdoardo Scaglia <scaglia@amelchem.com>2021-02-23 12:22:53 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2021-02-24 09:50:55 +0100
commit34e491c2c6546470435d4f84fb88ead7c04f3682 (patch)
tree18fd6619b18ba74410618fe743d0a72e3020dabb /drivers
parent3cd74532d1ce8555a9995f1b286fe54bf0ebf1c2 (diff)
downloadbarebox-34e491c2c6546470435d4f84fb88ead7c04f3682.tar.gz
barebox-34e491c2c6546470435d4f84fb88ead7c04f3682.tar.xz
mtd: nand: fix hardware ECC support in atmel_nand driver
When using a NAND memory with hardware ECC enabled on a Atmel SoC probing fails during barebox boot with following error: nand_base: device found, Manufacturer ID: 0x2c, Chip ID: 0xdc nand_base: Micron MT29F4G08ABAEAWP nand_base: 512 MiB, SLC, erase size: 256 KiB, page size: 4096, OOB size: 224 WARNING: at drivers/mtd/nand/nand_base.c:5594/nand_scan_tail()! WARNING: No oob scheme defined for oobsize 224 atmel_nand atmel_nand0: probe failed: No such device or address The problem arises from commit b6bcd96de5a75bdc5d06a06f2efffc2d89e346ec which among several changes dropped CONFIG_NAND_ECC_HW symbol, however two references remained in atmel_nand driver causing the failure of NAND probing when hardware ECC is configured in a Atmel SoC. Fixes: b6bcd96de5 ("mtd: nand: Update to Linux-5.9") Signed-off-by: Edoardo Scaglia <scaglia@amelchem.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/mtd/nand/atmel_nand.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/drivers/mtd/nand/atmel_nand.c b/drivers/mtd/nand/atmel_nand.c
index db13f5b7e4..58d53b7a78 100644
--- a/drivers/mtd/nand/atmel_nand.c
+++ b/drivers/mtd/nand/atmel_nand.c
@@ -1351,8 +1351,7 @@ static int __init atmel_nand_probe(struct device_d *dev)
nand_chip->ecc.strength = pdata->ecc_strength ? : 1;
nand_chip->ecc.size = 1 << pdata->ecc_size_shift ? : 512;
- if (IS_ENABLED(CONFIG_NAND_ECC_HW) &&
- pdata->ecc_mode == NAND_ECC_HW) {
+ if (pdata->ecc_mode == NAND_ECC_HW) {
nand_chip->ecc.mode = NAND_ECC_HW;
}
@@ -1411,8 +1410,7 @@ static int __init atmel_nand_probe(struct device_d *dev)
host->ecc_code = xmalloc(mtd->oobsize);
- if (IS_ENABLED(CONFIG_NAND_ECC_HW) &&
- nand_chip->ecc.mode == NAND_ECC_HW) {
+ if (nand_chip->ecc.mode == NAND_ECC_HW) {
if (IS_ENABLED(CONFIG_NAND_ATMEL_PMECC) && pdata->has_pmecc)
res = atmel_pmecc_nand_init_params(dev, host);
else