diff options
13 files changed, 50 insertions, 7 deletions
diff --git a/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/ar9_bt_homehub-v3a.dts b/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/ar9_bt_homehub-v3a.dts index 61a39f9955..71b32b62f5 100644 --- a/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/ar9_bt_homehub-v3a.dts +++ b/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/ar9_bt_homehub-v3a.dts @@ -130,6 +130,8 @@ pinctrl-0 = <&nand_pins>, <&nand_cs1_pins>; pinctrl-names = "default"; + nand-use-soft-ecc-engine; + partitions { compatible = "fixed-partitions"; #address-cells = <1>; diff --git a/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/danube_bt_homehub-v2b.dts b/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/danube_bt_homehub-v2b.dts index 0147b3ffd1..85536b0082 100644 --- a/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/danube_bt_homehub-v2b.dts +++ b/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/danube_bt_homehub-v2b.dts @@ -183,6 +183,8 @@ pinctrl-0 = <&nand_pins>, <&nand_cs1_pins>; pinctrl-names = "default"; + nand-use-soft-ecc-engine; + partitions { compatible = "fixed-partitions"; #address-cells = <1>; diff --git a/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_avm_fritz3370-rev2-hynix.dts b/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_avm_fritz3370-rev2-hynix.dts index e1d0851dab..d1bbd0532a 100644 --- a/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_avm_fritz3370-rev2-hynix.dts +++ b/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_avm_fritz3370-rev2-hynix.dts @@ -14,7 +14,7 @@ pinctrl-0 = <&nand_pins>, <&nand_cs1_pins>; pinctrl-names = "default"; - nand-ecc-mode = "soft"; + nand-use-soft-ecc-engine; nand-ecc-strength = <3>; nand-ecc-step-size = <256>; diff --git a/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_avm_fritz3370-rev2-micron.dts b/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_avm_fritz3370-rev2-micron.dts index 2a98a12acb..16cf76cef3 100644 --- a/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_avm_fritz3370-rev2-micron.dts +++ b/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_avm_fritz3370-rev2-micron.dts @@ -6,7 +6,7 @@ }; &localbus { - flash@1 { + flash1: flash@1 { compatible = "lantiq,nand-xway"; bank-width = <2>; reg = <1 0x0 0x2000000>; @@ -14,7 +14,7 @@ pinctrl-0 = <&nand_pins>, <&nand_cs1_pins>; pinctrl-names = "default"; - nand-ecc-mode = "on-die"; + nand-ecc-engine = <&flash1>; partitions { compatible = "fixed-partitions"; diff --git a/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_avm_fritz3390.dts b/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_avm_fritz3390.dts index c4b92f9f91..17be2729f9 100644 --- a/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_avm_fritz3390.dts +++ b/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_avm_fritz3390.dts @@ -231,7 +231,7 @@ }; &localbus { - flash@1 { + flash1: flash@1 { compatible = "lantiq,nand-xway"; bank-width = <1>; reg = <1 0x0 0x2000000>; @@ -239,7 +239,7 @@ pinctrl-0 = <&nand_pins>; pinctrl-names = "default"; - nand-ecc-mode = "on-die"; + nand-ecc-engine = <&flash1>; partitions { compatible = "fixed-partitions"; diff --git a/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_avm_fritz7362sl.dts b/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_avm_fritz7362sl.dts index b1423e5dea..4d86bf5542 100644 --- a/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_avm_fritz7362sl.dts +++ b/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_avm_fritz7362sl.dts @@ -46,7 +46,7 @@ }; &localbus { - flash@1 { + flash1: flash@1 { compatible = "lantiq,nand-xway"; lantiq,cs1 = <1>; bank-width = <1>; @@ -55,7 +55,7 @@ pinctrl-0 = <&nand_pins>, <&nand_cs1_pins>; pinctrl-names = "default"; - nand-ecc-mode = "on-die"; + nand-ecc-engine = <&flash1>; partitions { compatible = "fixed-partitions"; diff --git a/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_avm_fritz7412.dts b/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_avm_fritz7412.dts index a9d20915ea..11f318db5d 100644 --- a/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_avm_fritz7412.dts +++ b/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_avm_fritz7412.dts @@ -91,6 +91,8 @@ pinctrl-0 = <&nand_pins>, <&nand_cs1_pins>; pinctrl-names = "default"; + nand-use-soft-ecc-engine; + partitions { compatible = "fixed-partitions"; #address-cells = <1>; diff --git a/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_avm_fritz7430.dts b/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_avm_fritz7430.dts index 3be20e1ff0..7bc64b76e7 100644 --- a/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_avm_fritz7430.dts +++ b/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_avm_fritz7430.dts @@ -103,6 +103,8 @@ pinctrl-0 = <&nand_pins>, <&nand_cs1_pins>; pinctrl-names = "default"; + nand-use-soft-ecc-engine; + partitions { compatible = "fixed-partitions"; #address-cells = <1>; diff --git a/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_bt_homehub-v5a.dts b/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_bt_homehub-v5a.dts index e24ee787f1..76cf69335b 100644 --- a/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_bt_homehub-v5a.dts +++ b/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_bt_homehub-v5a.dts @@ -216,6 +216,7 @@ nand-on-flash-bbt; nand-ecc-strength = <3>; nand-ecc-step-size = <256>; + nand-use-soft-ecc-engine; partitions { compatible = "fixed-partitions"; diff --git a/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_lantiq_easy80920-nand.dts b/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_lantiq_easy80920-nand.dts index 475d5a59d7..82f72022c9 100644 --- a/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_lantiq_easy80920-nand.dts +++ b/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_lantiq_easy80920-nand.dts @@ -19,6 +19,8 @@ pinctrl-0 = <&nand_pins>; pinctrl-names = "default"; + nand-use-soft-ecc-engine; + partitions { compatible = "fixed-partitions"; #address-cells = <1>; diff --git a/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_zyxel_p-2812hnu-f1.dts b/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_zyxel_p-2812hnu-f1.dts index 0e029d1995..4a7f63b177 100644 --- a/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_zyxel_p-2812hnu-f1.dts +++ b/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_zyxel_p-2812hnu-f1.dts @@ -30,6 +30,8 @@ pinctrl-0 = <&nand_pins>, <&nand_cs1_pins>; pinctrl-names = "default"; + nand-use-soft-ecc-engine; + partitions { compatible = "fixed-partitions"; #address-cells = <1>; diff --git a/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_zyxel_p-2812hnu-f3.dts b/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_zyxel_p-2812hnu-f3.dts index 12280241a5..376cdaeb61 100644 --- a/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_zyxel_p-2812hnu-f3.dts +++ b/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_zyxel_p-2812hnu-f3.dts @@ -51,6 +51,8 @@ #address-cells = <1>; #size-cells = <1>; + nand-use-soft-ecc-engine; + partition@0 { label = "kernel"; reg = <0x0 0x200000>; diff --git a/target/linux/lantiq/patches-5.4/0019-MTD-nand-support-new-dt-bindings.patch b/target/linux/lantiq/patches-5.4/0019-MTD-nand-support-new-dt-bindings.patch new file mode 100644 index 0000000000..b4aa5b9093 --- /dev/null +++ b/target/linux/lantiq/patches-5.4/0019-MTD-nand-support-new-dt-bindings.patch @@ -0,0 +1,28 @@ +The nand-ecc-mode DT binding is depracated but the new bindings are +not supported by kernel 5.4. Based on a fix in the kernel to not +overwrite the DT ECC settings, the DT needs to be updated and moves +to the new DT binding. +Since the DT is shared between kernel 5.4 and 5.10, this patch is +an interim solution to allow to use the new DT bindings in kernel 5.4. +It should be removed when moving away from kernel 5.4. +--- a/drivers/mtd/nand/raw/nand_base.c ++++ b/drivers/mtd/nand/raw/nand_base.c +@@ -4851,10 +4851,17 @@ static int of_get_nand_ecc_mode(struct d + { + const char *pm; + int err, i; ++ struct device_node *eng_np; + + err = of_property_read_string(np, "nand-ecc-mode", &pm); +- if (err < 0) ++ if (err < 0) { ++ if (of_property_read_bool(np, "nand-use-soft-ecc-engine")) ++ return NAND_ECC_SOFT; ++ eng_np = of_parse_phandle(np, "nand-ecc-engine", 0); ++ if (eng_np && (eng_np == np)) ++ return NAND_ECC_ON_DIE; + return err; ++ } + + for (i = 0; i < ARRAY_SIZE(nand_ecc_modes); i++) + if (!strcasecmp(pm, nand_ecc_modes[i])) |