[openwrt/openwrt] ramips: use on-flash partition table for Sercomm BZV/CHJ

LEDE Commits lede-commits at lists.infradead.org
Fri Feb 3 05:18:01 PST 2023


hauke pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/c46584ab302f0dd9b472aef77c2af163f9719379

commit c46584ab302f0dd9b472aef77c2af163f9719379
Author: Jan Hoffmann <jan at 3e8.eu>
AuthorDate: Sat Jan 28 00:01:18 2023 +0100

    ramips: use on-flash partition table for Sercomm BZV/CHJ
    
    These devices have a partition table stored in flash, which compensates
    for any pre-existing bad blocks by enlarging the respective partition.
    This means that the current static partition table is only correct for
    devices without any bad blocks.
    
    Typical results of this mismatch are degraded wireless performance and
    wrong MAC addresses, when the factory partition is shifted due to a bad
    block somewhere before it. If there is a bad block already before the
    ubi partition, then OpenWrt may not run at all because the kernel can't
    find the rootfs.
    
    Use the on-flash partition table to fix these issues. Replace the two
    reserved partitions by the full partition list, as the driver does not
    allow merging them.
    
    Signed-off-by: Jan Hoffmann <jan at 3e8.eu>
---
 .../ramips/dts/mt7621_netgear_sercomm_bzv.dtsi     | 169 ++++++++++++++++++++-
 .../ramips/dts/mt7621_netgear_sercomm_chj.dtsi     | 169 ++++++++++++++++++++-
 2 files changed, 330 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 9fa4af8fd6..ab96b8fdd1 100644
