[PATCH v2 2/2] ramips: use partition parser on Netgear CHJ/BZV

Mrkiko Rs mrkiko.rs at gmail.com
Thu Feb 25 22:02:16 EST 2021


Thank you for your work!!

What about R6220 ?
Thanks again!



> Il giorno 25 feb 2021, alle ore 21:24, Jan Hoffmann <jan at 3e8.eu> ha scritto:
> 
> This patch makes use of the Sercomm partition table parser on some
> Netgear routers. This applies to the boards CHJ (R6260, R6350, R6850,
> WAC124) and BZV (R6800, R6700-v2, R7200, Nighthawk AC2400).
> 
> On these models, each device has an individual partition table that
> takes into account bad blocks that existed during manufacturing. Thus
> the partition table needs to be parsed for the device to work correctly.
> A typical issue that occurs otherwise is degraded wireless performance,
> when the calibration data cannot be found at the expected offset.
> 
> Signed-off-by: Jan Hoffmann <jan at 3e8.eu>
> ---
> .../dts/mt7621_netgear_sercomm_bzv.dtsi       | 169 +++++++++++++++++-
> .../dts/mt7621_netgear_sercomm_chj.dtsi       | 169 +++++++++++++++++-
> target/linux/ramips/mt7621/config-5.4         |   1 +
> 3 files changed, 331 insertions(+), 8 deletions(-)
> 
> diff --git a/target/linux/ramips/dts/mt7621_netgear_sercomm_bzv.dtsi b/target/linux/ramips/dts/mt7621_netgear_sercomm_bzv.dtsi
> index 71c95e75bd..044f6e9696 100644
> --- a/target/linux/ramips/dts/mt7621_netgear_sercomm_bzv.dtsi
> +++ b/target/linux/ramips/dts/mt7621_netgear_sercomm_bzv.dtsi
> @@ -213,47 +213,208 @@
>    status = "okay";
> 
>    partitions {
> -        compatible = "fixed-partitions";
> +        compatible = "sercomm,sc-partitions", "fixed-partitions";
>        #address-cells = <1>;
>        #size-cells = <1>;
> 
>        partition at 0 {
>            label = "u-boot";
>            reg = <0x0 0x100000>;
> +            scpart-id = <0>;
>            read-only;
>        };
> 
>        partition at 100000 {
>            label = "SC PART_MAP";
>            reg = <0x100000 0x100000>;
> +            scpart-id = <1>;
>            read-only;
>        };
> 
>        partition at 200000 {
>            label = "kernel";
>            reg = <0x200000 0x400000>;
> +            scpart-id = <2>;
>        };
> 
>        partition at 600000 {
>            label = "ubi";
>            reg = <0x600000 0x2800000>;
> +            scpart-id = <3>;
>        };
> 
>        partition at 2e00000 {
> -            label = "reserved0";
> -            reg = <0x2e00000 0x1800000>;
> +            label = "English UI";
> +            reg = <0x2e00000 0x200000>;
> +            scpart-id = <4>;
> +            read-only;
> +        };
> +
> +        partition at 3000000 {
> +            label = "ML1";
> +            reg = <0x3000000 0x200000>;
> +            scpart-id = <5>;
> +            read-only;
> +        };
> +
> +        partition at 3200000 {
> +            label = "ML2";
> +            reg = <0x3200000 0x200000>;
> +            scpart-id = <6>;
> +            read-only;
> +        };
> +
> +        partition at 3400000 {
> +            label = "ML3";
> +            reg = <0x3400000 0x200000>;
> +            scpart-id = <7>;
> +            read-only;
> +        };
> +
> +        partition at 3600000 {
> +            label = "ML4";
> +            reg = <0x3600000 0x200000>;
> +            scpart-id = <8>;
> +            read-only;
> +        };
> +
> +        partition at 3800000 {
> +            label = "ML5";
> +            reg = <0x3800000 0x200000>;
> +            scpart-id = <9>;
> +            read-only;
> +        };
> +
> +        partition at 3a00000 {
> +            label = "ML6";
> +            reg = <0x3a00000 0x200000>;
> +            scpart-id = <10>;
> +            read-only;
> +        };
> +
> +        partition at 3c00000 {
> +            label = "ML7";
> +            reg = <0x3c00000 0x200000>;
> +            scpart-id = <11>;
> +            read-only;
> +        };
> +
> +        partition at 3e00000 {
> +            label = "ML8";
> +            reg = <0x3e00000 0x200000>;
> +            scpart-id = <12>;
> +            read-only;
> +        };
> +
> +        partition at 4000000 {
> +            label = "ML9";
> +            reg = <0x4000000 0x200000>;
> +            scpart-id = <13>;
> +            read-only;
> +        };
> +
> +        partition at 4200000 {
> +            label = "ML10";
> +            reg = <0x4200000 0x200000>;
> +            scpart-id = <14>;
> +            read-only;
> +        };
> +
> +        partition at 4400000 {
> +            label = "ML11";
> +            reg = <0x4400000 0x200000>;
> +            scpart-id = <15>;
>            read-only;
>        };
> 
>        factory: partition at 4600000 {
>            label = "factory";
>            reg = <0x4600000 0x200000>;
> +            scpart-id = <16>;
>            read-only;
>        };
> 
>        partition at 4800000 {
> +            label = "SC Private Data";
> +            reg = <0x4800000 0x200000>;
> +            scpart-id = <17>;
> +            read-only;
> +        };
> +
> +        partition at 4a00000 {
> +            label = "POT";
> +            reg = <0x4a00000 0x200000>;
> +            scpart-id = <18>;
> +            read-only;
> +        };
> +
> +        partition at 4c00000 {
> +            label = "Traffic Meter";
> +            reg = <0x4c00000 0x200000>;
> +            scpart-id = <19>;
> +            read-only;
> +        };
> +
> +        partition at 4e00000 {
> +            label = "SC PID";
> +            reg = <0x4e00000 0x200000>;
> +            scpart-id = <20>;
> +            read-only;
> +        };
> +
> +        partition at 5000000 {
> +            label = "SC Nvram";
> +            reg = <0x5000000 0x200000>;
> +            scpart-id = <21>;
> +            read-only;
> +        };
> +
> +        partition at 5200000 {
> +            label = "Ralink Nvram";
> +            reg = <0x5200000 0x200000>;
> +            scpart-id = <22>;
> +            read-only;
> +        };
> +
> +        partition at 5400000 {
> +            label = "reserved0";
> +            reg = <0x5400000 0x200000>;
> +            scpart-id = <23>;
> +            read-only;
> +        };
> +
> +        partition at 5600000 {
>            label = "reserved1";
> -            reg = <0x4800000 0x3800000>;
> +            reg = <0x5600000 0x200000>;
> +            scpart-id = <24>;
> +            read-only;
> +        };
> +
> +        partition at 5800000 {
> +            label = "reserved2";
> +            reg = <0x5800000 0x200000>;
> +            scpart-id = <25>;
> +            read-only;
> +        };
> +
> +        partition at 5a00000 {
> +            label = "reserved3";
> +            reg = <0x5a00000 0x200000>;
> +            scpart-id = <26>;
> +            read-only;
> +        };
> +
> +        partition at 5c00000 {
> +            label = "reserved4";
> +            reg = <0x5c00000 0x200000>;
> +            scpart-id = <27>;
> +            read-only;
> +        };
> +
> +        partition at 5e00000 {
> +            label = "reserved5";
> +            reg = <0x5e00000 0x2180000>;
> +            scpart-id = <28>;
>            read-only;
>        };
>    };
> diff --git a/target/linux/ramips/dts/mt7621_netgear_sercomm_chj.dtsi b/target/linux/ramips/dts/mt7621_netgear_sercomm_chj.dtsi
> index 7a15cd1f6c..90fed6ba87 100644
> --- a/target/linux/ramips/dts/mt7621_netgear_sercomm_chj.dtsi
> +++ b/target/linux/ramips/dts/mt7621_netgear_sercomm_chj.dtsi
> @@ -141,47 +141,208 @@
>    status = "okay";
> 
>    partitions {
> -        compatible = "fixed-partitions";
> +        compatible = "sercomm,sc-partitions", "fixed-partitions";
>        #address-cells = <1>;
>        #size-cells = <1>;
> 
>        partition at 0 {
>            label = "u-boot";
>            reg = <0x0 0x100000>;
> +            scpart-id = <0>;
>            read-only;
>        };
> 
>        partition at 100000 {
>            label = "SC PART_MAP";
>            reg = <0x100000 0x100000>;
> +            scpart-id = <1>;
>            read-only;
>        };
> 
>        partition at 200000 {
>            label = "kernel";
>            reg = <0x200000 0x400000>;
> +            scpart-id = <2>;
>        };
> 
>        partition at 600000 {
>            label = "ubi";
>            reg = <0x600000 0x2800000>;
> +            scpart-id = <3>;
>        };
> 
>        partition at 2e00000 {
> -            label = "reserved0";
> -            reg = <0x2e00000 0x1800000>;
> +            label = "English UI";
> +            reg = <0x2e00000 0x200000>;
> +            scpart-id = <4>;
> +            read-only;
> +        };
> +
> +        partition at 3000000 {
> +            label = "ML1";
> +            reg = <0x3000000 0x200000>;
> +            scpart-id = <5>;
> +            read-only;
> +        };
> +
> +        partition at 3200000 {
> +            label = "ML2";
> +            reg = <0x3200000 0x200000>;
> +            scpart-id = <6>;
> +            read-only;
> +        };
> +
> +        partition at 3400000 {
> +            label = "ML3";
> +            reg = <0x3400000 0x200000>;
> +            scpart-id = <7>;
> +            read-only;
> +        };
> +
> +        partition at 3600000 {
> +            label = "ML4";
> +            reg = <0x3600000 0x200000>;
> +            scpart-id = <8>;
> +            read-only;
> +        };
> +
> +        partition at 3800000 {
> +            label = "ML5";
> +            reg = <0x3800000 0x200000>;
> +            scpart-id = <9>;
> +            read-only;
> +        };
> +
> +        partition at 3a00000 {
> +            label = "ML6";
> +            reg = <0x3a00000 0x200000>;
> +            scpart-id = <10>;
> +            read-only;
> +        };
> +
> +        partition at 3c00000 {
> +            label = "ML7";
> +            reg = <0x3c00000 0x200000>;
> +            scpart-id = <11>;
> +            read-only;
> +        };
> +
> +        partition at 3e00000 {
> +            label = "ML8";
> +            reg = <0x3e00000 0x200000>;
> +            scpart-id = <12>;
> +            read-only;
> +        };
> +
> +        partition at 4000000 {
> +            label = "ML9";
> +            reg = <0x4000000 0x200000>;
> +            scpart-id = <13>;
> +            read-only;
> +        };
> +
> +        partition at 4200000 {
> +            label = "ML10";
> +            reg = <0x4200000 0x200000>;
> +            scpart-id = <14>;
> +            read-only;
> +        };
> +
> +        partition at 4400000 {
> +            label = "ML11";
> +            reg = <0x4400000 0x200000>;
> +            scpart-id = <15>;
>            read-only;
>        };
> 
>        factory: partition at 4600000 {
>            label = "factory";
>            reg = <0x4600000 0x200000>;
> +            scpart-id = <16>;
>            read-only;
>        };
> 
>        partition at 4800000 {
> +            label = "SC Private Data";
> +            reg = <0x4800000 0x200000>;
> +            scpart-id = <17>;
> +            read-only;
> +        };
> +
> +        partition at 4a00000 {
> +            label = "POT";
> +            reg = <0x4a00000 0x200000>;
> +            scpart-id = <18>;
> +            read-only;
> +        };
> +
> +        partition at 4c00000 {
> +            label = "Traffic Meter";
> +            reg = <0x4c00000 0x200000>;
> +            scpart-id = <19>;
> +            read-only;
> +        };
> +
> +        partition at 4e00000 {
> +            label = "SC PID";
> +            reg = <0x4e00000 0x200000>;
> +            scpart-id = <20>;
> +            read-only;
> +        };
> +
> +        partition at 5000000 {
> +            label = "SC Nvram";
> +            reg = <0x5000000 0x200000>;
> +            scpart-id = <21>;
> +            read-only;
> +        };
> +
> +        partition at 5200000 {
> +            label = "Ralink Nvram";
> +            reg = <0x5200000 0x200000>;
> +            scpart-id = <22>;
> +            read-only;
> +        };
> +
> +        partition at 5400000 {
> +            label = "reserved0";
> +            reg = <0x5400000 0x200000>;
> +            scpart-id = <23>;
> +            read-only;
> +        };
> +
> +        partition at 5600000 {
>            label = "reserved1";
> -            reg = <0x4800000 0x3800000>;
> +            reg = <0x5600000 0x200000>;
> +            scpart-id = <24>;
> +            read-only;
> +        };
> +
> +        partition at 5800000 {
> +            label = "reserved2";
> +            reg = <0x5800000 0x200000>;
> +            scpart-id = <25>;
> +            read-only;
> +        };
> +
> +        partition at 5a00000 {
> +            label = "reserved3";
> +            reg = <0x5a00000 0x200000>;
> +            scpart-id = <26>;
> +            read-only;
> +        };
> +
> +        partition at 5c00000 {
> +            label = "reserved4";
> +            reg = <0x5c00000 0x200000>;
> +            scpart-id = <27>;
> +            read-only;
> +        };
> +
> +        partition at 5e00000 {
> +            label = "reserved5";
> +            reg = <0x5e00000 0x2180000>;
> +            scpart-id = <28>;
>            read-only;
>        };
>    };
> diff --git a/target/linux/ramips/mt7621/config-5.4 b/target/linux/ramips/mt7621/config-5.4
> index fba22a39cf..19d8fd34a9 100644
> --- a/target/linux/ramips/mt7621/config-5.4
> +++ b/target/linux/ramips/mt7621/config-5.4
> @@ -155,6 +155,7 @@ CONFIG_MODULES_USE_ELF_REL=y
> CONFIG_MT7621_WDT=y
> # CONFIG_MTD_CFI_INTELEXT is not set
> CONFIG_MTD_CMDLINE_PARTS=y
> +CONFIG_MTD_SERCOMM_PARTS=y
> CONFIG_MTD_NAND_CORE=y
> CONFIG_MTD_NAND_ECC_SW_HAMMING=y
> CONFIG_MTD_NAND_MT7621=y
> -- 
> 2.29.2
> 
> 
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel at lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel



More information about the openwrt-devel mailing list