ath79: adjust ath79/tiny Senao APs to 4k blocksize
authorMichael Pratt <mcpratt@pm.me>
Sun, 21 Feb 2021 22:41:30 +0000 (17:41 -0500)
committerPetr Štetiar <ynezz@true.cz>
Thu, 8 Apr 2021 07:20:59 +0000 (09:20 +0200)
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@pm.me>
target/linux/ath79/dts/ar7240_engenius_enh202-v1.dts
target/linux/ath79/dts/ar7242_engenius_eap350-v1.dts
target/linux/ath79/dts/ar7242_engenius_ecb350-v1.dts
target/linux/ath79/dts/ar724x_senao_loader-4k.dtsi [new file with mode: 0644]
target/linux/ath79/dts/ar724x_senao_loader-64k.dtsi [new file with mode: 0644]
target/linux/ath79/dts/ar724x_senao_loader.dtsi [deleted file]
target/linux/ath79/image/tiny.mk

index 89b6746c615045400cb9cf2aeb41e99cf8f77447..c5a667b51394c58b808c3e2ba65d838d4558d5fb 100644 (file)
@@ -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>
index be0f7cbc4332eed907f6d99f364aaaf03b6e6e54..436d8c128999b8f82541b4e3afdaa5521b7db2a4 100644 (file)
@@ -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>
index 55343e786a7919f46e8149e5022c9cc514f715c7..be9a19317058490eaf4512548f6a17b75923d4db 100644 (file)
@@ -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-4k.dtsi b/target/linux/ath79/dts/ar724x_senao_loader-4k.dtsi
new file mode 100644 (file)
index 0000000..501ff26
--- /dev/null
@@ -0,0 +1,85 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include <dt-bindings/mtd/partitions/uimage.h>
+
+/ {
+       virtual_flash {
+               compatible = "mtd-concat";
+
+               devices = <&fwconcat0 &fwconcat1>;
+
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       partition@0 {
+                               compatible = "openwrt,uimage", "denx,uimage";
+                               openwrt,ih-magic = <0x73714f4b>;
+                               label = "firmware";
+                               reg = <0x0 0x0>;
+                       };
+               };
+       };
+};
+
+&spi {
+       status = "okay";
+
+       flash@0 {
+               compatible = "jedec,spi-nor";
+               reg = <0>;
+               spi-max-frequency = <20000000>;
+
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       partition@0 {
+                               label = "u-boot";
+                               reg = <0x0 0x40000>;
+                               read-only;
+                       };
+
+                       partition@40000 {
+                               label = "u-boot-env";
+                               reg = <0x40000 0x10000>;
+                       };
+
+                       partition@50000 {
+                               label = "custom";
+                               reg = <0x50000 0x50000>;
+                               read-only;
+                       };
+
+                       partition@a0000 {
+                               label = "loader";
+                               reg = <0xa0000 0x1000>;
+                               read-only;
+                       };
+
+                       fwconcat1: partition@a1000 {
+                               label = "fwconcat1";
+                               reg = <0xa1000 0xff000>;
+                       };
+
+                       fwconcat0: partition@1a0000 {
+                               label = "fwconcat0";
+                               reg = <0x1a0000 0x4d0000>;
+                       };
+
+                       partition@670000 {
+                               label = "failsafe";
+                               reg = <0x670000 0x180000>;
+                               read-only;
+                       };
+
+                       art: partition@7f0000 {
+                               label = "art";
+                               reg = <0x7f0000 0x10000>;
+                               read-only;
+                       };
+               };
+       };
+};
diff --git a/target/linux/ath79/dts/ar724x_senao_loader-64k.dtsi b/target/linux/ath79/dts/ar724x_senao_loader-64k.dtsi
new file mode 100644 (file)
index 0000000..54dbec1
--- /dev/null
@@ -0,0 +1,85 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include <dt-bindings/mtd/partitions/uimage.h>
+
+/ {
+       virtual_flash {
+               compatible = "mtd-concat";
+
+               devices = <&fwconcat0 &fwconcat1>;
+
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       partition@0 {
+                               compatible = "openwrt,uimage", "denx,uimage";
+                               openwrt,ih-magic = <0x73714f4b>;
+                               label = "firmware";
+                               reg = <0x0 0x0>;
+                       };
+               };
+       };
+};
+
+&spi {
+       status = "okay";
+
+       flash@0 {
+               compatible = "jedec,spi-nor";
+               reg = <0>;
+               spi-max-frequency = <20000000>;
+
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       partition@0 {
+                               label = "u-boot";
+                               reg = <0x0 0x40000>;
+                               read-only;
+                       };
+
+                       partition@40000 {
+                               label = "u-boot-env";
+                               reg = <0x40000 0x10000>;
+                       };
+
+                       partition@50000 {
+                               label = "custom";
+                               reg = <0x50000 0x50000>;
+                               read-only;
+                       };
+
+                       partition@a0000 {
+                               label = "loader";
+                               reg = <0xa0000 0x10000>;
+                               read-only;
+                       };
+
+                       fwconcat1: partition@b0000 {
+                               label = "fwconcat1";
+                               reg = <0xb0000 0xf0000>;
+                       };
+
+                       fwconcat0: partition@1a0000 {
+                               label = "fwconcat0";
+                               reg = <0x1a0000 0x4d0000>;
+                       };
+
+                       partition@670000 {
+                               label = "failsafe";
+                               reg = <0x670000 0x180000>;
+                               read-only;
+                       };
+
+                       art: partition@7f0000 {
+                               label = "art";
+                               reg = <0x7f0000 0x10000>;
+                               read-only;
+                       };
+               };
+       };
+};
diff --git a/target/linux/ath79/dts/ar724x_senao_loader.dtsi b/target/linux/ath79/dts/ar724x_senao_loader.dtsi
deleted file mode 100644 (file)
index 54dbec1..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
-
-#include <dt-bindings/mtd/partitions/uimage.h>
-
-/ {
-       virtual_flash {
-               compatible = "mtd-concat";
-
-               devices = <&fwconcat0 &fwconcat1>;
-
-               partitions {
-                       compatible = "fixed-partitions";
-                       #address-cells = <1>;
-                       #size-cells = <1>;
-
-                       partition@0 {
-                               compatible = "openwrt,uimage", "denx,uimage";
-                               openwrt,ih-magic = <0x73714f4b>;
-                               label = "firmware";
-                               reg = <0x0 0x0>;
-                       };
-               };
-       };
-};
-
-&spi {
-       status = "okay";
-
-       flash@0 {
-               compatible = "jedec,spi-nor";
-               reg = <0>;
-               spi-max-frequency = <20000000>;
-
-               partitions {
-                       compatible = "fixed-partitions";
-                       #address-cells = <1>;
-                       #size-cells = <1>;
-
-                       partition@0 {
-                               label = "u-boot";
-                               reg = <0x0 0x40000>;
-                               read-only;
-                       };
-
-                       partition@40000 {
-                               label = "u-boot-env";
-                               reg = <0x40000 0x10000>;
-                       };
-
-                       partition@50000 {
-                               label = "custom";
-                               reg = <0x50000 0x50000>;
-                               read-only;
-                       };
-
-                       partition@a0000 {
-                               label = "loader";
-                               reg = <0xa0000 0x10000>;
-                               read-only;
-                       };
-
-                       fwconcat1: partition@b0000 {
-                               label = "fwconcat1";
-                               reg = <0xb0000 0xf0000>;
-                       };
-
-                       fwconcat0: partition@1a0000 {
-                               label = "fwconcat0";
-                               reg = <0x1a0000 0x4d0000>;
-                       };
-
-                       partition@670000 {
-                               label = "failsafe";
-                               reg = <0x670000 0x180000>;
-                               read-only;
-                       };
-
-                       art: partition@7f0000 {
-                               label = "art";
-                               reg = <0x7f0000 0x10000>;
-                               read-only;
-                       };
-               };
-       };
-};
index e9aab2ce069bcb5c4d7cadb4f22b86139d2e8c7c..29e411c058da8417ac2a2bd0d2df1591276e792a 100644 (file)
@@ -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