openwrt/target/linux
INAGAKI Hiroshi ddf7d63e94 generic: add mstc-boot mtdsplit parser
Add new mtdsplit parser "mstc-boot" for the devices manufactured by MSTC
(Mitra Star Technology Corp.). This is necessary to handle dual-boot on
those devices.
This parser splits kernel+rootfs or only rootfs(or UBI) based on the
image in the firmware partition or pre-defined partitions in dts, and
"bootnum" value in the "persist" (or "working") partition.

Note: "bootnum" is used for switching active firmware partitions on the
      devices manufactured by MSTC and '1' or '2' are used on most
      devices. But some devices use '0' or '1'. (example: I-O DATA
      WN-DEAX1800GR)

Sequence:

1. obtain "bootnum" value
2. child nodes exsist (regardless of bootnum)
   -> fixed partitions
      (active parts  : without bootnum (ex.: "kernel", "rootfs")
       inactive parts: with bootnum (ex.: "kernel2", "rootfs2"))
3. current partition is active (dt bootnum == mtd bootnum)
   -> image-based partitions

Device Tree:

- common

  - mstc,bootnum  : "bootnum" value for the mtd partition (0/1/2)
  - mstc,persist  : phandle of "persist" partition containing "bootnum"
                    value

- fixed partitions

  - #address-cells: indicate cell count of address of child nodes (1)
  - #size-cells   : indicate cell count of size of child nodes (1)
  - (child nodes) : define the child partitions
    - reg         : define the offset and size
    - label-base  : define the base name of the partition
      - (example) : base:"kernel"->"kernel"(active)/"kernel2"(inactive)

  example:

  partition@3c0000 {
  	compatible = "mstc,boot";
  	reg = <0x3c0000 0x3240000>;
  	label = "firmware1";
  	mstc,bootnum = <1>;
  	mstc,persist = <&mtd_persist>;
  	#address-cells = <1>;
  	#size-cells = <1>;

  	partition@0 {
  		reg = <0x0 0x800000>;
  		label-base = "kernel";
  	};

  	partition@800000 {
  		reg = <0x800000 0x2a40000>;
  		label-base = "ubi";
 	};
  };

- image-based partitions

  (no additional properties)

  example:

  partition@5a0000 {
  	compatible = "mstc,boot";
  	label = "firmware1";
  	reg = <0x5a0000 0x3200000>;
  	mstc,bootnum = <1>;
  	mstc,persist = <&mtd_persist>;
  };

Signed-off-by: INAGAKI Hiroshi <musashino.open@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18976
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-07-20 16:12:56 +02:00
..
airoha kernel: bump 6.6 to 6.6.98 2025-07-16 09:40:36 +02:00
apm821xx apm821xx: enable kernel 6.12 2025-07-19 00:01:12 +02:00
armsr armsr: drop 6.6 support 2025-07-19 18:49:28 +02:00
at91 treewide: strip trailing whitespace 2025-05-20 00:47:37 +02:00
ath79 ath79: add support for Dell SonicPoint ACi APL27-0B1 2025-07-13 01:03:36 +02:00
bcm27xx bcm27xx: package modules for official 7" touchscreen TFT display 2025-07-20 12:16:13 +01:00
bcm47xx treewide: strip trailing whitespace 2025-05-20 00:47:37 +02:00
bcm53xx kernel: bump 6.6 to 6.6.97 2025-07-12 16:47:58 +02:00
bcm4908 bcm63xx-cfe: install into image staging dir 2025-04-13 10:44:19 +02:00
bmips kernel: bump 6.12 to 6.12.39 2025-07-19 11:59:56 +02:00
d1 kernel: remove duplicate PREEMPT settings 2025-06-08 15:59:55 +02:00
gemini kernel: bump 6.12 to 6.12.35 2025-06-28 22:47:48 +02:00
generic generic: add mstc-boot mtdsplit parser 2025-07-20 16:12:56 +02:00
imx generic: 6.12: add new config symbols 2025-07-13 15:27:54 +02:00
ipq40xx ipq40xx: enable 6.12 testing kernel 2025-07-20 15:33:03 +02:00
ipq806x ipq806x: add support for IgniteNet SunSpot AC Wave2 2025-06-25 02:07:02 +01:00
ixp4xx ixp4xx: Switch to kernel v6.12 2025-06-03 01:45:40 +02:00
kirkwood kirkwood: add kmod-ata-ahci as default to ix4-200d 2025-07-19 17:58:41 +02:00
lantiq lantiq: enable 6.12 testing kernel 2025-07-18 12:31:00 +01:00
layerscape kernel: bump 6.6 to 6.6.88 2025-05-03 19:57:53 +02:00
loongarch64 loongarch64: add 6.12 as testing kernel 2025-07-12 23:17:00 +02:00
malta malta: 6.12: enable kernel for testing 2025-05-29 22:46:47 +02:00
mediatek mediatek: stage mt7622/mt7629 rfb u-boot images to bin folder 2025-07-19 02:59:16 +01:00
mpc85xx kernel: backport GCC15 fix for powerpc 2025-07-07 17:20:53 +02:00
mvebu mvebu: Use common files folder 2025-07-19 18:34:58 +02:00
mxs mxs: drop 6.6 support 2025-05-24 16:15:53 +02:00
octeon octeon: ubnt-*: Add device specific DTS pruning 2025-07-09 10:39:29 +02:00
omap kernel: Activate CONFIG_NET_SWITCHDEV in generic config 2025-03-15 13:54:59 +01:00
pistachio kernel: remove duplicate PREEMPT settings 2025-06-08 15:59:55 +02:00
qoriq kernel: Activate CONFIG_NET_SWITCHDEV in generic config 2025-03-15 13:54:59 +01:00
qualcommax kernel: bump 6.12 to 6.12.39 2025-07-19 11:59:56 +02:00
qualcommbe qualcommbe: remove useless cpu erratum 2025-07-13 15:27:54 +02:00
ramips ramips: add support for Wavlink WL-WN570HA2 2025-07-12 22:51:39 +02:00
realtek realtek: avoid interrupt storm on mass packet receive 2025-07-18 23:52:54 +02:00
rockchip rockchip: add RK3588 Hardware Random Number Generator 2025-07-14 22:37:03 +02:00
sifiveu kernel: remove duplicate PREEMPT settings 2025-06-08 15:59:55 +02:00
siflower kernel: bump 6.6 to 6.6.94 2025-06-21 13:54:17 +02:00
starfive kernel: bump 6.12 to 6.12.36 2025-07-12 16:47:58 +02:00
stm32 generic: 6.12: add new config symbols 2025-07-13 15:27:54 +02:00
sunxi generic: 6.12: add new config symbols 2025-07-13 15:27:54 +02:00
tegra tegra: add 6.12 as testing kernel 2025-07-13 00:49:37 +02:00
uml kernel: bump 6.12 to 6.12.33 2025-06-12 12:42:15 +02:00
x86 x86: modules: fix wrong Kconfig symbol 2025-07-17 11:45:13 +01:00
zynq kernel: filter out compiler opts from config 2024-11-17 14:55:16 +01:00
Makefile linux: fix missing default packages in profiles.json 2024-11-17 19:29:06 +01:00