--- a/target/linux/ramips/dts/mt7621_netgear_sercomm_bzv.dtsi
+++ b/target/linux/ramips/dts/mt7621_netgear_sercomm_bzv.dtsi
@@ -223,47 +223,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>;
+			sercomm,scpart-id = <0>;
 			read-only;
 		};
 
 		partition at 100000 {
 			label = "SC PART_MAP";
 			reg = <0x100000 0x100000>;
+			sercomm,scpart-id = <1>;
 			read-only;
 		};
 
 		partition at 200000 {
 			label = "kernel";
 			reg = <0x200000 0x400000>;
+			sercomm,scpart-id = <2>;
 		};
 
 		partition at 600000 {
 			label = "ubi";
 			reg = <0x600000 0x2800000>;
+			sercomm,scpart-id = <3>;
 		};
 
 		partition at 2e00000 {
-			label = "reserved0";
-			reg = <0x2e00000 0x1800000>;
+			label = "English UI";
+			reg = <0x2e00000 0x200000>;
+			sercomm,scpart-id = <4>;
+			read-only;
+		};
+
+		partition at 3000000 {
+			label = "ML1";
+			reg = <0x3000000 0x200000>;
+			sercomm,scpart-id = <5>;
+			read-only;
+		};
+
+		partition at 3200000 {
+			label = "ML2";
+			reg = <0x3200000 0x200000>;
+			sercomm,scpart-id = <6>;
+			read-only;
+		};
+
+		partition at 3400000 {
+			label = "ML3";
+			reg = <0x3400000 0x200000>;
+			sercomm,scpart-id = <7>;
+			read-only;
+		};
+
+		partition at 3600000 {
+			label = "ML4";
+			reg = <0x3600000 0x200000>;
+			sercomm,scpart-id = <8>;
+			read-only;
+		};
+
+		partition at 3800000 {
+			label = "ML5";
+			reg = <0x3800000 0x200000>;
+			sercomm,scpart-id = <9>;
+			read-only;
+		};
+
+		partition at 3a00000 {
+			label = "ML6";
+			reg = <0x3a00000 0x200000>;
+			sercomm,scpart-id = <10>;
+			read-only;
+		};
+
+		partition at 3c00000 {
+			label = "ML7";
+			reg = <0x3c00000 0x200000>;
+			sercomm,scpart-id = <11>;
+			read-only;
+		};
+
+		partition at 3e00000 {
+			label = "ML8";
+			reg = <0x3e00000 0x200000>;
+			sercomm,scpart-id = <12>;
+			read-only;
+		};
+
+		partition at 4000000 {
+			label = "ML9";
+			reg = <0x4000000 0x200000>;
+			sercomm,scpart-id = <13>;
+			read-only;
+		};
+
+		partition at 4200000 {
+			label = "ML10";
+			reg = <0x4200000 0x200000>;
+			sercomm,scpart-id = <14>;
+			read-only;
+		};
+
+		partition at 4400000 {
+			label = "ML11";
+			reg = <0x4400000 0x200000>;
+			sercomm,scpart-id = <15>;
 			read-only;
 		};
 
 		factory: partition at 4600000 {
 			label = "factory";
 			reg = <0x4600000 0x200000>;
+			sercomm,scpart-id = <16>;
 			read-only;
 		};
 
 		partition at 4800000 {
+			label = "SC Private Data";
+			reg = <0x4800000 0x200000>;
+			sercomm,scpart-id = <17>;
+			read-only;
+		};
+
+		partition at 4a00000 {
+			label = "POT";
+			reg = <0x4a00000 0x200000>;
+			sercomm,scpart-id = <18>;
+			read-only;
+		};
+
+		partition at 4c00000 {
+			label = "Traffic Meter";
+			reg = <0x4c00000 0x200000>;
+			sercomm,scpart-id = <19>;
+			read-only;
+		};
+
+		partition at 4e00000 {
+			label = "SC PID";
+			reg = <0x4e00000 0x200000>;
+			sercomm,scpart-id = <20>;
+			read-only;
+		};
+
+		partition at 5000000 {
+			label = "SC Nvram";
+			reg = <0x5000000 0x200000>;
+			sercomm,scpart-id = <21>;
+			read-only;
+		};
+
+		partition at 5200000 {
+			label = "Ralink Nvram";
+			reg = <0x5200000 0x200000>;
+			sercomm,scpart-id = <22>;
+			read-only;
+		};
+
+		partition at 5400000 {
+			label = "reserved0";
+			reg = <0x5400000 0x200000>;
+			sercomm,scpart-id = <23>;
+			read-only;
+		};
+
+		partition at 5600000 {
 			label = "reserved1";
-			reg = <0x4800000 0x3800000>;
+			reg = <0x5600000 0x200000>;
+			sercomm,scpart-id = <24>;
+			read-only;
+		};
+
+		partition at 5800000 {
+			label = "reserved2";
+			reg = <0x5800000 0x200000>;
+			sercomm,scpart-id = <25>;
+			read-only;
+		};
+
+		partition at 5a00000 {
+			label = "reserved3";
+			reg = <0x5a00000 0x200000>;
+			sercomm,scpart-id = <26>;
+			read-only;
+		};
+
+		partition at 5c00000 {
+			label = "reserved4";
+			reg = <0x5c00000 0x200000>;
+			sercomm,scpart-id = <27>;
+			read-only;
+		};
+
+		partition at 5e00000 {
+			label = "reserved5";
+			reg = <0x5e00000 0x2180000>;
+			sercomm,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 eaf12a891e..cd9582e541 100644
--- a/target/linux/ramips/dts/mt7621_netgear_sercomm_chj.dtsi
+++ b/target/linux/ramips/dts/mt7621_netgear_sercomm_chj.dtsi
@@ -151,47 +151,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>;
+			sercomm,scpart-id = <0>;
 			read-only;
 		};
 
 		partition at 100000 {
 			label = "SC PART_MAP";
 			reg = <0x100000 0x100000>;
+			sercomm,scpart-id = <1>;
 			read-only;
 		};
 
 		partition at 200000 {
 			label = "kernel";
 			reg = <0x200000 0x400000>;
+			sercomm,scpart-id = <2>;
 		};
 
 		partition at 600000 {
 			label = "ubi";
 			reg = <0x600000 0x2800000>;
+			sercomm,scpart-id = <3>;
 		};
 
 		partition at 2e00000 {
-			label = "reserved0";
-			reg = <0x2e00000 0x1800000>;
+			label = "English UI";
+			reg = <0x2e00000 0x200000>;
+			sercomm,scpart-id = <4>;
+			read-only;
+		};
+
+		partition at 3000000 {
+			label = "ML1";
+			reg = <0x3000000 0x200000>;
+			sercomm,scpart-id = <5>;
+			read-only;
+		};
+
+		partition at 3200000 {
+			label = "ML2";
+			reg = <0x3200000 0x200000>;
+			sercomm,scpart-id = <6>;
+			read-only;
+		};
+
+		partition at 3400000 {
+			label = "ML3";
+			reg = <0x3400000 0x200000>;
+			sercomm,scpart-id = <7>;
+			read-only;
+		};
+
+		partition at 3600000 {
+			label = "ML4";
+			reg = <0x3600000 0x200000>;
+			sercomm,scpart-id = <8>;
+			read-only;
+		};
+
+		partition at 3800000 {
+			label = "ML5";
+			reg = <0x3800000 0x200000>;
+			sercomm,scpart-id = <9>;
+			read-only;
+		};
+
+		partition at 3a00000 {
+			label = "ML6";
+			reg = <0x3a00000 0x200000>;
+			sercomm,scpart-id = <10>;
+			read-only;
+		};
+
+		partition at 3c00000 {
+			label = "ML7";
+			reg = <0x3c00000 0x200000>;
+			sercomm,scpart-id = <11>;
+			read-only;
+		};
+
+		partition at 3e00000 {
+			label = "ML8";
+			reg = <0x3e00000 0x200000>;
+			sercomm,scpart-id = <12>;
+			read-only;
+		};
+
+		partition at 4000000 {
+			label = "ML9";
+			reg = <0x4000000 0x200000>;
+			sercomm,scpart-id = <13>;
+			read-only;
+		};
+
+		partition at 4200000 {
+			label = "ML10";
+			reg = <0x4200000 0x200000>;
+			sercomm,scpart-id = <14>;
+			read-only;
+		};
+
+		partition at 4400000 {
+			label = "ML11";
+			reg = <0x4400000 0x200000>;
+			sercomm,scpart-id = <15>;
 			read-only;
 		};
 
 		factory: partition at 4600000 {
 			label = "factory";
 			reg = <0x4600000 0x200000>;
+			sercomm,scpart-id = <16>;
 			read-only;
 		};
 
 		partition at 4800000 {
+			label = "SC Private Data";
+			reg = <0x4800000 0x200000>;
+			sercomm,scpart-id = <17>;
+			read-only;
+		};
+
+		partition at 4a00000 {
+			label = "POT";
+			reg = <0x4a00000 0x200000>;
+			sercomm,scpart-id = <18>;
+			read-only;
+		};
+
+		partition at 4c00000 {
+			label = "Traffic Meter";
+			reg = <0x4c00000 0x200000>;
+			sercomm,scpart-id = <19>;
+			read-only;
+		};
+
+		partition at 4e00000 {
+			label = "SC PID";
+			reg = <0x4e00000 0x200000>;
+			sercomm,scpart-id = <20>;
+			read-only;
+		};
+
+		partition at 5000000 {
+			label = "SC Nvram";
+			reg = <0x5000000 0x200000>;
+			sercomm,scpart-id = <21>;
+			read-only;
+		};
+
+		partition at 5200000 {
+			label = "Ralink Nvram";
+			reg = <0x5200000 0x200000>;
+			sercomm,scpart-id = <22>;
+			read-only;
+		};
+
+		partition at 5400000 {
+			label = "reserved0";
+			reg = <0x5400000 0x200000>;
+			sercomm,scpart-id = <23>;
+			read-only;
+		};
+
+		partition at 5600000 {
 			label = "reserved1";
-			reg = <0x4800000 0x3800000>;
+			reg = <0x5600000 0x200000>;
+			sercomm,scpart-id = <24>;
+			read-only;
+		};
+
+		partition at 5800000 {
+			label = "reserved2";
+			reg = <0x5800000 0x200000>;
+			sercomm,scpart-id = <25>;
+			read-only;
+		};
+
+		partition at 5a00000 {
+			label = "reserved3";
+			reg = <0x5a00000 0x200000>;
+			sercomm,scpart-id = <26>;
+			read-only;
+		};
+
+		partition at 5c00000 {
+			label = "reserved4";
+			reg = <0x5c00000 0x200000>;
+			sercomm,scpart-id = <27>;
+			read-only;
+		};
+
+		partition at 5e00000 {
+			label = "reserved5";
+			reg = <0x5e00000 0x2180000>;
+			sercomm,scpart-id = <28>;
 			read-only;
 		};
 	};




More information about the lede-commits mailing list