[openwrt/openwrt] qualcommax: fix ECC strength of SPI-NAND flash on GL-iNet GL-B3000

LEDE Commits lede-commits at lists.infradead.org
Fri Apr 25 03:17:33 PDT 2025


robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/aa6d245e399112d5498344e6432ff197e7bb63df

commit aa6d245e399112d5498344e6432ff197e7bb63df
Author: INAGAKI Hiroshi <musashino.open at gmail.com>
AuthorDate: Fri Apr 25 19:00:42 2025 +0900

    qualcommax: fix ECC strength of SPI-NAND flash on GL-iNet GL-B3000
    
    Fix nand-ecc-strength property in the spi-nand node of GL-iNet GL-B3000
    to 4, to solve the following ECC error on that spi-nand chip.
    
    [    1.551618] ubi0: attaching mtd11
    [    1.552331] ubi0 warning: ubi_io_read: error -74 (ECC error) while reading 64 bytes from PEB 0:0, read only 64 bytes, retry
    [    1.554455] ubi0 warning: ubi_io_read: error -74 (ECC error) while reading 64 bytes from PEB 0:0, read only 64 bytes, retry
    [    1.565931] ubi0 warning: ubi_io_read: error -74 (ECC error) while reading 64 bytes from PEB 0:0, read only 64 bytes, retry
    [    1.576568] ubi0 error: ubi_io_read: error -74 (ECC error) while reading 64 bytes from PEB 0:0, read 64 bytes
    [    1.587146] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 6.6.87 #0
    [    1.597153] Hardware name: GL.iNet GL-B3000 (DT)
    [    1.602881] Call trace:
    [    1.607739]  dump_backtrace+0xa0/0xe0
    [    1.609910]  show_stack+0x18/0x24
    [    1.613728]  dump_stack_lvl+0x48/0x60
    [    1.617027]  dump_stack+0x18/0x24
    [    1.620672]  ubi_io_read+0x11c/0x32c
    [    1.623972]  ubi_io_read_ec_hdr+0x50/0x1f0
    [    1.627618]  ubi_attach+0x35c/0x133c
    [    1.631524]  ubi_attach_mtd_dev+0x494/0xaf4
    [    1.635257]  ubi_init_attach+0xac/0x2e4
    [    1.639163]  do_one_initcall+0x6c/0x1fc
    [    1.642983]  kernel_init_freeable+0x204/0x2e4
    [    1.646803]  kernel_init+0x28/0x1dc
    [    1.651316]  ret_from_fork+0x10/0x20
    
    The GL-B3000 has a Winbond W25N01GW and the spare size (oobsize) of it
    is 64. So the maximum available ECC strength with the qpic-snand driver
    is 4 but not 8.
    The "nand-ecc-strength" property was not used before the commit
    fc3ff2af0c ("qualcommax: allow overriding ECC strength for qpic-snand")
    and calculated from the registered spare size in the Linux Kernel. As a
    result, we had no issues on the GL-B3000 with the wrong ECC strength
    value.
    
    Fixes: 3307fe8ee4 ("qualcommax: ipq50xx: add support for GL.iNET GL-B3000")
    Signed-off-by: INAGAKI Hiroshi <musashino.open at gmail.com>
    Link: https://github.com/openwrt/openwrt/pull/18595
    Signed-off-by: Robert Marko <robimarko at gmail.com>
---
 .../qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-gl-b3000.dts      | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-gl-b3000.dts b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-gl-b3000.dts
index 013124dea0..684b6d95c5 100644
--- a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-gl-b3000.dts
+++ b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-gl-b3000.dts
@@ -226,7 +226,7 @@
 		#size-cells = <1>;
 
 		nand-ecc-engine = <&qpic_nand>;
-		nand-ecc-strength = <8>;
+		nand-ecc-strength = <4>;
 		nand-ecc-step-size = <512>;
 		nand-bus-width = <8>;
 




More information about the lede-commits mailing list