From d6d6c309d82412b67375e3ce70310c073e548db5 Mon Sep 17 00:00:00 2001 From: Rosen Penev Date: Sat, 20 Jun 2026 14:13:12 -0700 Subject: [PATCH] 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 Link: https://github.com/openwrt/openwrt/pull/23893 Signed-off-by: Jonas Jelonek --- .../drivers/mtd/mtdsplit/mtdsplit_bcm63xx.c | 9 +-------- .../drivers/mtd/mtdsplit/mtdsplit_bcm_wfi.c | 8 ++++++++ .../drivers/mtd/mtdsplit/mtdsplit_brnimage.c | 9 +-------- .../files/drivers/mtd/mtdsplit/mtdsplit_elf.c | 9 +-------- .../files/drivers/mtd/mtdsplit/mtdsplit_eva.c | 9 +-------- .../files/drivers/mtd/mtdsplit/mtdsplit_fit.c | 13 +------------ .../drivers/mtd/mtdsplit/mtdsplit_jimage.c | 13 +------------ .../files/drivers/mtd/mtdsplit/mtdsplit_lzma.c | 9 +-------- .../files/drivers/mtd/mtdsplit/mtdsplit_minor.c | 9 +-------- .../drivers/mtd/mtdsplit/mtdsplit_owrt_prolog.c | 9 +-------- .../files/drivers/mtd/mtdsplit/mtdsplit_seama.c | 9 +-------- .../drivers/mtd/mtdsplit/mtdsplit_squashfs.c | 9 +-------- .../drivers/mtd/mtdsplit/mtdsplit_tplink.c | 9 +-------- .../files/drivers/mtd/mtdsplit/mtdsplit_trx.c | 9 +-------- .../drivers/mtd/mtdsplit/mtdsplit_uimage.c | 13 +------------ .../files/drivers/mtd/mtdsplit/mtdsplit_wrgg.c | 9 +-------- .../430-mtd-add-myloader-partition-parser.patch | 17 ++--------------- .../430-mtd-add-myloader-partition-parser.patch | 17 ++--------------- 18 files changed, 27 insertions(+), 162 deletions(-) diff --git a/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_bcm63xx.c b/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_bcm63xx.c index cdb9bf0d771..e66e7309910 100644 --- a/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_bcm63xx.c +++ b/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_bcm63xx.c @@ -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); diff --git a/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_bcm_wfi.c b/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_bcm_wfi.c index d8bcfb7f6e5..41e87e3b5c5 100644 --- a/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_bcm_wfi.c +++ b/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_bcm_wfi.c @@ -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); diff --git a/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_brnimage.c b/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_brnimage.c index 4cb5d90aa71..f029f726de5 100644 --- a/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_brnimage.c +++ b/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_brnimage.c @@ -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); diff --git a/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_elf.c b/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_elf.c index 68e85cc9bf6..ca85ea8e5df 100644 --- a/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_elf.c +++ b/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_elf.c @@ -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); diff --git a/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_eva.c b/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_eva.c index e6a61d78116..93fe5b5e74e 100644 --- a/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_eva.c +++ b/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_eva.c @@ -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); diff --git a/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_fit.c b/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_fit.c index 7f38e6d30c2..2afc19d09f4 100644 --- a/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_fit.c +++ b/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_fit.c @@ -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); diff --git a/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_jimage.c b/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_jimage.c index 19a5e1a5715..c921593b981 100644 --- a/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_jimage.c +++ b/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_jimage.c @@ -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); diff --git a/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_lzma.c b/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_lzma.c index 44672242700..71e01ac7ea4 100644 --- a/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_lzma.c +++ b/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_lzma.c @@ -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); diff --git a/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_minor.c b/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_minor.c index 71c937868a2..55cb9ce25ba 100644 --- a/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_minor.c +++ b/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_minor.c @@ -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); diff --git a/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_owrt_prolog.c b/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_owrt_prolog.c index 846652137db..c675aff9f38 100644 --- a/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_owrt_prolog.c +++ b/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_owrt_prolog.c @@ -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); diff --git a/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_seama.c b/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_seama.c index 9f7063fa233..5c39397730b 100644 --- a/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_seama.c +++ b/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_seama.c @@ -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); diff --git a/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_squashfs.c b/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_squashfs.c index f6353da65b0..ba929c5e38e 100644 --- a/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_squashfs.c +++ b/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_squashfs.c @@ -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); diff --git a/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_tplink.c b/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_tplink.c index ba446be3007..03cc7dd2f39 100644 --- a/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_tplink.c +++ b/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_tplink.c @@ -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); diff --git a/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_trx.c b/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_trx.c index 3621b53f743..869b92cdf14 100644 --- a/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_trx.c +++ b/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_trx.c @@ -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); 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 f693cef3ad7..a2d2ba1622f 100644 --- a/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_uimage.c +++ b/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_uimage.c @@ -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); diff --git a/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_wrgg.c b/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_wrgg.c index 84c8b97e93d..319990a876b 100644 --- a/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_wrgg.c +++ b/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_wrgg.c @@ -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); diff --git a/target/linux/generic/pending-6.12/430-mtd-add-myloader-partition-parser.patch b/target/linux/generic/pending-6.12/430-mtd-add-myloader-partition-parser.patch index 8d308c989e3..a6b1c613f37 100644 --- a/target/linux/generic/pending-6.12/430-mtd-add-myloader-partition-parser.patch +++ b/target/linux/generic/pending-6.12/430-mtd-add-myloader-partition-parser.patch @@ -45,7 +45,7 @@ Signed-off-by: Adrian Schmutzler 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 + .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 "); +MODULE_DESCRIPTION("Parsing code for MyLoader partition tables"); diff --git a/target/linux/generic/pending-6.18/430-mtd-add-myloader-partition-parser.patch b/target/linux/generic/pending-6.18/430-mtd-add-myloader-partition-parser.patch index 8d308c989e3..a6b1c613f37 100644 --- a/target/linux/generic/pending-6.18/430-mtd-add-myloader-partition-parser.patch +++ b/target/linux/generic/pending-6.18/430-mtd-add-myloader-partition-parser.patch @@ -45,7 +45,7 @@ Signed-off-by: Adrian Schmutzler 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 + .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 "); +MODULE_DESCRIPTION("Parsing code for MyLoader partition tables"); -- 2.47.3