aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjørn Mork <bjorn@mork.no>2021-01-20 18:36:48 +0100
committerPetr Štetiar <ynezz@true.cz>2021-01-22 21:03:11 +0100
commit01a1e21863aa30c7a2c252ff06b9aef0cf957970 (patch)
tree8157324075c0f77d339c13375970448fd948a9b2
parented39f7ec1abde0d447a2dde8a8dce8042a3c5b29 (diff)
downloadupstream-01a1e21863aa30c7a2c252ff06b9aef0cf957970.tar.gz
upstream-01a1e21863aa30c7a2c252ff06b9aef0cf957970.tar.bz2
upstream-01a1e21863aa30c7a2c252ff06b9aef0cf957970.zip
kernel: mtdsplit_uimage: replace "openwrt, okli" parser
The only difference between the "openwrt,okli" and the generic parser is the magic. Set this in device tree for all affected devices and remove the "openwrt,okli" parser. Tested-by: Michael Pratt <mcpratt@protonmail.com> # EAP300 v2, ENS202EXT and ENH202 Signed-off-by: Bjørn Mork <bjorn@mork.no>
-rw-r--r--target/linux/ath79/dts/ar7240_engenius_enh202-v1.dts4
-rw-r--r--target/linux/ath79/dts/ar7242_engenius_eap350-v1.dts4
-rw-r--r--target/linux/ath79/dts/ar7242_engenius_ecb350-v1.dts4
-rw-r--r--target/linux/ath79/dts/ar9341_engenius_eap300-v2.dts4
-rw-r--r--target/linux/ath79/dts/ar9341_engenius_ens202ext-v1.dts4
-rw-r--r--target/linux/ath79/dts/ar9341_pisen_wmb001n.dts4
-rw-r--r--target/linux/ath79/dts/ar9344_engenius_exx600.dtsi4
-rw-r--r--target/linux/ath79/dts/qca9557_engenius_enstationac-v1.dts4
-rw-r--r--target/linux/ath79/dts/qca9558_belkin_f9x-v2.dtsi4
-rw-r--r--target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_uimage.c53
-rw-r--r--target/linux/generic/files/include/dt-bindings/mtd/partitions/uimage.h5
-rw-r--r--target/linux/ramips/dts/mt7620n_sunvalley_filehub.dtsi4
12 files changed, 35 insertions, 63 deletions
diff --git a/target/linux/ath79/dts/ar7240_engenius_enh202-v1.dts b/target/linux/ath79/dts/ar7240_engenius_enh202-v1.dts
index 1d26a9765b5..7c819e88e79 100644
--- a/target/linux/ath79/dts/ar7240_engenius_enh202-v1.dts
+++ b/target/linux/ath79/dts/ar7240_engenius_enh202-v1.dts
@@ -4,6 +4,7 @@
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
+#include <dt-bindings/mtd/partitions/uimage.h>
/ {
compatible = "engenius,enh202-v1", "qca,ar7240";
@@ -80,7 +81,8 @@
#size-cells = <1>;
partition@0 {
- compatible = "openwrt,okli";
+ compatible = "openwrt,uimage", "denx,uimage";
+ openwrt,ih-magic = <IH_MAGIC_OKLI>;
label = "firmware";
reg = <0x0 0x0>;
};
diff --git a/target/linux/ath79/dts/ar7242_engenius_eap350-v1.dts b/target/linux/ath79/dts/ar7242_engenius_eap350-v1.dts
index 4001897adf4..39a8a7f25f8 100644
--- a/target/linux/ath79/dts/ar7242_engenius_eap350-v1.dts
+++ b/target/linux/ath79/dts/ar7242_engenius_eap350-v1.dts
@@ -4,6 +4,7 @@
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
+#include <dt-bindings/mtd/partitions/uimage.h>
/ {
compatible = "engenius,eap350-v1", "qca,ar7242";
@@ -59,7 +60,8 @@
#size-cells = <1>;
partition@0 {
- compatible = "openwrt,okli";
+ compatible = "openwrt,uimage", "denx,uimage";
+ openwrt,ih-magic = <IH_MAGIC_OKLI>;
label = "firmware";
reg = <0x0 0x0>;
};
diff --git a/target/linux/ath79/dts/ar7242_engenius_ecb350-v1.dts b/target/linux/ath79/dts/ar7242_engenius_ecb350-v1.dts
index e73082267c8..0e06ee0128f 100644
--- a/target/linux/ath79/dts/ar7242_engenius_ecb350-v1.dts
+++ b/target/linux/ath79/dts/ar7242_engenius_ecb350-v1.dts
@@ -4,6 +4,7 @@
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
+#include <dt-bindings/mtd/partitions/uimage.h>
/ {
compatible = "engenius,ecb350-v1", "qca,ar7242";
@@ -59,7 +60,8 @@
#size-cells = <1>;
partition@0 {
- compatible = "openwrt,okli";
+ compatible = "openwrt,uimage", "denx,uimage";
+ openwrt,ih-magic = <IH_MAGIC_OKLI>;
label = "firmware";
reg = <0x0 0x0>;
};
diff --git a/target/linux/ath79/dts/ar9341_engenius_eap300-v2.dts b/target/linux/ath79/dts/ar9341_engenius_eap300-v2.dts
index 3121ec0e018..7aa89a4cce5 100644
--- a/target/linux/ath79/dts/ar9341_engenius_eap300-v2.dts
+++ b/target/linux/ath79/dts/ar9341_engenius_eap300-v2.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 = "Engenius EAP300 v2";
@@ -60,7 +61,8 @@
#size-cells = <1>;
partition@0 {
- compatible = "openwrt,okli";
+ compatible = "openwrt,uimage", "denx,uimage";
+ openwrt,ih-magic = <IH_MAGIC_OKLI>;
label = "firmware";
reg = <0x0 0x0>;
};
diff --git a/target/linux/ath79/dts/ar9341_engenius_ens202ext-v1.dts b/target/linux/ath79/dts/ar9341_engenius_ens202ext-v1.dts
index 6e296ab4968..38e9b381c0d 100644
--- a/target/linux/ath79/dts/ar9341_engenius_ens202ext-v1.dts
+++ b/target/linux/ath79/dts/ar9341_engenius_ens202ext-v1.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 = "Engenius ENS202EXT v1";
@@ -70,7 +71,8 @@
#size-cells = <1>;
partition@0 {
- compatible = "openwrt,okli";
+ compatible = "openwrt,uimage", "denx,uimage";
+ openwrt,ih-magic = <IH_MAGIC_OKLI>;
label = "firmware";
reg = <0x0 0x0>;
};
diff --git a/target/linux/ath79/dts/ar9341_pisen_wmb001n.dts b/target/linux/ath79/dts/ar9341_pisen_wmb001n.dts
index aaa4d1576bd..98236d44a68 100644
--- a/target/linux/ath79/dts/ar9341_pisen_wmb001n.dts
+++ b/target/linux/ath79/dts/ar9341_pisen_wmb001n.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 = "PISEN WMB001N";
@@ -106,7 +107,8 @@
partition@0 {
reg = <0x0 0x0>;
label = "firmware";
- compatible = "openwrt,okli";
+ compatible = "openwrt,uimage", "denx,uimage";
+ openwrt,ih-magic = <IH_MAGIC_OKLI>;
};
};
};
diff --git a/target/linux/ath79/dts/ar9344_engenius_exx600.dtsi b/target/linux/ath79/dts/ar9344_engenius_exx600.dtsi
index 5ae2ea66efa..340357b8deb 100644
--- a/target/linux/ath79/dts/ar9344_engenius_exx600.dtsi
+++ b/target/linux/ath79/dts/ar9344_engenius_exx600.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 {
@@ -47,7 +48,8 @@
#size-cells = <1>;
partition@0 {
- compatible = "openwrt,okli";
+ compatible = "openwrt,uimage", "denx,uimage";
+ openwrt,ih-magic = <IH_MAGIC_OKLI>;
label = "firmware";
reg = <0x0 0x0>;
};
diff --git a/target/linux/ath79/dts/qca9557_engenius_enstationac-v1.dts b/target/linux/ath79/dts/qca9557_engenius_enstationac-v1.dts
index f9801693c57..2cf800cddc4 100644
--- a/target/linux/ath79/dts/qca9557_engenius_enstationac-v1.dts
+++ b/target/linux/ath79/dts/qca9557_engenius_enstationac-v1.dts
@@ -4,6 +4,7 @@
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
+#include <dt-bindings/mtd/partitions/uimage.h>
/ {
compatible = "engenius,enstationac-v1", "qca,qca9557";
@@ -70,7 +71,8 @@
#size-cells = <1>;
partition@0 {
- compatible = "openwrt,okli";
+ compatible = "openwrt,uimage", "denx,uimage";
+ openwrt,ih-magic = <IH_MAGIC_OKLI>;
label = "firmware";
reg = <0x0 0x0>;
};
diff --git a/target/linux/ath79/dts/qca9558_belkin_f9x-v2.dtsi b/target/linux/ath79/dts/qca9558_belkin_f9x-v2.dtsi
index af22f6681ac..624e20096f2 100644
--- a/target/linux/ath79/dts/qca9558_belkin_f9x-v2.dtsi
+++ b/target/linux/ath79/dts/qca9558_belkin_f9x-v2.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 {
@@ -85,7 +86,8 @@
#size-cells = <1>;
partition@0 {
- compatible = "openwrt,okli";
+ compatible = "openwrt,uimage", "denx,uimage";
+ openwrt,ih-magic = <IH_MAGIC_OKLI>;
label = "firmware";
reg = <0x0 0x0>;
};
diff --git a/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_uimage.c b/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_uimage.c
index 58c40e9ec70..32c027d3e97 100644
--- a/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_uimage.c
+++ b/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_uimage.c
@@ -429,58 +429,6 @@ static struct mtd_part_parser uimage_edimax_parser = {
.type = MTD_PARSER_TYPE_FIRMWARE,
};
-/**************************************************
- * OKLI (OpenWrt Kernel Loader Image)
- **************************************************/
-
-#define IH_MAGIC_OKLI 0x4f4b4c49
-
-static ssize_t uimage_verify_okli(u_char *buf, size_t len, u32 ih_magic)
-{
- struct uimage_header *header = (struct uimage_header *)buf;
-
- /* default sanity checks */
- if (be32_to_cpu(header->ih_magic) != IH_MAGIC_OKLI) {
- pr_debug("invalid uImage magic: %08x\n",
- be32_to_cpu(header->ih_magic));
- return -EINVAL;
- }
-
- if (header->ih_os != IH_OS_LINUX) {
- pr_debug("invalid uImage OS: %08x\n",
- be32_to_cpu(header->ih_os));
- return -EINVAL;
- }
-
- if (header->ih_type != IH_TYPE_KERNEL) {
- pr_debug("invalid uImage type: %08x\n",
- be32_to_cpu(header->ih_type));
- return -EINVAL;
- }
-
- return 0;
-}
-
-static int
-mtdsplit_uimage_parse_okli(struct mtd_info *master,
- const struct mtd_partition **pparts,
- struct mtd_part_parser_data *data)
-{
- return __mtdsplit_parse_uimage(master, pparts, data,
- uimage_verify_okli);
-}
-
-static const struct of_device_id mtdsplit_uimage_okli_of_match_table[] = {
- { .compatible = "openwrt,okli" },
- {},
-};
-
-static struct mtd_part_parser uimage_okli_parser = {
- .owner = THIS_MODULE,
- .name = "okli-fw",
- .of_match_table = mtdsplit_uimage_okli_of_match_table,
- .parse_fn = mtdsplit_uimage_parse_okli,
-};
/**************************************************
* Init
@@ -492,7 +440,6 @@ static int __init mtdsplit_uimage_init(void)
register_mtd_parser(&uimage_netgear_parser);
register_mtd_parser(&uimage_allnet_parser);
register_mtd_parser(&uimage_edimax_parser);
- register_mtd_parser(&uimage_okli_parser);
return 0;
}
diff --git a/target/linux/generic/files/include/dt-bindings/mtd/partitions/uimage.h b/target/linux/generic/files/include/dt-bindings/mtd/partitions/uimage.h
index 29eec38dd28..407e46ce2c4 100644
--- a/target/linux/generic/files/include/dt-bindings/mtd/partitions/uimage.h
+++ b/target/linux/generic/files/include/dt-bindings/mtd/partitions/uimage.h
@@ -188,4 +188,9 @@
#define IH_MAGIC 0x27051956 /* Image Magic Number */
#define IH_NMLEN 32 /* Image Name Length */
+/*
+ * Magic values specific to "openwrt,uimage" partitions
+ */
+#define IH_MAGIC_OKLI 0x4f4b4c49 /* 'OKLI' */
+
#endif /* __UIMAGE_H__ */
diff --git a/target/linux/ramips/dts/mt7620n_sunvalley_filehub.dtsi b/target/linux/ramips/dts/mt7620n_sunvalley_filehub.dtsi
index beca2954dc8..20ff2dbd1c3 100644
--- a/target/linux/ramips/dts/mt7620n_sunvalley_filehub.dtsi
+++ b/target/linux/ramips/dts/mt7620n_sunvalley_filehub.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 {
@@ -31,7 +32,8 @@
#size-cells = <1>;
partition@0 {
- compatible = "openwrt,okli";
+ compatible = "openwrt,uimage", "denx,uimage";
+ openwrt,ih-magic = <IH_MAGIC_OKLI>;
label = "firmware";
reg = <0x0 0x0>;
};