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>
117 lines
2.9 KiB
Text
117 lines
2.9 KiB
Text
config MTD_SPLIT
|
|
def_bool n
|
|
help
|
|
Generic MTD split support.
|
|
|
|
config MTD_SPLIT_SUPPORT
|
|
def_bool MTD = y
|
|
|
|
comment "Rootfs partition parsers"
|
|
|
|
config MTD_SPLIT_SQUASHFS_ROOT
|
|
bool "Squashfs based root partition parser"
|
|
depends on MTD_SPLIT_SUPPORT
|
|
select MTD_SPLIT
|
|
help
|
|
This provides a parsing function which allows to detect the
|
|
offset and size of the unused portion of a rootfs partition
|
|
containing a squashfs.
|
|
|
|
comment "Firmware partition parsers"
|
|
|
|
config MTD_SPLIT_BCM63XX_FW
|
|
bool "BCM63xx firmware parser"
|
|
depends on MTD_SPLIT_SUPPORT
|
|
select MTD_SPLIT
|
|
|
|
config MTD_SPLIT_BCM_WFI_FW
|
|
bool "Broadcom Whole Flash Image parser"
|
|
depends on MTD_SPLIT_SUPPORT
|
|
select MTD_SPLIT
|
|
|
|
config MTD_SPLIT_CFE_BOOTFS
|
|
bool "Parser finding rootfs appended to the CFE bootfs"
|
|
depends on MTD_SPLIT_SUPPORT && (ARCH_BCM4908 || ARCH_BCMBCA)
|
|
select MTD_SPLIT
|
|
help
|
|
cferom on BCM4908 (and bcm63xx) uses JFFS2 bootfs partition
|
|
for storing kernel, cferam and some device specific files.
|
|
There isn't any straight way of storing rootfs so it gets
|
|
appended to the JFFS2 bootfs partition. Kernel needs to find
|
|
it and run init from it. This parser is responsible for
|
|
finding appended rootfs.
|
|
|
|
config MTD_SPLIT_SEAMA_FW
|
|
bool "Seama firmware parser"
|
|
depends on MTD_SPLIT_SUPPORT
|
|
select MTD_SPLIT
|
|
|
|
config MTD_SPLIT_WRGG_FW
|
|
bool "WRGG firmware parser"
|
|
depends on MTD_SPLIT_SUPPORT
|
|
select MTD_SPLIT
|
|
|
|
config MTD_SPLIT_UIMAGE_FW
|
|
bool "uImage based firmware partition parser"
|
|
depends on MTD_SPLIT_SUPPORT
|
|
select MTD_SPLIT
|
|
|
|
config MTD_SPLIT_FIT_FW
|
|
bool "FIT based firmware partition parser"
|
|
depends on MTD_SPLIT_SUPPORT
|
|
select MTD_SPLIT
|
|
|
|
config MTD_SPLIT_LZMA_FW
|
|
bool "LZMA compressed kernel based firmware partition parser"
|
|
depends on MTD_SPLIT_SUPPORT
|
|
select MTD_SPLIT
|
|
|
|
config MTD_SPLIT_TPLINK_FW
|
|
bool "TP-Link firmware parser"
|
|
depends on MTD_SPLIT_SUPPORT
|
|
select MTD_SPLIT
|
|
|
|
config MTD_SPLIT_TRX_FW
|
|
bool "TRX image based firmware partition parser"
|
|
depends on MTD_SPLIT_SUPPORT
|
|
select MTD_SPLIT
|
|
|
|
config MTD_SPLIT_BRNIMAGE_FW
|
|
bool "brnImage (brnboot image) firmware parser"
|
|
depends on MTD_SPLIT_SUPPORT
|
|
select MTD_SPLIT
|
|
|
|
config MTD_SPLIT_EVA_FW
|
|
bool "EVA image based firmware partition parser"
|
|
depends on MTD_SPLIT_SUPPORT
|
|
select MTD_SPLIT
|
|
|
|
config MTD_SPLIT_MINOR_FW
|
|
bool "Mikrotik NOR image based firmware partition parser"
|
|
depends on MTD_SPLIT_SUPPORT
|
|
select MTD_SPLIT
|
|
|
|
config MTD_SPLIT_JIMAGE_FW
|
|
bool "JBOOT Image based firmware partition parser"
|
|
depends on MTD_SPLIT_SUPPORT
|
|
select MTD_SPLIT
|
|
|
|
config MTD_SPLIT_ELF_FW
|
|
bool "ELF loader firmware partition parser"
|
|
depends on MTD_SPLIT_SUPPORT
|
|
select MTD_SPLIT
|
|
|
|
config MTD_SPLIT_H3C_VFS
|
|
bool "Parser finding rootfs appended to H3C VFS"
|
|
depends on MTD_SPLIT_SUPPORT
|
|
select MTD_SPLIT
|
|
|
|
config MTD_SPLIT_SEIL_FW
|
|
bool "IIJ SEIL firmware parser"
|
|
depends on MTD_SPLIT_SUPPORT
|
|
select MTD_SPLIT
|
|
|
|
config MTD_SPLIT_MSTC_BOOT
|
|
bool "MSTC bootnum-based parser"
|
|
depends on MTD_SPLIT_SUPPORT
|
|
select MTD_SPLIT
|