mediatek: mt7622: modernize Linksys E8450 / Belkin RT3200 UBI build

Move fip and factory into UBI static volumes.
Use fitblk instead of partition parser.

 !! RUN INSTALLER FIRST !!
Existing users of previous OpenWrt releases or snapshot builds will
have to **re-run the updated installer** before upgrading to firmware
after this commit.
DO NOT flash or run even just the initramfs image unless you have
run the updated installer which moves the content of the 'factory'
partition into a UBI volume.

tl;dr: DON'T USE YET!

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
This commit is contained in:
Daniel Golle
2024-01-22 19:12:40 +00:00
parent 41c053141e
commit 6aec3c7b5b
8 changed files with 98 additions and 47 deletions

View File

@@ -10,6 +10,11 @@
aliases {
label-mac-device = &wan;
};
chosen {
rootdisk = <&ubi_rootfs>;
bootargs = "earlycon=uart8250,mmio32,0x11002000 console=ttyS0,115200n1 swiotlb=512 ubi.block=0,fit root=/dev/fit0";
};
};
&snand {
@@ -25,45 +30,70 @@
};
partition@80000 {
label = "fip";
reg = <0x80000 0x140000>;
read-only;
};
label = "ubi";
reg = <0x80000 0x7f80000>;
compatible = "linux,ubi";
factory: partition@1c0000 {
label = "factory";
reg = <0x1c0000 0x100000>;
read-only;
nvmem-layout {
compatible = "fixed-layout";
#address-cells = <1>;
#size-cells = <1>;
macaddr_factory_7fff4: macaddr@7fff4 {
reg = <0x7fff4 0x6>;
volumes {
ubi-volume-ubootenv {
volname = "ubootenv";
nvmem-layout {
compatible = "u-boot,env-redundant-bool-layout";
};
};
macaddr_factory_7fffa: macaddr@7fffa {
reg = <0x7fffa 0x6>;
ubi-volume-ubootenv2 {
volname = "ubootenv2";
nvmem-layout {
compatible = "u-boot,env-redundant-bool-layout";
};
};
ubi_rootfs: ubi-volume-fit {
volname = "fit";
};
ubi_factory: ubi-volume-factory {
volname = "factory";
};
};
};
};
};
partition@300000 {
label = "ubi";
reg = <0x300000 0x7d00000>;
&ubi_factory {
nvmem-layout {
compatible = "fixed-layout";
#address-cells = <1>;
#size-cells = <1>;
eeprom_factory_0: eeprom@0 {
reg = <0x0 0x4da8>; /* actual length 0x400 */
};
eeprom_factory_5000: eeprom@5000 {
reg = <0x5000 0xe00>;
};
macaddr_factory_7fff4: macaddr@7fff4 {
reg = <0x7fff4 0x6>;
};
macaddr_factory_7fffa: macaddr@7fffa {
reg = <0x7fffa 0x6>;
};
};
};
&wmac {
mediatek,mtd-eeprom = <&factory 0x0>;
nvmem-cells = <&eeprom_factory_0>;
nvmem-cell-names = "eeprom";
status = "okay";
};
&wmac1 {
mediatek,mtd-eeprom = <&factory 0x5000>;
nvmem-cells = <&eeprom_factory_5000>;
nvmem-cell-names = "eeprom";
};
&gmac0 {

View File

@@ -256,7 +256,7 @@ define Device/linksys_e8450-ubi
DEVICE_ALT0_VARIANT := UBI
DEVICE_DTS := mt7622-linksys-e8450-ubi
DEVICE_DTS_DIR := ../dts
DEVICE_PACKAGES := kmod-mt7915-firmware kmod-usb3
DEVICE_PACKAGES := fitblk kmod-mt7915-firmware kmod-usb3
UBINIZE_OPTS := -E 5
BLOCKSIZE := 128k
PAGESIZE := 2048
@@ -270,8 +270,10 @@ define Device/linksys_e8450-ubi
IMAGES := sysupgrade.itb
IMAGE/sysupgrade.itb := append-kernel | fit gzip $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb external-static-with-rootfs | append-metadata
ARTIFACTS := preloader.bin bl31-uboot.fip
ARTIFACT/preloader.bin := bl2 snand-1ddr
ARTIFACT/preloader.bin := bl2 snand-ubi-1ddr
ARTIFACT/bl31-uboot.fip := bl31-uboot linksys_e8450
DEVICE_COMPAT_VERSION := 2.0
DEVICE_COMPAT_MESSAGE := SPI-NAND flash layout changes require bootloader update
endef
TARGET_DEVICES += linksys_e8450-ubi

View File

@@ -8,6 +8,9 @@ case "$(board_name)" in
bananapi,bpi-r64)
ucidef_set_compat_version "1.2"
;;
linksys,e8450-ubi)
ucidef_set_compat_version "2.0"
;;
esac
board_config_flush

View File

@@ -9,6 +9,10 @@ case "$(board_name)" in
uci set system.@system[0].compat_version="1.1"
uci commit system
;;
linksys,e8450-ubi)
uci set system.@system[0].compat_version="2.0"
uci commit system
;;
esac
exit 0

View File

@@ -22,6 +22,7 @@ platform_do_upgrade() {
case "$board" in
bananapi,bpi-r64|\
linksys,e8450-ubi|\
ubnt,unifi-6-lr-v1-ubootmod|\
ubnt,unifi-6-lr-v2-ubootmod|\
ubnt,unifi-6-lr-v3-ubootmod)
@@ -66,10 +67,6 @@ platform_do_upgrade() {
xiaomi,redmi-router-ax6s)
nand_do_upgrade "$1"
;;
linksys,e8450-ubi)
CI_KERNPART="fit"
nand_do_upgrade "$1"
;;
linksys,e8450)
if grep -q mtdparts=slave /proc/cmdline; then
PART_NAME=firmware2

View File

@@ -257,6 +257,7 @@ CONFIG_MTD_UBI=y
CONFIG_MTD_UBI_BEB_LIMIT=20
CONFIG_MTD_UBI_BLOCK=y
CONFIG_MTD_UBI_FASTMAP=y
CONFIG_MTD_UBI_NVMEM=y
CONFIG_MTD_UBI_WL_THRESHOLD=4096
# CONFIG_MTK_CMDQ is not set
# CONFIG_MTK_CQDMA is not set