[openwrt/openwrt] ath79: adjust ath79/tiny Senao APs to 4k blocksize

LEDE Commits lede-commits at lists.infradead.org
Fri Jun 11 00:01:37 PDT 2021


ynezz pushed a commit to openwrt/openwrt.git, branch openwrt-21.02:
https://git.openwrt.org/642c88714cbf68a582d191141b96e8b9fb850b74

commit 642c88714cbf68a582d191141b96e8b9fb850b74
Author: Michael Pratt <mcpratt at pm.me>
AuthorDate: Sun Feb 21 17:41:30 2021 -0500

    ath79: adjust ath79/tiny Senao APs to 4k blocksize
    
    ath79/tiny kernel config has
    CONFIG_MTD_SPI_NOR_USE_4K_SECTORS=y
    from commit
    05d35403b211ccb9bf20e2b3c0b7a30c82c6d6a2
    
    Because of this, these changes are required for 2 reasons:
    
    1.
    
    Senao devices in ath79/tiny
    with a 'failsafe' partition and the tar.gz sysupgrade platform
    and a flash chip that supports 4k sectors
    will fail to reboot to openwrt after a sysupgrade.
    
    the stored checksum is made with the 64k blocksize length
    of the image to be flashed,
    and the actual checksum changes after flashing due to JFFS2 space
    being formatted within the length of the rootfs from the image
    
    example:
    0x440000 length of kernel + rootfs (from sysupgrade.bin)
    0x439000 offset of rootfs_data (from kernel log)
    
    2.
    
    for boards with flash chips that support 4k sectors:
    saving configuration over sysupgrade is not possible
    because sysupgrade.tgz is appended at a 64k boundary
    and the mtd parser starts JFFS2 at a 4k boundary.
    
    for boards with flash chips that do not support 4k sectors:
    partitioning with 4k boundaries causes a boot loop
    from the mtd parser not finding kernel and rootfs.
    
    Also:
    
    Some of the Senao boards that belong in ath79/tiny,
    for example ENH202,
    have a flash chip that does not support 4k sectors
    (no SECT_4K symbol in upstream source).
    
    Because of this, partitioning must be different for these devices
    depending on the flash chip model detected by the kernel.
    
    Therefore:
    
    this creates 2 DTSI files
    to replace the single one with 64k partitioning
    for 4k and 64k partitioning respectively.
    
    Signed-off-by: Michael Pratt <mcpratt at pm.me>
    (cherry picked from commit a58cb22bbe4bac17e7421a0ad6bf7929fcd56599)
---
 target/linux/ath79/dts/ar7240_engenius_enh202-v1.dts                | 2 +-
 target/linux/ath79/dts/ar7242_engenius_eap350-v1.dts                | 2 +-
 target/linux/ath79/dts/ar7242_engenius_ecb350-v1.dts                | 2 +-
 .../dts/{ar724x_senao_loader.dtsi => ar724x_senao_loader-4k.dtsi}   | 6 +++---
 .../dts/{ar724x_senao_loader.dtsi => ar724x_senao_loader-64k.dtsi}  | 0
 target/linux/ath79/image/tiny.mk                                    | 2 ++
 6 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/target/linux/ath79/dts/ar7240_engenius_enh202-v1.dts b/target/linux/ath79/dts/ar7240_engenius_enh202-v1.dts
index 89b6746c61..c5a667b513 100644
--- a/target/linux/ath79/dts/ar7240_engenius_enh202-v1.dts
+++ b/target/linux/ath79/dts/ar7240_engenius_enh202-v1.dts
@@ -1,7 +1,7 @@
 // SPDX-License-Identifier: GPL-2.0-or-later OR MIT
 
 #include "ar7240.dtsi"
-#include "ar724x_senao_loader.dtsi"
+#include "ar724x_senao_loader-64k.dtsi"
 
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/input/input.h>
diff --git a/target/linux/ath79/dts/ar7242_engenius_eap350-v1.dts b/target/linux/ath79/dts/ar7242_engenius_eap350-v1.dts
index be0f7cbc43..436d8c1289 100644
--- a/target/linux/ath79/dts/ar7242_engenius_eap350-v1.dts
+++ b/target/linux/ath79/dts/ar7242_engenius_eap350-v1.dts
@@ -1,7 +1,7 @@
 // SPDX-License-Identifier: GPL-2.0-or-later OR MIT
 
 #include "ar7242.dtsi"
-#include "ar724x_senao_loader.dtsi"
+#include "ar724x_senao_loader-4k.dtsi"
 
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/input/input.h>
diff --git a/target/linux/ath79/dts/ar7242_engenius_ecb350-v1.dts b/target/linux/ath79/dts/ar7242_engenius_ecb350-v1.dts
index 55343e786a..be9a193170 100644
--- a/target/linux/ath79/dts/ar7242_engenius_ecb350-v1.dts
+++ b/target/linux/ath79/dts/ar7242_engenius_ecb350-v1.dts
@@ -1,7 +1,7 @@
 // SPDX-License-Identifier: GPL-2.0-or-later OR MIT
 
 #include "ar7242.dtsi"
-#include "ar724x_senao_loader.dtsi"
+#include "ar724x_senao_loader-4k.dtsi"
 
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/input/input.h>
diff --git a/target/linux/ath79/dts/ar724x_senao_loader.dtsi b/target/linux/ath79/dts/ar724x_senao_loader-4k.dtsi
similarity index 93%
copy from target/linux/ath79/dts/ar724x_senao_loader.dtsi
copy to target/linux/ath79/dts/ar724x_senao_loader-4k.dtsi
index 54dbec18b3..501ff26859 100644
--- a/target/linux/ath79/dts/ar724x_senao_loader.dtsi
+++ b/target/linux/ath79/dts/ar724x_senao_loader-4k.dtsi
@@ -55,13 +55,13 @@
 
 			partition at a0000 {
 				label = "loader";
-				reg = <0xa0000 0x10000>;
+				reg = <0xa0000 0x1000>;
 				read-only;
 			};
 
-			fwconcat1: partition at b0000 {
+			fwconcat1: partition at a1000 {
 				label = "fwconcat1";
-				reg = <0xb0000 0xf0000>;
+				reg = <0xa1000 0xff000>;
 			};
 
 			fwconcat0: partition at 1a0000 {
diff --git a/target/linux/ath79/dts/ar724x_senao_loader.dtsi b/target/linux/ath79/dts/ar724x_senao_loader-64k.dtsi
similarity index 100%
rename from target/linux/ath79/dts/ar724x_senao_loader.dtsi
rename to target/linux/ath79/dts/ar724x_senao_loader-64k.dtsi
diff --git a/target/linux/ath79/image/tiny.mk b/target/linux/ath79/image/tiny.mk
index e9aab2ce06..29e411c058 100644
--- a/target/linux/ath79/image/tiny.mk
+++ b/target/linux/ath79/image/tiny.mk
@@ -33,6 +33,7 @@ TARGET_DEVICES += dlink_dir-615-e4
 
 define Device/engenius_eap350-v1
   $(Device/senao_loader_okli)
+  BLOCKSIZE := 4k
   SOC := ar7242
   DEVICE_VENDOR := EnGenius
   DEVICE_MODEL := EAP350
@@ -45,6 +46,7 @@ TARGET_DEVICES += engenius_eap350-v1
 
 define Device/engenius_ecb350-v1
   $(Device/senao_loader_okli)
+  BLOCKSIZE := 4k
   SOC := ar7242
   DEVICE_VENDOR := EnGenius
   DEVICE_MODEL := ECB350



More information about the lede-commits mailing list