summaryrefslogtreecommitdiffstats
path: root/drivers/gpio/max732x.c
diff options
context:
space:
mode:
authorDavid Brownell2008-10-16 07:03:13 +0200
committerLinus Torvalds2008-10-16 20:21:40 +0200
commit2f8d11971b9f54362437ce70f4d1911f0996d542 (patch)
tree48fb0df29994e976325761bd9e07ce107a96b6d5 /drivers/gpio/max732x.c
parentgpio_free might sleep, generic part (diff)
downloadkernel-qcow2-linux-2f8d11971b9f54362437ce70f4d1911f0996d542.tar.gz
kernel-qcow2-linux-2f8d11971b9f54362437ce70f4d1911f0996d542.tar.xz
kernel-qcow2-linux-2f8d11971b9f54362437ce70f4d1911f0996d542.zip
gpio: i2c expanders use subsys_init
Make the I2C external GPIO expander drivers register themselves at subsys_initcall() time when they're statically linked. SOC-integrated GPIOs are available starting very early -- early in arch_initcall() at latest, but often even before initcalls start to run -- so this improves consistency, so more subsystems can rely on GPIOs in their own subsys_initcall() code. (This isn't a theoretical problem. This is one of several patches needed to resolve oopsing observed when statically linking kernels on a DaVinci EVM. Its pcf857x GPIOs needed to be available well before some other drivers initialized.) Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Cc: Jean Delvare <khali@linux-fr.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/gpio/max732x.c')
-rw-r--r--drivers/gpio/max732x.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/gpio/max732x.c b/drivers/gpio/max732x.c
index b51c8135ca28..55ae9a41897a 100644
--- a/drivers/gpio/max732x.c
+++ b/drivers/gpio/max732x.c
@@ -372,7 +372,10 @@ static int __init max732x_init(void)
{
return i2c_add_driver(&max732x_driver);
}
-module_init(max732x_init);
+/* register after i2c postcore initcall and before
+ * subsys initcalls that may rely on these GPIOs
+ */
+subsys_initcall(max732x_init);
static void __exit max732x_exit(void)
{