[openwrt/openwrt] kernel: mtdsplit_uimage: replace "openwrt, okli" parser

LEDE Commits lede-commits at lists.infradead.org
Fri Jan 22 15:03:32 EST 2021


ynezz pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/01a1e21863aa30c7a2c252ff06b9aef0cf957970

commit 01a1e21863aa30c7a2c252ff06b9aef0cf957970
Author: Bjørn Mork <bjorn at mork.no>
AuthorDate: Wed Jan 20 18:36:48 2021 +0100

    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 at protonmail.com> # EAP300 v2, ENS202EXT and ENH202
    Signed-off-by: Bjørn Mork <bjorn at mork.no>
---
 .../linux/ath79/dts/ar7240_engenius_enh202-v1.dts  |  4 +-
 .../linux/ath79/dts/ar7242_engenius_eap350-v1.dts  |  4 +-
 .../linux/ath79/dts/ar7242_engenius_ecb350-v1.dts  |  4 +-
 .../linux/ath79/dts/ar9341_engenius_eap300-v2.dts  |  4 +-
 .../ath79/dts/ar9341_engenius_ens202ext-v1.dts     |  4 +-
 target/linux/ath79/dts/ar9341_pisen_wmb001n.dts    |  4 +-
 target/linux/ath79/dts/ar9344_engenius_exx600.dtsi |  4 +-
 .../ath79/dts/qca9557_engenius_enstationac-v1.dts  |  4 +-
 target/linux/ath79/dts/qca9558_belkin_f9x-v2.dtsi  |  4 +-
 .../files/drivers/mtd/mtdsplit/mtdsplit_uimage.c   | 53 ----------------------
 .../include/dt-bindings/mtd/partitions/uimage.h    |  5 ++
 .../ramips/dts/mt7620n_sunvalley_filehub.dtsi      |  4 +-
 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 1d26a9765b..7c819e88e7 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 at 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 4001897adf..39a8a7f25f 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 at 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 e73082267c..0e06ee0128 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 at 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 3121ec0e01..7aa89a4cce 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 at 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 6e296ab496..38e9b381c0 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 at 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 aaa4d1576b..98236d44a6 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 at 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 5ae2ea66ef..340357b8de 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 at 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 f9801693c5..2cf800cddc 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 at 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 af22f6681a..624e20096f 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 at 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 58c40e9ec7..32c027d3e9 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 29eec38dd2..407e46ce2c 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 beca2954dc..20ff2dbd1c 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 at 0 {
-				compatible = "openwrt,okli";
+				compatible = "openwrt,uimage", "denx,uimage";
+				openwrt,ih-magic = <IH_MAGIC_OKLI>;
 				label = "firmware";
 				reg = <0x0 0x0>;
 			};



More information about the lede-commits mailing list