aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--package/boot/uboot-mediatek/Makefile4
-rw-r--r--package/boot/uboot-mediatek/patches/410-add-linksys-e8450.patch46
-rw-r--r--target/linux/mediatek/dts/mt7622-linksys-e8450-ubi.dts72
-rw-r--r--target/linux/mediatek/image/mt7622.mk6
-rw-r--r--target/linux/mediatek/mt7622/base-files/etc/board.d/05_compat-version3
-rw-r--r--target/linux/mediatek/mt7622/base-files/etc/uci-defaults/05_fix-compat-version4
-rwxr-xr-xtarget/linux/mediatek/mt7622/base-files/lib/upgrade/platform.sh5
-rw-r--r--target/linux/mediatek/mt7622/config-6.11
8 files changed, 96 insertions, 45 deletions
diff --git a/package/boot/uboot-mediatek/Makefile b/package/boot/uboot-mediatek/Makefile
index 32d3b995de6..df8c9431ecc 100644
--- a/package/boot/uboot-mediatek/Makefile
+++ b/package/boot/uboot-mediatek/Makefile
@@ -97,9 +97,9 @@ define U-Boot/mt7622_linksys_e8450
BUILD_DEVICES:=linksys_e8450-ubi
BUILD_SUBTARGET:=mt7622
UBOOT_IMAGE:=u-boot.fip
- BL2_BOOTDEV:=snand
+ BL2_BOOTDEV:=snand-ubi
BL2_DDRBLOB:=1
- DEPENDS:=+trusted-firmware-a-mt7622-snand-1ddr
+ DEPENDS:=+trusted-firmware-a-mt7622-snand-ubi-1ddr
endef
define U-Boot/mt7622_bananapi_bpi-r64-emmc
diff --git a/package/boot/uboot-mediatek/patches/410-add-linksys-e8450.patch b/package/boot/uboot-mediatek/patches/410-add-linksys-e8450.patch
index 359fddf1032..08aee125aa8 100644
--- a/package/boot/uboot-mediatek/patches/410-add-linksys-e8450.patch
+++ b/package/boot/uboot-mediatek/patches/410-add-linksys-e8450.patch
@@ -1,6 +1,6 @@
--- /dev/null
+++ b/configs/mt7622_linksys_e8450_defconfig
-@@ -0,0 +1,141 @@
+@@ -0,0 +1,140 @@
+CONFIG_ARM=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_ARCH_MEDIATEK=y
@@ -17,7 +17,6 @@
+CONFIG_DEBUG_UART_CLOCK=25000000
+CONFIG_DEFAULT_DEVICE_TREE="mt7622-linksys-e8450-ubi"
+CONFIG_DEBUG_UART=y
-+CONFIG_MTDPARTS_DEFAULT="mtdparts=spi-nand0:512k(bl2),1280k(fip),1024k(factory),256k(reserved),-(ubi)"
+CONFIG_SMBIOS_PRODUCT_NAME=""
+CONFIG_AUTOBOOT_KEYED=y
+CONFIG_BOOTDELAY=30
@@ -144,7 +143,7 @@
+CONFIG_USB_STORAGE=y
--- /dev/null
+++ b/arch/arm/dts/mt7622-linksys-e8450-ubi.dts
-@@ -0,0 +1,197 @@
+@@ -0,0 +1,214 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (c) 2019 MediaTek Inc.
@@ -307,6 +306,23 @@
+ pinctrl-0 = <&snfi_pins>;
+ status = "okay";
+ quad-spi;
++
++ partitions {
++ compatible = "fixed-partitions";
++ #address-cells = <1>;
++ #size-cells = <1>;
++
++ partition@0 {
++ label = "bl2";
++ reg = <0x0 0x80000>;
++ };
++
++ partition@80000 {
++ label = "ubi";
++ reg = <0x80000 0x7f80000>;
++ compatible = "linux,ubi";
++ };
++ };
+};
+
+&uart0 {
@@ -354,8 +370,8 @@
mt7981-rfb.dtb \
--- /dev/null
+++ b/linksys_e8450_env
-@@ -0,0 +1,57 @@
-+ethaddr_factory=mtd read spi-nand0 0x40080000 0x220000 0x20000 && env readmem -b ethaddr 0x4009fff4 0x6 ; setenv ethaddr_factory
+@@ -0,0 +1,54 @@
++ethaddr_factory=ubi read 0x40080000 factory && env readmem -b ethaddr 0x400ffff4 0x6 ; setenv ethaddr_factory
+ipaddr=192.168.1.1
+serverip=192.168.1.254
+loadaddr=0x48000000
@@ -387,28 +403,26 @@
+boot_default=if env exists flag_recover ; then else run bootcmd ; fi ; run boot_recovery ; setenv replacevol 1 ; run boot_tftp_forever
+boot_production=led $bootled_pwr on ; run ubi_read_production && bootm $loadaddr#$bootconf ; led $bootled_pwr off
+boot_recovery=led $bootled_rec on ; run ubi_read_recovery ; bootm $loadaddr#$bootconf ; ubi remove recovery ; led $bootled_rec off
-+boot_serial_write_bl2=loadx $loadaddr 115200 && run boot_write_bl2
-+boot_serial_write_fip=loadx $loadaddr 115200 && run boot_write_fip
++boot_serial_write_bl2=loadx $loadaddr 115200 && run snand_write_bl2
++boot_serial_write_fip=loadx $loadaddr 115200 && run ubi_write_fip
+boot_tftp=tftpboot $loadaddr $bootfile && bootm $loadaddr#$bootconf
+boot_tftp_forever=led $bootled_rec on ; while true ; do run boot_tftp_recovery ; sleep 1 ; done
+boot_tftp_production=tftpboot $loadaddr $bootfile_upg && iminfo $loadaddr && ubi part ubi && run ubi_write_production ubi_prepare_rootfs ; if env exists noboot ; then else bootm $loadaddr#$bootconf ; fi
+boot_tftp_recovery=tftpboot $loadaddr $bootfile && iminfo $loadaddr && ubi part ubi && run ubi_write_recovery ; if env exists noboot ; then else bootm $loadaddr#$bootconf ; fi
-+boot_tftp_write_bl2=tftpboot $loadaddr $bootfile_bl2 && run boot_write_bl2
-+boot_tftp_write_fip=tftpboot $loadaddr $bootfile_fip && run boot_write_fip
++boot_tftp_write_bl2=tftpboot $loadaddr $bootfile_bl2 && run snand_write_bl2
++boot_tftp_write_fip=tftpboot $loadaddr $bootfile_fip && run ubi_write_fip
+boot_ubi=ubi part ubi && run boot_production ; run boot_recovery
-+boot_write_bl2=mtd erase bl2 && mtd write spi-nand0 $loadaddr 0x0 0x20000 && mtd write spi-nand0 $loadaddr 0x20000 0x20000 && mtd write spi-nand0 $loadaddr 0x40000 0x20000 && mtd write spi-nand0 $loadaddr 0x60000 0x20000
-+boot_write_fip=mtd erase fip && mtd write fip $loadaddr
-+check_ubi=ubi part ubi || run ubi_format
-+reset_factory=mw $loadaddr 0x0 0x100000 ; ubi part ubi ; ubi write $loadaddr ubootenv 0x100000 ; ubi write $loadaddr ubootenv2 0x100000 ; ubi remove rootfs_data
-+ubi_format=ubi detach ; mtd erase ubi && ubi part ubi ; reset
++snand_write_bl2=mtd erase bl2 && mtd write spi-nand0 $loadaddr 0x0 0x20000 && mtd write spi-nand0 $loadaddr 0x20000 0x20000 && mtd write spi-nand0 $loadaddr 0x40000 0x20000 && mtd write spi-nand0 $loadaddr 0x60000 0x20000
++reset_factory=mw $loadaddr 0xff 0x1f000 ; ubi part ubi ; ubi write $loadaddr ubootenv 0x1f000 ; ubi write $loadaddr ubootenv2 0x1f000 ; ubi remove rootfs_data
+ubi_prepare_rootfs=if ubi check rootfs_data ; then else if env exists rootfs_data_max ; then ubi create rootfs_data $rootfs_data_max dynamic || ubi create rootfs_data - dynamic ; else ubi create rootfs_data - dynamic ; fi ; fi
+ubi_read_production=ubi read $loadaddr fit && iminfo $loadaddr && run ubi_prepare_rootfs
+ubi_read_recovery=ubi check recovery && ubi read $loadaddr recovery
+ubi_remove_rootfs=ubi check rootfs_data && ubi remove rootfs_data
++ubi_write_fip=ubi check fip || ubi create fip 0x200000 static ; ubi write $loadaddr fip 0x200000
+ubi_write_production=ubi check fit && env exists replacevol && ubi remove fit ; if ubi check fit ; then else run ubi_remove_rootfs ; ubi create fit $filesize dynamic && ubi write $loadaddr fit $filesize ; fi
+ubi_write_recovery=ubi check recovery && env exists replacevol && ubi remove recovery ; if ubi check recovery ; then else run ubi_remove_rootfs ; ubi create recovery $filesize dynamic && ubi write $loadaddr recovery $filesize ; fi
-+_create_env=ubi create ubootenv 0x100000 dynamic ; ubi create ubootenv2 0x100000 dynamic
++_create_env=ubi create ubootenv 0x1f000 dynamic ; ubi create ubootenv2 0x1f000 dynamic
+_init_env=setenv _init_env ; if ubi check ubootenv && ubi check ubootenv2 ; then else run _create_env ; fi ; setenv _create_env ; saveenv || run ubi_format ; saveenv || run ubi_format
-+_firstboot=setenv _firstboot ; run _switch_to_menu ; run ethaddr_factory ; run check_ubi ; run _init_env ; run boot_first
++_firstboot=setenv _firstboot ; run _switch_to_menu ; run ethaddr_factory ; run _init_env ; run boot_first
+_switch_to_menu=setenv _switch_to_menu ; setenv bootdelay 3 ; setenv bootmenu_delay 3 ; setenv bootmenu_0 $bootmenu_0d ; setenv bootmenu_0d ; run _bootmenu_update_title
+_bootmenu_update_title=setenv _bootmenu_update_title ; setenv bootmenu_title "$bootmenu_title $ver"
diff --git a/target/linux/mediatek/dts/mt7622-linksys-e8450-ubi.dts b/target/linux/mediatek/dts/mt7622-linksys-e8450-ubi.dts
index e78db1de6cf..e2b7268e857 100644
--- a/target/linux/mediatek/dts/mt7622-linksys-e8450-ubi.dts
+++ b/target/linux/mediatek/dts/mt7622-linksys-e8450-ubi.dts
@@ -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;
+ volumes {
+ ubi-volume-ubootenv {
+ volname = "ubootenv";
+ nvmem-layout {
+ compatible = "u-boot,env-redundant-bool-layout";
+ };
+ };
- nvmem-layout {
- compatible = "fixed-layout";
- #address-cells = <1>;
- #size-cells = <1>;
+ ubi-volume-ubootenv2 {
+ volname = "ubootenv2";
+ nvmem-layout {
+ compatible = "u-boot,env-redundant-bool-layout";
+ };
+ };
- macaddr_factory_7fff4: macaddr@7fff4 {
- reg = <0x7fff4 0x6>;
+ ubi_rootfs: ubi-volume-fit {
+ volname = "fit";
};
- macaddr_factory_7fffa: macaddr@7fffa {
- reg = <0x7fffa 0x6>;
+ ubi_factory: ubi-volume-factory {
+ volname = "factory";
};
};
};
+ };
+};
+
+&ubi_factory {
+ nvmem-layout {
+ compatible = "fixed-layout";
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ eeprom_factory_0: eeprom@0 {
+ reg = <0x0 0x4da8>; /* actual length 0x400 */
+ };
- partition@300000 {
- label = "ubi";
- reg = <0x300000 0x7d00000>;
+ 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 {
diff --git a/target/linux/mediatek/image/mt7622.mk b/target/linux/mediatek/image/mt7622.mk
index dd86c167de4..65db3e49a70 100644
--- a/target/linux/mediatek/image/mt7622.mk
+++ b/target/linux/mediatek/image/mt7622.mk
@@ -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
diff --git a/target/linux/mediatek/mt7622/base-files/etc/board.d/05_compat-version b/target/linux/mediatek/mt7622/base-files/etc/board.d/05_compat-version
index 2fdbe764073..68c397a95c4 100644
--- a/target/linux/mediatek/mt7622/base-files/etc/board.d/05_compat-version
+++ b/target/linux/mediatek/mt7622/base-files/etc/board.d/05_compat-version
@@ -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
diff --git a/target/linux/mediatek/mt7622/base-files/etc/uci-defaults/05_fix-compat-version b/target/linux/mediatek/mt7622/base-files/etc/uci-defaults/05_fix-compat-version
index 3359d4a4001..6309728e4bc 100644
--- a/target/linux/mediatek/mt7622/base-files/etc/uci-defaults/05_fix-compat-version
+++ b/target/linux/mediatek/mt7622/base-files/etc/uci-defaults/05_fix-compat-version
@@ -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
diff --git a/target/linux/mediatek/mt7622/base-files/lib/upgrade/platform.sh b/target/linux/mediatek/mt7622/base-files/lib/upgrade/platform.sh
index 6417eb1a3a7..f5d938e65e5 100755
--- a/target/linux/mediatek/mt7622/base-files/lib/upgrade/platform.sh
+++ b/target/linux/mediatek/mt7622/base-files/lib/upgrade/platform.sh
@@ -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
diff --git a/target/linux/mediatek/mt7622/config-6.1 b/target/linux/mediatek/mt7622/config-6.1
index cdaae0fe25c..eed62e09e1c 100644
--- a/target/linux/mediatek/mt7622/config-6.1
+++ b/target/linux/mediatek/mt7622/config-6.1
@@ -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