mediatek: mt7622: add a second u-boot for redmi-ax6s
authorChuanhong Guo <gch981213@gmail.com>
Sat, 2 Mar 2024 13:12:54 +0000 (21:12 +0800)
committerChuanhong Guo <gch981213@gmail.com>
Thu, 21 Mar 2024 08:55:13 +0000 (16:55 +0800)
commita6991fc7d251f7ab65a588546e22abfd4f8ce472
tree96ecdb4163486c172994ee05888a3433efa8c89a
parentec8c3dc701cfd53e1ddc9817041e710fb4bbb0f3
mediatek: mt7622: add a second u-boot for redmi-ax6s

The vendor u-boot knows nothing about UBI, and we used to have a
fixed-size kernel partition for vendor u-boot and UBI for rootfs.
However, that fixed partition becomes too small eventually, and
expanding it requires complicated procedure.

This commit changed the flash layout and added a second u-boot
where the kernel supposed to be.
Now the vendor u-boot chainloads our mainline u-boot, and our
u-boot reads kernel+rootfs from UBI, verifies it, and boot
into OpenWrt.

There are two possible ways to convert from the old fw:
Flash the factory image using mtd (provided by @rany2):

mount -o remount,ro /
mount -o remount,ro /overlay
cd /tmp
dd if=factory.bin bs=1M count=4 | mtd write - kernel
dd if=factory.bin bs=1M skip=4 | mtd -r write - ubi

Or, flash the 2nd u-boot via mtd and upload the firmware
to the 2nd u-boot using tftp:

1. prepare a tftp server at 192.168.1.254 to serve the
   sysupgrade image:
   openwrt-mediatek-mt7622-xiaomi_redmi-router-ax6s-squashfs-sysupgrade.itb
2. upload the ubi-loader.itb to OpenWrt /tmp, and flash it to
   the old kernel partition:
   mtd -r write openwrt-mediatek-mt7622-xiaomi_redmi-router-ax6s-ubi-loader.itb
3. The router should reboot and flash the sysupgrade image via TFTP.

Procedure for flashing from vendor firmware shouldn't change.

Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
target/linux/mediatek/dts/mt7622-xiaomi-redmi-router-ax6s.dts
target/linux/mediatek/image/mt7622.mk
target/linux/mediatek/mt7622/base-files/etc/uci-defaults/05_fix-compat-version
target/linux/mediatek/mt7622/base-files/lib/upgrade/platform.sh