From: Jim Quinlan <jim2101024@xxxxxxxxx> Because regulators are started with subsys_initcall(), and gpio references may be contained in the regulators, it makes sense to start the brcmstb-gpio's with a subsys_initcall(). The order within the drivers/Makefile ensures that the gpio initialization happens prior to the regulator's initialization. We need to unroll module_platform_driver() now to allow this and have custom exit and init module functions to control the initialization level. Signed-off-by: Jim Quinlan <jim2101024@xxxxxxxxx> Signed-off-by: Florian Fainelli <f.fainelli@xxxxxxxxx> --- drivers/gpio/gpio-brcmstb.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/drivers/gpio/gpio-brcmstb.c b/drivers/gpio/gpio-brcmstb.c index dc3f0395693b..3618b9fd0cba 100644 --- a/drivers/gpio/gpio-brcmstb.c +++ b/drivers/gpio/gpio-brcmstb.c @@ -535,7 +535,18 @@ static struct platform_driver brcmstb_gpio_driver = { .probe = brcmstb_gpio_probe, .remove = brcmstb_gpio_remove, }; -module_platform_driver(brcmstb_gpio_driver); + +static int __init brcmstb_gpio_init(void) +{ + return platform_driver_register(&brcmstb_gpio_driver); +} +subsys_initcall(brcmstb_gpio_init); + +static void __exit brcmstb_gpio_exit(void) +{ + platform_driver_unregister(&brcmstb_gpio_driver); +} +module_exit(brcmstb_gpio_exit); MODULE_AUTHOR("Gregory Fong"); MODULE_DESCRIPTION("Driver for Broadcom BRCMSTB SoC UPG GPIO"); -- 2.1.0