kernel: use module_mtd_part_parser for mtdsplit

Remove boilerplate.

Also added deregister for bcm_wifi for consistency. Not needed as it's
builtin but still good to have.

There's a slight change from subsys_initcall to module_init. Not really
an issue for mtd drivers. No driver in linux upstream's drivers/mtd uses
subsys_initcall.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/23893
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
This commit is contained in:
Rosen Penev
2026-06-20 14:13:12 -07:00
committed by Jonas Jelonek
parent 8db23dc91a
commit d6d6c309d8
18 changed files with 27 additions and 162 deletions
@@ -176,11 +176,4 @@ static struct mtd_part_parser mtdsplit_bcm63xx_parser = {
.type = MTD_PARSER_TYPE_FIRMWARE,
};
static int __init mtdsplit_bcm63xx_init(void)
{
register_mtd_parser(&mtdsplit_bcm63xx_parser);
return 0;
}
module_init(mtdsplit_bcm63xx_init);
module_mtd_part_parser(mtdsplit_bcm63xx_parser);
@@ -532,4 +532,12 @@ static int __init mtdsplit_bcm_wfi_init(void)
return 0;
}
static void __exit mtdsplit_bcm_wfi_exit(void)
{
deregister_mtd_parser(&mtdsplit_bcm_wfi_parser);
deregister_mtd_parser(&mtdsplit_bcm_wfi_split_parser);
deregister_mtd_parser(&mtdsplit_ser_wfi_parser);
}
module_init(mtdsplit_bcm_wfi_init);
module_exit(mtdsplit_bcm_wfi_exit);
@@ -94,11 +94,4 @@ static struct mtd_part_parser mtdsplit_brnimage_parser = {
.type = MTD_PARSER_TYPE_FIRMWARE,
};
static int __init mtdsplit_brnimage_init(void)
{
register_mtd_parser(&mtdsplit_brnimage_parser);
return 0;
}
subsys_initcall(mtdsplit_brnimage_init);
module_mtd_part_parser(mtdsplit_brnimage_parser);
@@ -277,11 +277,4 @@ static struct mtd_part_parser mtdsplit_elf_parser = {
.type = MTD_PARSER_TYPE_FIRMWARE,
};
static int __init mtdsplit_elf_init(void)
{
register_mtd_parser(&mtdsplit_elf_parser);
return 0;
}
subsys_initcall(mtdsplit_elf_init);
module_mtd_part_parser(mtdsplit_elf_parser);
@@ -93,11 +93,4 @@ static struct mtd_part_parser mtdsplit_eva_parser = {
.type = MTD_PARSER_TYPE_FIRMWARE,
};
static int __init mtdsplit_eva_init(void)
{
register_mtd_parser(&mtdsplit_eva_parser);
return 0;
}
subsys_initcall(mtdsplit_eva_init);
module_mtd_part_parser(mtdsplit_eva_parser);
@@ -351,15 +351,4 @@ static struct mtd_part_parser uimage_parser = {
.type = MTD_PARSER_TYPE_FIRMWARE,
};
/**************************************************
* Init
**************************************************/
static int __init mtdsplit_fit_init(void)
{
register_mtd_parser(&uimage_parser);
return 0;
}
module_init(mtdsplit_fit_init);
module_mtd_part_parser(uimage_parser);
@@ -270,15 +270,4 @@ static struct mtd_part_parser jimage_generic_parser = {
.type = MTD_PARSER_TYPE_FIRMWARE,
};
/**************************************************
* Init
**************************************************/
static int __init mtdsplit_jimage_init(void)
{
register_mtd_parser(&jimage_generic_parser);
return 0;
}
module_init(mtdsplit_jimage_init);
module_mtd_part_parser(jimage_generic_parser);
@@ -99,11 +99,4 @@ static struct mtd_part_parser mtdsplit_lzma_parser = {
.type = MTD_PARSER_TYPE_FIRMWARE,
};
static int __init mtdsplit_lzma_init(void)
{
register_mtd_parser(&mtdsplit_lzma_parser);
return 0;
}
subsys_initcall(mtdsplit_lzma_init);
module_mtd_part_parser(mtdsplit_lzma_parser);
@@ -118,11 +118,4 @@ static struct mtd_part_parser mtdsplit_minor_parser = {
.type = MTD_PARSER_TYPE_FIRMWARE,
};
static int __init mtdsplit_minor_init(void)
{
register_mtd_parser(&mtdsplit_minor_parser);
return 0;
}
subsys_initcall(mtdsplit_minor_init);
module_mtd_part_parser(mtdsplit_minor_parser);
@@ -124,11 +124,4 @@ static struct mtd_part_parser mtdsplit_owrt_prolog_parser = {
.type = MTD_PARSER_TYPE_FIRMWARE,
};
static int __init mtdsplit_owrt_prolog_init(void)
{
register_mtd_parser(&mtdsplit_owrt_prolog_parser);
return 0;
}
subsys_initcall(mtdsplit_owrt_prolog_init);
module_mtd_part_parser(mtdsplit_owrt_prolog_parser);
@@ -108,11 +108,4 @@ static struct mtd_part_parser mtdsplit_seama_parser = {
.type = MTD_PARSER_TYPE_FIRMWARE,
};
static int __init mtdsplit_seama_init(void)
{
register_mtd_parser(&mtdsplit_seama_parser);
return 0;
}
subsys_initcall(mtdsplit_seama_init);
module_mtd_part_parser(mtdsplit_seama_parser);
@@ -62,11 +62,4 @@ static struct mtd_part_parser mtdsplit_squashfs_parser = {
.type = MTD_PARSER_TYPE_ROOTFS,
};
static int __init mtdsplit_squashfs_init(void)
{
register_mtd_parser(&mtdsplit_squashfs_parser);
return 0;
}
subsys_initcall(mtdsplit_squashfs_init);
module_mtd_part_parser(mtdsplit_squashfs_parser);
@@ -166,11 +166,4 @@ static struct mtd_part_parser mtdsplit_tplink_parser = {
.type = MTD_PARSER_TYPE_FIRMWARE,
};
static int __init mtdsplit_tplink_init(void)
{
register_mtd_parser(&mtdsplit_tplink_parser);
return 0;
}
subsys_initcall(mtdsplit_tplink_init);
module_mtd_part_parser(mtdsplit_tplink_parser);
@@ -145,11 +145,4 @@ static struct mtd_part_parser trx_parser = {
.type = MTD_PARSER_TYPE_FIRMWARE,
};
static int __init mtdsplit_trx_init(void)
{
register_mtd_parser(&trx_parser);
return 0;
}
module_init(mtdsplit_trx_init);
module_mtd_part_parser(trx_parser);
@@ -269,15 +269,4 @@ static struct mtd_part_parser uimage_generic_parser = {
.type = MTD_PARSER_TYPE_FIRMWARE,
};
/**************************************************
* Init
**************************************************/
static int __init mtdsplit_uimage_init(void)
{
register_mtd_parser(&uimage_generic_parser);
return 0;
}
module_init(mtdsplit_uimage_init);
module_mtd_part_parser(uimage_generic_parser);
@@ -132,11 +132,4 @@ static struct mtd_part_parser mtdsplit_wrgg_parser = {
.type = MTD_PARSER_TYPE_FIRMWARE,
};
static int __init mtdsplit_wrgg_init(void)
{
register_mtd_parser(&mtdsplit_wrgg_parser);
return 0;
}
subsys_initcall(mtdsplit_wrgg_init);
module_mtd_part_parser(mtdsplit_wrgg_parser);
@@ -45,7 +45,7 @@ Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
ofpart-$(CONFIG_MTD_OF_PARTS_BCM4908) += ofpart_bcm4908.o
--- /dev/null
+++ b/drivers/mtd/parsers/myloader.c
@@ -0,0 +1,181 @@
@@ -0,0 +1,168 @@
+/*
+ * Parse MyLoader-style flash partition tables and produce a Linux partition
+ * array to match.
@@ -209,20 +209,7 @@ Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
+ .name = "MyLoader",
+};
+
+static int __init myloader_mtd_parser_init(void)
+{
+ register_mtd_parser(&myloader_mtd_parser);
+
+ return 0;
+}
+
+static void __exit myloader_mtd_parser_exit(void)
+{
+ deregister_mtd_parser(&myloader_mtd_parser);
+}
+
+module_init(myloader_mtd_parser_init);
+module_exit(myloader_mtd_parser_exit);
+module_mtd_part_parser(myloader_mtd_parser);
+
+MODULE_AUTHOR("Gabor Juhos <juhosg@openwrt.org>");
+MODULE_DESCRIPTION("Parsing code for MyLoader partition tables");
@@ -45,7 +45,7 @@ Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
ofpart-$(CONFIG_MTD_OF_PARTS_BCM4908) += ofpart_bcm4908.o
--- /dev/null
+++ b/drivers/mtd/parsers/myloader.c
@@ -0,0 +1,181 @@
@@ -0,0 +1,168 @@
+/*
+ * Parse MyLoader-style flash partition tables and produce a Linux partition
+ * array to match.
@@ -209,20 +209,7 @@ Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
+ .name = "MyLoader",
+};
+
+static int __init myloader_mtd_parser_init(void)
+{
+ register_mtd_parser(&myloader_mtd_parser);
+
+ return 0;
+}
+
+static void __exit myloader_mtd_parser_exit(void)
+{
+ deregister_mtd_parser(&myloader_mtd_parser);
+}
+
+module_init(myloader_mtd_parser_init);
+module_exit(myloader_mtd_parser_exit);
+module_mtd_part_parser(myloader_mtd_parser);
+
+MODULE_AUTHOR("Gabor Juhos <juhosg@openwrt.org>");
+MODULE_DESCRIPTION("Parsing code for MyLoader partition tables");