diff options
-rw-r--r-- | target/linux/ath79/dts/ar7161_jjplus_ja76pf2.dts | 39 | ||||
-rw-r--r-- | target/linux/ath79/dts/ar7161_ubnt_routerstation.dtsi | 35 | ||||
-rw-r--r-- | target/linux/ath79/generic/base-files/etc/uci-defaults/05_fix-compat-version | 5 | ||||
-rw-r--r-- | target/linux/ath79/generic/base-files/lib/upgrade/platform.sh | 20 | ||||
-rw-r--r-- | target/linux/ath79/image/Makefile | 8 | ||||
-rw-r--r-- | target/linux/ath79/image/common-ubnt.mk | 2 | ||||
-rw-r--r-- | target/linux/ath79/image/generic-ubnt.mk | 24 | ||||
-rw-r--r-- | target/linux/ath79/image/generic.mk | 25 |
8 files changed, 120 insertions, 38 deletions
diff --git a/target/linux/ath79/dts/ar7161_jjplus_ja76pf2.dts b/target/linux/ath79/dts/ar7161_jjplus_ja76pf2.dts index 8e861bad48..b528c1b69e 100644 --- a/target/linux/ath79/dts/ar7161_jjplus_ja76pf2.dts +++ b/target/linux/ath79/dts/ar7161_jjplus_ja76pf2.dts @@ -4,6 +4,7 @@ #include <dt-bindings/gpio/gpio.h> #include <dt-bindings/input/input.h> +#include <dt-bindings/mtd/partitions/uimage.h> / { model = "jjPlus JA76PF2"; @@ -122,9 +123,45 @@ spi-max-frequency = <25000000>; partitions { + compatible = "fixed-partitions"; #address-cells = <1>; #size-cells = <1>; - compatible = "ecoscentric,redboot-fis-partitions"; + + partition@0 { + label = "RedBoot"; + reg = <0x000000 0x040000>; + read-only; + }; + + partition@40000 { + label = "loader"; + reg = <0x040000 0x020000>; + }; + + partition@60000 { + label = "firmware"; + reg = <0x060000 0xf80000>; + compatible = "openwrt,uimage", "denx,uimage"; + openwrt,ih-magic = <IH_MAGIC_OKLI>; + }; + + partition@fe0000 { + label = "FIS directory"; + reg = <0xfe0000 0x00f000>; + read-only; + }; + + partition@fef000 { + label = "RedBoot config"; + reg = <0xfef000 0x001000>; + read-only; + }; + + partition@ff0000 { + label = "Atheros Board Data"; + reg = <0xff0000 0x10000>; + read-only; + }; }; }; }; diff --git a/target/linux/ath79/dts/ar7161_ubnt_routerstation.dtsi b/target/linux/ath79/dts/ar7161_ubnt_routerstation.dtsi index 116bc9cfc2..172b0af1eb 100644 --- a/target/linux/ath79/dts/ar7161_ubnt_routerstation.dtsi +++ b/target/linux/ath79/dts/ar7161_ubnt_routerstation.dtsi @@ -4,6 +4,7 @@ #include <dt-bindings/gpio/gpio.h> #include <dt-bindings/input/input.h> +#include <dt-bindings/mtd/partitions/uimage.h> / { aliases { @@ -62,7 +63,39 @@ spi-max-frequency = <25000000>; partitions { - compatible = "ecoscentric,redboot-fis-partitions"; + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + partition@0 { + label = "RedBoot"; + reg = <0x000000 0x030000>; + read-only; + }; + + partition@30000 { + label = "loader"; + reg = <0x030000 0x020000>; + }; + + partition@50000 { + label = "firmware"; + reg = <0x050000 0xfa0000>; + compatible = "openwrt,uimage", "denx,uimage"; + openwrt,ih-magic = <IH_MAGIC_OKLI>; + }; + + partition@ff0000 { + label = "FIS directory"; + reg = <0xff0000 0x00f000>; + read-only; + }; + + partition@fff000 { + label = "RedBoot config"; + reg = <0xfff000 0x001000>; + read-only; + }; }; }; }; diff --git a/target/linux/ath79/generic/base-files/etc/uci-defaults/05_fix-compat-version b/target/linux/ath79/generic/base-files/etc/uci-defaults/05_fix-compat-version index a6b7fa3162..6646b7e5e7 100644 --- a/target/linux/ath79/generic/base-files/etc/uci-defaults/05_fix-compat-version +++ b/target/linux/ath79/generic/base-files/etc/uci-defaults/05_fix-compat-version @@ -1,8 +1,11 @@ . /lib/functions.sh case "$(board_name)" in + jjplus,ja76pf2|\ meraki,mr12|\ - meraki,mr16) + meraki,mr16|\ + ubnt,routerstation|\ + ubnt,routerstation-pro) uci set system.@system[0].compat_version="2.0" uci commit system ;; diff --git a/target/linux/ath79/generic/base-files/lib/upgrade/platform.sh b/target/linux/ath79/generic/base-files/lib/upgrade/platform.sh index 953d6a96d3..642a9891ff 100644 --- a/target/linux/ath79/generic/base-files/lib/upgrade/platform.sh +++ b/target/linux/ath79/generic/base-files/lib/upgrade/platform.sh @@ -14,21 +14,21 @@ redboot_fis_do_upgrade() { local kern_part="$2" local magic=$(get_magic_word "$sysup_file") - if [ "$magic" = "4349" ]; then - local kern_length=0x$(dd if="$sysup_file" bs=2 skip=1 count=4 2>/dev/null) + if [ "$magic" = "7379" ]; then + local board_dir=$(tar tf $sysup_file | grep -m 1 '^sysupgrade-.*/$') [ -f "$UPGRADE_BACKUP" ] && append="-j $UPGRADE_BACKUP" - dd if="$sysup_file" bs=64k skip=1 2>/dev/null | \ - mtd -r $append -F$kern_part:$kern_length:0x80060000,rootfs write - $kern_part:rootfs - elif [ "$magic" = "7379" ]; then - local board_dir=$(tar tf $sysup_file | grep -m 1 '^sysupgrade-.*/$') - local kern_length=$(tar xf $sysup_file ${board_dir}kernel -O | wc -c) + if grep -q "mtd1.*loader" /proc/mtd; then + tar xf $sysup_file ${board_dir}kernel ${board_dir}root -O | \ + mtd -r $append write - loader:firmware - [ -f "$UPGRADE_BACKUP" ] && append="-j $UPGRADE_BACKUP" - tar xf $sysup_file ${board_dir}kernel ${board_dir}root -O | \ - mtd -r $append -F$kern_part:$kern_length:0x80060000,rootfs write - $kern_part:rootfs + else + local kern_length=$(tar xf $sysup_file ${board_dir}kernel -O | wc -c) + tar xf $sysup_file ${board_dir}kernel ${board_dir}root -O | \ + mtd -r $append -F$kern_part:$kern_length:0x80060000,rootfs write - $kern_part:rootfs + fi else echo "Unknown image, aborting!" return 1 diff --git a/target/linux/ath79/image/Makefile b/target/linux/ath79/image/Makefile index 2a7a0abd50..712ab941e1 100644 --- a/target/linux/ath79/image/Makefile +++ b/target/linux/ath79/image/Makefile @@ -8,14 +8,6 @@ DEVICE_VARS += LOADER_FLASH_MAX LOADER_KERNEL_MAGIC DEVICE_VARS += NETGEAR_BOARD_ID NETGEAR_HW_ID DEVICE_VARS += RAS_BOARD RAS_ROOTFS_SIZE RAS_VERSION -define Build/combined-image - sh $(TOPDIR)/scripts/combined-image.sh \ - "$(IMAGE_KERNEL)" \ - "$@" \ - "$@.new" - @mv $@.new $@ -endef - define Build/loader-common rm -rf $@.src $(MAKE) -C lzma-loader \ diff --git a/target/linux/ath79/image/common-ubnt.mk b/target/linux/ath79/image/common-ubnt.mk index 625f0b4f3f..76d6de000b 100644 --- a/target/linux/ath79/image/common-ubnt.mk +++ b/target/linux/ath79/image/common-ubnt.mk @@ -10,7 +10,7 @@ UBNT_REVISION := $(VERSION_DIST)-$(REVISION) define Build/mkubntimage -$(STAGING_DIR_HOST)/bin/mkfwimage -B $(UBNT_BOARD) \ -v $(UBNT_TYPE).$(UBNT_CHIP).v6.0.0-$(VERSION_DIST)-$(REVISION) \ - -k $(IMAGE_KERNEL) -r $@ -o $@ + -k $(if $(1),$(1),$(IMAGE_KERNEL)) -r $@ -o $@ endef define Build/mkubntimage2 diff --git a/target/linux/ath79/image/generic-ubnt.mk b/target/linux/ath79/image/generic-ubnt.mk index 5259a339df..69f7a94863 100644 --- a/target/linux/ath79/image/generic-ubnt.mk +++ b/target/linux/ath79/image/generic-ubnt.mk @@ -171,14 +171,24 @@ define Device/ubnt_routerstation_common kmod-usb2 fconfig DEVICE_VENDOR := Ubiquiti SOC := ar7161 - IMAGE_SIZE := 16128k + LOADER_TYPE := bin + LOADER_FLASH_OFFS := 0x50000 + COMPILE := loader-$(1).bin + COMPILE/loader-$(1).bin := loader-okli-compile | lzma | pad-to 128k + IMAGE_SIZE := 16000k IMAGES += factory.bin - IMAGE/factory.bin := append-rootfs | pad-rootfs | mkubntimage | \ - check-size - IMAGE/sysupgrade.bin := append-rootfs | pad-rootfs | combined-image | \ - check-size | append-metadata - KERNEL := kernel-bin | append-dtb | lzma | pad-to $$(BLOCKSIZE) + IMAGE/factory.bin := append-kernel | uImage lzma -M 0x4f4b4c49 | pad-to $$$$(BLOCKSIZE) | \ + append-rootfs | pad-rootfs | pad-to $$$$(BLOCKSIZE) | \ + mkubntimage $$$$(KDIR)/loader-$(1).bin | check-size + IMAGE/sysupgrade.bin := append-kernel | uImage lzma -M 0x4f4b4c49 | pad-to $$$$(BLOCKSIZE) | \ + append-rootfs | pad-rootfs | pad-to $$$$(BLOCKSIZE) | check-size | \ + sysupgrade-tar kernel=$$$$(KDIR)/loader-$(1).bin rootfs=$$$$@ | append-metadata + KERNEL := kernel-bin | append-dtb | lzma KERNEL_INITRAMFS := kernel-bin | append-dtb + DEVICE_COMPAT_VERSION := 2.0 + DEVICE_COMPAT_MESSAGE := Partition design has changed compared to older versions (19.07 and 21.02) \ + due to kernel drivers restrictions. Upgrade via sysupgrade mechanism is one way operation. \ + Downgrading OpenWrt version will involve usage of TFTP recovery or bootloader command line interface. endef define Device/ubnt_routerstation @@ -188,7 +198,6 @@ define Device/ubnt_routerstation UBNT_TYPE := RSx UBNT_CHIP := ar7100 DEVICE_PACKAGES += -swconfig - SUPPORTED_DEVICES += routerstation endef TARGET_DEVICES += ubnt_routerstation @@ -198,7 +207,6 @@ define Device/ubnt_routerstation-pro UBNT_BOARD := RSPRO UBNT_TYPE := RSPRO UBNT_CHIP := ar7100pro - SUPPORTED_DEVICES += routerstation-pro endef TARGET_DEVICES += ubnt_routerstation-pro diff --git a/target/linux/ath79/image/generic.mk b/target/linux/ath79/image/generic.mk index 6af90c9903..96b073b1b5 100644 --- a/target/linux/ath79/image/generic.mk +++ b/target/linux/ath79/image/generic.mk @@ -1466,15 +1466,24 @@ define Device/jjplus_ja76pf2 DEVICE_VENDOR := jjPlus DEVICE_MODEL := JA76PF2 DEVICE_PACKAGES += -kmod-ath9k -swconfig -wpad-basic-wolfssl -uboot-envtools fconfig kmod-hwmon-lm75 - IMAGES += kernel.bin rootfs.bin - IMAGE/kernel.bin := append-kernel - IMAGE/rootfs.bin := append-rootfs | pad-rootfs - IMAGE/sysupgrade.bin := append-rootfs | pad-rootfs | combined-image | \ - check-size | append-metadata - KERNEL := kernel-bin | append-dtb | lzma | pad-to $$(BLOCKSIZE) + LOADER_TYPE := bin + LOADER_FLASH_OFFS := 0x60000 + COMPILE := loader-$(1).bin + COMPILE/loader-$(1).bin := loader-okli-compile | lzma | pad-to 128k + ARTIFACTS := loader.bin + ARTIFACT/loader.bin := append-loader-okli $(1) + IMAGES += firmware.bin + IMAGE/firmware.bin := append-kernel | uImage lzma -M 0x4f4b4c49 | pad-to $$$$(BLOCKSIZE) | \ + append-rootfs | pad-rootfs | pad-to $$$$(BLOCKSIZE) | check-size + IMAGE/sysupgrade.bin := $$(IMAGE/firmware.bin) | \ + sysupgrade-tar kernel=$$$$(KDIR)/loader-$(1).bin rootfs=$$$$@ | append-metadata + KERNEL := kernel-bin | append-dtb | lzma KERNEL_INITRAMFS := kernel-bin | append-dtb - IMAGE_SIZE := 16000k - SUPPORTED_DEVICES += ja76pf2 + IMAGE_SIZE := 15872k + DEVICE_COMPAT_VERSION := 2.0 + DEVICE_COMPAT_MESSAGE := Partition design has changed compared to older versions (19.07 and 21.02) \ + due to kernel drivers restrictions. Upgrade via sysupgrade mechanism is one way operation. \ + Downgrading OpenWrt version will involve usage of bootloader command line interface. endef TARGET_DEVICES += jjplus_ja76pf2 |