ath79: switch TP-Link RE355 v1, RE450 v1 and RE450 v2 to mtd-concat
authorRadek Dostál <[email protected]>
Sun, 9 Nov 2025 17:31:47 +0000 (18:31 +0100)
committerHauke Mehrtens <[email protected]>
Thu, 20 Nov 2025 23:03:24 +0000 (00:03 +0100)
This patch utilizes unused and empty flash space in the original partition
layout and increase maximum image size by 1664 KiB.

Tested on RE450v1 by running sysupgrade with build of size 5697 KiB and
checking that df shows 1988 1K-blocks for "/overlay".

Inspired by commit ebd5e5fb5359 ("ramips: switched TP-Link RE305 v1 to new
partition layout").

Signed-off-by: Radek Dostál <[email protected]>
Link: https://github.com/openwrt/openwrt/pull/20709
Signed-off-by: Hauke Mehrtens <[email protected]>
target/linux/ath79/dts/qca9558_tplink_rex5x.dtsi
target/linux/ath79/dts/qca9563_tplink_re450-v2.dts
target/linux/ath79/image/tiny-tp-link.mk
target/linux/ath79/tiny/base-files/etc/board.d/05_compat-version

index 8000459f2423894e5b9abf5190a84f5bceac40db..ce203807a62e913f52852748ba5f144938c4b501 100644 (file)
                        reset-gpios = <&gpio 11 GPIO_ACTIVE_LOW>;
                };
        };
+
+       virtual_flash {
+               compatible = "mtd-concat";
+               devices = <&fwconcat0>, <&fwconcat1>;
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       partition@0 {
+                               compatible = "tplink,firmware";
+                               label = "firmware";
+                               reg = <0x0 0x0>;
+                       };
+               };
+       };
 };
 
 &pcie0 {
                                read-only;
                        };
 
-                       partition@20000 {
-                               compatible = "tplink,firmware";
-                               label = "firmware";
+                       fwconcat0: partition@20000 {
+                               label = "fwconcat0";
                                reg = <0x020000 0x5e0000>;
                        };
 
                                read-only;
                        };
 
+                       fwconcat1: partition@650000 {
+                               label = "fwconcat1";
+                               reg = <0x650000 0x1a0000>;
+                       };
+
                        partition@7f0000 {
                                label = "art";
                                reg = <0x7f0000 0x010000>;
index 43f9106a49e76097c2978313e820a28e8d929a53..80de56672c011770eb825e97c363a822b963d382 100644 (file)
@@ -9,6 +9,21 @@
        aliases {
                label-mac-device = &eth0;
        };
+
+       virtual_flash {
+               compatible = "mtd-concat";
+               devices = <&fwconcat0>, <&fwconcat1>;
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       partition@0 {
+                               compatible = "tplink,firmware";
+                               label = "firmware";
+                               reg = <0x0 0x0>;
+                       };
+               };
+       };
 };
 
 &partitions {
@@ -18,9 +33,8 @@
                read-only;
        };
 
-       partition@20000 {
-               compatible = "tplink,firmware";
-               label = "firmware";
+       fwconcat0: partition@20000 {
+               compatible = "fwconcat0";
                reg = <0x020000 0x5e0000>;
        };
 
                read-only;
        };
 
+       fwconcat1: partition@650000 {
+               label = "fwconcat1";
+               reg = <0x650000 0x1a0000>;
+       };
+
        partition@7f0000 {
                label = "art";
                reg = <0x7f0000 0x010000>;
index 9e5b74db8cbe936962cd36e76751645f5bb6d1d6..b736701946938e2f877c2b445daa93892b3aebd8 100644 (file)
@@ -3,8 +3,12 @@ include ./common-tp-link.mk
 define Device/tplink_rex5x-v1
   $(Device/tplink-safeloader)
   SOC := qca9558
-  IMAGE_SIZE := 6016k
+  IMAGE_SIZE := 7680k
+  KERNEL_SIZE := 6016k
   DEVICE_PACKAGES := kmod-ath10k-ct-smallbuffers ath10k-firmware-qca988x-ct
+  DEVICE_COMPAT_VERSION := 2.0
+  DEVICE_COMPAT_MESSAGE := Partition layout has changed compared to older versions by utilizing unused flash. \
+    Upgrade via sysupgrade mechanism (-F) will only work if flashed image still fits to the size of old partition (6016 KiB).
   DEFAULT := n
 endef
 
@@ -29,10 +33,14 @@ TARGET_DEVICES += tplink_re450-v1
 define Device/tplink_re450-v2
   $(Device/tplink-safeloader)
   SOC := qca9563
-  IMAGE_SIZE := 6016k
+  IMAGE_SIZE := 7680k
+  KERNEL_SIZE := 6016k
   DEVICE_MODEL := RE450
   DEVICE_VARIANT := v2
   DEVICE_PACKAGES := kmod-ath10k-ct-smallbuffers ath10k-firmware-qca988x-ct
+  DEVICE_COMPAT_VERSION := 2.0
+  DEVICE_COMPAT_MESSAGE := Partition layout has changed compared to older versions by utilizing unused flash. \
+    Upgrade via sysupgrade mechanism (-F) will only work if flashed image still fits to the size of old partition (6016 KiB).
   TPLINK_BOARD_ID := RE450-V2
   LOADER_TYPE := elf
   DEFAULT := n
index b6c2ae48f75feb4f2919f93af42dbe83ac362175..06a0b9f775fa40398449cb4f498c5b06f803070d 100644 (file)
@@ -13,6 +13,11 @@ case "$(board_name)" in
        tplink,tl-wpa8630p-v2.1-eu)
                ucidef_set_compat_version "2.0"
                ;;
+       tplink,re355-v1|\
+       tplink,re450-v1|\
+       tplink,re450-v2)
+               ucidef_set_compat_version "2.0"
+               ;;
 esac
 
 board_config_flush