[PATCH v2 08/10] kernel: mtdsplit_uimage: replace "netgear, uimage" parser
Bjørn Mork
bjorn at mork.no
Mon Nov 30 17:19:33 EST 2020
The "netgear,uimage" parser can be replaced by the generic
parser using device specific openwrt,ih-magic and
openwrt,ih-type properties.
Device tree properties for the following devices have not
been set, as they have been dropped from OpenWrt with the
removal of the ar71xx target:
FW_MAGIC_WNR2000V1 0x32303031
FW_MAGIC_WNR2000V4 0x32303034
FW_MAGIC_WNR1000V2_VC 0x31303030
FW_MAGIC_WPN824N 0x31313030
Signed-off-by: Bjørn Mork <bjorn at mork.no>
---
.../linux/ath79/dts/ar7161_netgear_wndr.dtsi | 1 +
.../ath79/dts/ar7161_netgear_wndr3700-v2.dts | 4 +-
.../ath79/dts/ar7161_netgear_wndr3700.dts | 4 +-
.../ath79/dts/ar7161_netgear_wndr3800.dts | 4 +-
.../ath79/dts/ar7161_netgear_wndr3800ch.dts | 4 +-
.../ath79/dts/ar7161_netgear_wndrmac-v1.dts | 4 +-
.../ath79/dts/ar7161_netgear_wndrmac-v2.dts | 4 +-
.../ath79/dts/ar7240_netgear_wnr1000-v2.dts | 5 +-
.../ath79/dts/ar7240_netgear_wnr612-v2.dtsi | 5 +-
.../ath79/dts/ar7241_netgear_wnr2000-v3.dts | 5 +-
.../ath79/dts/ar7241_netgear_wnr2200-16m.dts | 4 +-
.../ath79/dts/ar7241_netgear_wnr2200-8m.dts | 4 +-
.../ath79/dts/ar7241_netgear_wnr2200.dtsi | 1 +
.../linux/ath79/dts/ar9344_netgear_wndr.dtsi | 5 +-
.../drivers/mtd/mtdsplit/mtdsplit_uimage.c | 67 -------------------
.../dts/rtl8380_netgear_gs110tpp-v1.dts | 3 +-
16 files changed, 44 insertions(+), 80 deletions(-)
diff --git a/target/linux/ath79/dts/ar7161_netgear_wndr.dtsi b/target/linux/ath79/dts/ar7161_netgear_wndr.dtsi
index 9e41b6135748..b780183cbb57 100644
--- a/target/linux/ath79/dts/ar7161_netgear_wndr.dtsi
+++ b/target/linux/ath79/dts/ar7161_netgear_wndr.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 {
diff --git a/target/linux/ath79/dts/ar7161_netgear_wndr3700-v2.dts b/target/linux/ath79/dts/ar7161_netgear_wndr3700-v2.dts
index 0543c471130c..6d78c019dac1 100644
--- a/target/linux/ath79/dts/ar7161_netgear_wndr3700-v2.dts
+++ b/target/linux/ath79/dts/ar7161_netgear_wndr3700-v2.dts
@@ -22,7 +22,9 @@
partition at 70000 {
label = "firmware";
reg = <0x070000 0xf80000>;
- compatible = "netgear,uimage";
+ compatible = "openwrt,uimage", "denx,uimage";
+ openwrt,ih-magic = <0x33373031>;
+ openwrt,ih-type = <IH_TYPE_FILESYSTEM>;
};
art: partition at ff0000 {
diff --git a/target/linux/ath79/dts/ar7161_netgear_wndr3700.dts b/target/linux/ath79/dts/ar7161_netgear_wndr3700.dts
index 955dd2edf0f1..ad29d256f6d8 100644
--- a/target/linux/ath79/dts/ar7161_netgear_wndr3700.dts
+++ b/target/linux/ath79/dts/ar7161_netgear_wndr3700.dts
@@ -22,7 +22,9 @@
partition at 70000 {
label = "firmware";
reg = <0x070000 0x780000>;
- compatible = "netgear,uimage";
+ compatible = "openwrt,uimage", "denx,uimage";
+ openwrt,ih-magic = <0x33373030>;
+ openwrt,ih-type = <IH_TYPE_FILESYSTEM>;
};
art: partition at 7f0000 {
diff --git a/target/linux/ath79/dts/ar7161_netgear_wndr3800.dts b/target/linux/ath79/dts/ar7161_netgear_wndr3800.dts
index 41fe401ddb01..80b25492b1b7 100644
--- a/target/linux/ath79/dts/ar7161_netgear_wndr3800.dts
+++ b/target/linux/ath79/dts/ar7161_netgear_wndr3800.dts
@@ -23,7 +23,9 @@
partition at 70000 {
label = "firmware";
reg = <0x070000 0xf80000>;
- compatible = "netgear,uimage";
+ compatible = "openwrt,uimage", "denx,uimage";
+ openwrt,ih-magic = <0x33373031>;
+ openwrt,ih-type = <IH_TYPE_FILESYSTEM>;
};
art: partition at ff0000 {
diff --git a/target/linux/ath79/dts/ar7161_netgear_wndr3800ch.dts b/target/linux/ath79/dts/ar7161_netgear_wndr3800ch.dts
index 79569adba87f..cc51aca8b636 100644
--- a/target/linux/ath79/dts/ar7161_netgear_wndr3800ch.dts
+++ b/target/linux/ath79/dts/ar7161_netgear_wndr3800ch.dts
@@ -23,7 +23,9 @@
partition at 70000 {
label = "firmware";
reg = <0x070000 0xf80000>;
- compatible = "netgear,uimage";
+ compatible = "openwrt,uimage", "denx,uimage";
+ openwrt,ih-magic = <0x33373031>;
+ openwrt,ih-type = <IH_TYPE_FILESYSTEM>;
};
art: partition at ff0000 {
diff --git a/target/linux/ath79/dts/ar7161_netgear_wndrmac-v1.dts b/target/linux/ath79/dts/ar7161_netgear_wndrmac-v1.dts
index 65d2393c67a3..8604414d1998 100644
--- a/target/linux/ath79/dts/ar7161_netgear_wndrmac-v1.dts
+++ b/target/linux/ath79/dts/ar7161_netgear_wndrmac-v1.dts
@@ -22,7 +22,9 @@
partition at 70000 {
label = "firmware";
reg = <0x070000 0xf80000>;
- compatible = "netgear,uimage";
+ compatible = "openwrt,uimage", "denx,uimage";
+ openwrt,ih-magic = <0x33373031>;
+ openwrt,ih-type = <IH_TYPE_FILESYSTEM>;
};
art: partition at ff0000 {
diff --git a/target/linux/ath79/dts/ar7161_netgear_wndrmac-v2.dts b/target/linux/ath79/dts/ar7161_netgear_wndrmac-v2.dts
index f7641203cf01..bebd96c72f09 100644
--- a/target/linux/ath79/dts/ar7161_netgear_wndrmac-v2.dts
+++ b/target/linux/ath79/dts/ar7161_netgear_wndrmac-v2.dts
@@ -23,7 +23,9 @@
partition at 70000 {
label = "firmware";
reg = <0x070000 0xf80000>;
- compatible = "netgear,uimage";
+ compatible = "openwrt,uimage", "denx,uimage";
+ openwrt,ih-magic = <0x33373031>;
+ openwrt,ih-type = <IH_TYPE_FILESYSTEM>;
};
art: partition at ff0000 {
diff --git a/target/linux/ath79/dts/ar7240_netgear_wnr1000-v2.dts b/target/linux/ath79/dts/ar7240_netgear_wnr1000-v2.dts
index d67af04d1cbd..a93fcc5d238a 100644
--- a/target/linux/ath79/dts/ar7240_netgear_wnr1000-v2.dts
+++ b/target/linux/ath79/dts/ar7240_netgear_wnr1000-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>
/ {
compatible = "netgear,wnr1000-v2", "qca,ar7240";
@@ -160,7 +161,9 @@
partition at 50000 {
label = "firmware";
reg = <0x50000 0x3a0000>;
- compatible = "netgear,uimage";
+ compatible = "openwrt,uimage", "denx,uimage";
+ openwrt,ih-magic = <0x31303031>;
+ openwrt,ih-type = <IH_TYPE_FILESYSTEM>;
};
art: partition at 3f0000 {
diff --git a/target/linux/ath79/dts/ar7240_netgear_wnr612-v2.dtsi b/target/linux/ath79/dts/ar7240_netgear_wnr612-v2.dtsi
index 44dbe9c55ec7..c2b66b253596 100644
--- a/target/linux/ath79/dts/ar7240_netgear_wnr612-v2.dtsi
+++ b/target/linux/ath79/dts/ar7240_netgear_wnr612-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 {
@@ -91,7 +92,9 @@
};
partition at 50000 {
- compatible = "netgear,uimage";
+ compatible = "openwrt,uimage", "denx,uimage";
+ openwrt,ih-magic = <0x32303631>;
+ openwrt,ih-type = <IH_TYPE_FILESYSTEM>;
reg = <0x50000 0x3a0000>;
label = "firmware";
};
diff --git a/target/linux/ath79/dts/ar7241_netgear_wnr2000-v3.dts b/target/linux/ath79/dts/ar7241_netgear_wnr2000-v3.dts
index 1b124f3f2e6b..319a9c6dc7c8 100644
--- a/target/linux/ath79/dts/ar7241_netgear_wnr2000-v3.dts
+++ b/target/linux/ath79/dts/ar7241_netgear_wnr2000-v3.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 = "netgear,wnr2000-v3", "qca,ar7241";
@@ -163,7 +164,9 @@
partition at 50000 {
label = "firmware";
reg = <0x50000 0x3a0000>;
- compatible = "netgear,uimage";
+ compatible = "openwrt,uimage", "denx,uimage";
+ openwrt,ih-magic = <0x32303033>;
+ openwrt,ih-type = <IH_TYPE_FILESYSTEM>;
};
art: partition at 3f0000 {
diff --git a/target/linux/ath79/dts/ar7241_netgear_wnr2200-16m.dts b/target/linux/ath79/dts/ar7241_netgear_wnr2200-16m.dts
index 2c7443654788..3842238e540e 100644
--- a/target/linux/ath79/dts/ar7241_netgear_wnr2200-16m.dts
+++ b/target/linux/ath79/dts/ar7241_netgear_wnr2200-16m.dts
@@ -22,7 +22,9 @@
partition at 50000 {
label = "firmware";
reg = <0x50000 0xfa0000>;
- compatible = "netgear,uimage";
+ compatible = "openwrt,uimage", "denx,uimage";
+ openwrt,ih-magic = <0x32323030>;
+ openwrt,ih-type = <IH_TYPE_FILESYSTEM>;
};
art: partition at ff0000 {
diff --git a/target/linux/ath79/dts/ar7241_netgear_wnr2200-8m.dts b/target/linux/ath79/dts/ar7241_netgear_wnr2200-8m.dts
index c23cb6e00250..4eb15e23136f 100644
--- a/target/linux/ath79/dts/ar7241_netgear_wnr2200-8m.dts
+++ b/target/linux/ath79/dts/ar7241_netgear_wnr2200-8m.dts
@@ -22,7 +22,9 @@
partition at 50000 {
label = "firmware";
reg = <0x50000 0x7a0000>;
- compatible = "netgear,uimage";
+ compatible = "openwrt,uimage", "denx,uimage";
+ openwrt,ih-magic = <0x32323030>;
+ openwrt,ih-type = <IH_TYPE_FILESYSTEM>;
};
art: partition at 7f0000 {
diff --git a/target/linux/ath79/dts/ar7241_netgear_wnr2200.dtsi b/target/linux/ath79/dts/ar7241_netgear_wnr2200.dtsi
index 62614166db29..c7074d56e5d2 100644
--- a/target/linux/ath79/dts/ar7241_netgear_wnr2200.dtsi
+++ b/target/linux/ath79/dts/ar7241_netgear_wnr2200.dtsi
@@ -4,6 +4,7 @@
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
+#include <dt-bindings/mtd/partitions/uimage.h>
/ {
chosen {
diff --git a/target/linux/ath79/dts/ar9344_netgear_wndr.dtsi b/target/linux/ath79/dts/ar9344_netgear_wndr.dtsi
index 92b0beccd7c9..bdc77253e103 100644
--- a/target/linux/ath79/dts/ar9344_netgear_wndr.dtsi
+++ b/target/linux/ath79/dts/ar9344_netgear_wndr.dtsi
@@ -4,6 +4,7 @@
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
+#include <dt-bindings/mtd/partitions/uimage.h>
/ {
chosen {
@@ -161,7 +162,9 @@
partition at 6c0000 {
label = "firmware";
reg = <0x6c0000 0x1900000>;
- compatible = "netgear,uimage";
+ compatible = "openwrt,uimage", "denx,uimage";
+ openwrt,ih-magic = <0x33373033>;
+ openwrt,ih-type = <IH_TYPE_FILESYSTEM>;
};
partition at 1fc0000 {
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 ef2d857abb04..c29eb6234bc2 100644
--- a/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_uimage.c
+++ b/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_uimage.c
@@ -271,72 +271,6 @@ static struct mtd_part_parser uimage_generic_parser = {
.type = MTD_PARSER_TYPE_FIRMWARE,
};
-#define FW_MAGIC_GS110TPPV1 0x4e474520
-#define FW_MAGIC_WNR2000V1 0x32303031
-#define FW_MAGIC_WNR2000V3 0x32303033
-#define FW_MAGIC_WNR2000V4 0x32303034
-#define FW_MAGIC_WNR2200 0x32323030
-#define FW_MAGIC_WNR612V2 0x32303631
-#define FW_MAGIC_WNR1000V2 0x31303031
-#define FW_MAGIC_WNR1000V2_VC 0x31303030
-#define FW_MAGIC_WNDR3700 0x33373030
-#define FW_MAGIC_WNDR3700V2 0x33373031
-#define FW_MAGIC_WPN824N 0x31313030
-
-static ssize_t uimage_verify_wndr3700(u_char *buf, size_t len, u32 ih_magic, u32 ih_type)
-{
- struct uimage_header *header = (struct uimage_header *)buf;
- uint8_t expected_type = IH_TYPE_FILESYSTEM;
-
- switch (be32_to_cpu(header->ih_magic)) {
- case FW_MAGIC_GS110TPPV1:
- case FW_MAGIC_WNR2000V4:
- expected_type = IH_TYPE_KERNEL;
- break;
- case FW_MAGIC_WNR612V2:
- case FW_MAGIC_WNR1000V2:
- case FW_MAGIC_WNR1000V2_VC:
- case FW_MAGIC_WNR2000V1:
- case FW_MAGIC_WNR2000V3:
- case FW_MAGIC_WNR2200:
- case FW_MAGIC_WNDR3700:
- case FW_MAGIC_WNDR3700V2:
- case FW_MAGIC_WPN824N:
- break;
- default:
- return -EINVAL;
- }
-
- if (header->ih_os != IH_OS_LINUX ||
- header->ih_type != expected_type)
- return -EINVAL;
-
- return 0;
-}
-
-static int
-mtdsplit_uimage_parse_netgear(struct mtd_info *master,
- const struct mtd_partition **pparts,
- struct mtd_part_parser_data *data)
-{
- return __mtdsplit_parse_uimage(master, pparts, data,
- uimage_verify_wndr3700);
-}
-
-static const struct of_device_id mtdsplit_uimage_netgear_of_match_table[] = {
- { .compatible = "netgear,uimage" },
- {},
-};
-
-static struct mtd_part_parser uimage_netgear_parser = {
- .owner = THIS_MODULE,
- .name = "netgear-fw",
- .of_match_table = mtdsplit_uimage_netgear_of_match_table,
- .parse_fn = mtdsplit_uimage_parse_netgear,
- .type = MTD_PARSER_TYPE_FIRMWARE,
-
-};
-
/**************************************************
* Edimax
**************************************************/
@@ -393,7 +327,6 @@ static struct mtd_part_parser uimage_edimax_parser = {
static int __init mtdsplit_uimage_init(void)
{
register_mtd_parser(&uimage_generic_parser);
- register_mtd_parser(&uimage_netgear_parser);
register_mtd_parser(&uimage_edimax_parser);
return 0;
diff --git a/target/linux/realtek/dts/rtl8380_netgear_gs110tpp-v1.dts b/target/linux/realtek/dts/rtl8380_netgear_gs110tpp-v1.dts
index 1bf175b7bf94..cf4f7dcdc4b2 100644
--- a/target/linux/realtek/dts/rtl8380_netgear_gs110tpp-v1.dts
+++ b/target/linux/realtek/dts/rtl8380_netgear_gs110tpp-v1.dts
@@ -66,7 +66,8 @@
};
partition at 300000{
label = "firmware";
- compatible = "netgear,uimage";
+ compatible = "openwrt,uimage", "denx,uimage";
+ openwrt,ih-magic = <0x4e474520>;
reg = <0x0300000 0x1d00000>;
};
};
--
2.20.1
More information about the openwrt-devel
mailing list