mirror of
https://github.com/torvalds/linux.git
synced 2026-09-24 06:24:02 +02:00
pinctrl: mediatek: mt7986: register both platform drivers from a single initcall
The MT7986 driver registers two separate platform drivers (mt7986a and mt7986b) and used to call arch_initcall() twice, once for each. This is fine while the driver is built-in, but a single translation unit can only provide one module_init(). Since arch_initcall() expands to module_init() when built as a module, having two of them would break the module build with a redefinition of init_module()/__inittest(). Fold both platform drivers into a single driver array and register them from one initcall using platform_register_drivers(), matching the shape of the other MediaTek pinctrl SoC drivers. platform_register_drivers() also rolls back the first registration if the second one fails. No functional change for built-in builds; this is a preparatory cleanup for enabling module builds. Signed-off-by: Justin Yeh <justin.yeh@mediatek.com> Reviewed-by: Chen-Yu Tsai <wenst@chromium.org> Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> Signed-off-by: Linus Walleij <linusw@kernel.org>
This commit is contained in:
parent
dab3c7afde
commit
e3b4295e0d
|
|
@ -997,17 +997,16 @@ static struct platform_driver mt7986b_pinctrl_driver = {
|
|||
.probe = mt7986b_pinctrl_probe,
|
||||
};
|
||||
|
||||
static int __init mt7986a_pinctrl_init(void)
|
||||
{
|
||||
return platform_driver_register(&mt7986a_pinctrl_driver);
|
||||
}
|
||||
static struct platform_driver * const mt7986_pinctrl_drivers[] = {
|
||||
&mt7986a_pinctrl_driver,
|
||||
&mt7986b_pinctrl_driver,
|
||||
};
|
||||
|
||||
static int __init mt7986b_pinctrl_init(void)
|
||||
static int __init mt7986_pinctrl_init(void)
|
||||
{
|
||||
return platform_driver_register(&mt7986b_pinctrl_driver);
|
||||
return platform_register_drivers(mt7986_pinctrl_drivers,
|
||||
ARRAY_SIZE(mt7986_pinctrl_drivers));
|
||||
}
|
||||
|
||||
arch_initcall(mt7986a_pinctrl_init);
|
||||
arch_initcall(mt7986b_pinctrl_init);
|
||||
arch_initcall(mt7986_pinctrl_init);
|
||||
|
||||
MODULE_IMPORT_NS("MTK_PINCTRL");
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user