MLK-11395-1: reset: register gpio-reset driver in arch_initcall
It's a little bit late to register gpio-reset driver at module_init time, because gpio-reset provides reset control via gpio for other devices which are mostly probed at module_init time too. And it becomes even worse, when the gpio comes from IO expander on I2C bus, e.g. pca953x. In that case, gpio-reset needs to be ready before I2C bus driver which is generally ready at subsys_initcall time. Let's register gpio-reset driver in arch_initcall() to have it ready early enough. The defer probe mechanism is not used here, because a reset controller driver should be reasonably registered early than other devices. More importantly, defer probe doe not help in some nasty cases, e.g. the gpio-pca953x device itself needs a reset from gpio-reset driver start working. [shawn.guo: cherry-pick commit 7153f05108ef from imx_3.10.y] Signed-off-by: Shawn Guo <shawn.guo@freescale.com> (cherry picked from commit 11e3543010d4ed50db78a5fc809f24c89e8c6e30) Signed-off-by: Arulpandiyan Vadivel <arulpandiyan_vadivel@mentor.com>5.4-rM2-2.2.x-imx-squashed
parent
5f83111d4f
commit
76d42334db
|
@ -165,7 +165,17 @@ static struct platform_driver gpio_reset_driver = {
|
|||
},
|
||||
};
|
||||
|
||||
module_platform_driver(gpio_reset_driver);
|
||||
static int __init gpio_reset_init(void)
|
||||
{
|
||||
return platform_driver_register(&gpio_reset_driver);
|
||||
}
|
||||
arch_initcall(gpio_reset_init);
|
||||
|
||||
static void __exit gpio_reset_exit(void)
|
||||
{
|
||||
platform_driver_unregister(&gpio_reset_driver);
|
||||
}
|
||||
module_exit(gpio_reset_exit);
|
||||
|
||||
MODULE_AUTHOR("Philipp Zabel <p.zabel@pengutronix.de>");
|
||||
MODULE_DESCRIPTION("gpio reset controller");
|
||||
|
|
Loading…
Reference in New Issue