[openwrt/openwrt] ath79: ar934x-nand: fix broken nand on kernel 5.10

LEDE Commits lede-commits at lists.infradead.org
Tue Apr 6 16:00:33 BST 2021


xback pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/f4f4259ca17e61a2bb14b9453e050451478f546a

commit f4f4259ca17e61a2bb14b9453e050451478f546a
Author: Koen Vandeputte <koen.vandeputte at citymesh.com>
AuthorDate: Tue Apr 6 12:16:10 2021 +0200

    ath79: ar934x-nand: fix broken nand on kernel 5.10
    
    Booting current 5.10.x testing kernel shows this:
    
    [    0.335781] nand: device found, Manufacturer ID: 0xec, Chip ID: 0xf1
    [    0.342280] nand: Samsung NAND 128MiB 3,3V 8-bit
    [    0.346982] nand: 128 MiB, SLC, erase size: 128 KiB, page size: 2048,
    OOB size: 64
    [    0.354703] ar934x-nand 1b800200.nand: unknown ECC mode 2
    [    0.360193] ar934x-nand 1b800200.nand: nand_scan failed, err:-22
    [    0.366341] ar934x-nand: probe of 1b800200.nand failed with error -22
    
    ...
    
    [    1.089264] /dev/root: Can't open blockdev
    [    1.093482] VFS: Cannot open root device "(null)" or
    unknown-block(0,0): error -6
    [    1.101077] Please append a correct "root=" boot option; here are the
    available partitions:
    [    1.109555] 1f00              64 mtdblock0
    [    1.109559]  (driver?)
    [    1.116199] 1f01              48 mtdblock1
    [    1.116202]  (driver?)
    [    1.122841] 1f02               4 mtdblock2
    [    1.122844]  (driver?)
    [    1.129493] 1f03               4 mtdblock3
    [    1.129497]  (driver?)
    [    1.136138] 1f04               4 mtdblock4
    [    1.136142]  (driver?)
    [    1.142787] Kernel panic - not syncing: VFS: Unable to mount root fs
    on unknown-block(0,0)
    [    1.151168] Rebooting in 1 seconds..
    
    The issue is caused by a wrong check for ECC engine type
    on newer kernels.
    
    Fix this.
    
    Bootlog after:
    
    [    0.335689] nand: device found, Manufacturer ID: 0xec, Chip ID: 0xf1
    [    0.342192] nand: Samsung NAND 128MiB 3,3V 8-bit
    [    0.346884] nand: 128 MiB, SLC, erase size: 128 KiB, page size: 2048,
    OOB size: 64
    [    0.354611] Scanning device for bad blocks
    [    0.364924] random: fast init done
    [    0.496641] 3 fixed-partitions partitions found on MTD device
    ar934x-nand
    [    0.503545] Creating 3 MTD partitions on "ar934x-nand":
    [    0.508865] 0x000000000000-0x000000040000 : "booter"
    [    0.515133] 0x000000040000-0x000000400000 : "kernel"
    [    0.523265] 0x000000400000-0x000008000000 : "ubi"
    
    Fixes: fb64e2c30f ("ath79: ar934x-nand: add kernel 5.10 compatibility")
    Signed-off-by: Koen Vandeputte <koen.vandeputte at citymesh.com>
---
 target/linux/ath79/files/drivers/mtd/nand/raw/ar934x_nand.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/target/linux/ath79/files/drivers/mtd/nand/raw/ar934x_nand.c b/target/linux/ath79/files/drivers/mtd/nand/raw/ar934x_nand.c
index 207bcd59ac..ddc6d6d882 100644
--- a/target/linux/ath79/files/drivers/mtd/nand/raw/ar934x_nand.c
+++ b/target/linux/ath79/files/drivers/mtd/nand/raw/ar934x_nand.c
@@ -1341,7 +1341,7 @@ static int ar934x_nfc_attach_chip(struct nand_chip *nand)
 		if (ret)
 			return ret;
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(5,9,0)
-	} else if (nand->ecc.engine_type == NAND_ECC_ENGINE_TYPE_SOFT) {
+	} else if (nand->ecc.engine_type != NAND_ECC_ENGINE_TYPE_SOFT) {
 		dev_err(dev, "unknown ECC mode %d\n", nand->ecc.engine_type);
 #else
 	} else if (nand->ecc.mode != NAND_ECC_SOFT) {



More information about the lede-commits mailing list