mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 12:28:41 +08:00
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>
This commit is contained in:
parent
3d599d1ca5
commit
2f8d11971b
@ -372,7 +372,10 @@ static int __init max732x_init(void)
|
|||||||
{
|
{
|
||||||
return i2c_add_driver(&max732x_driver);
|
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)
|
static void __exit max732x_exit(void)
|
||||||
{
|
{
|
||||||
|
@ -289,7 +289,10 @@ static int __init pca953x_init(void)
|
|||||||
{
|
{
|
||||||
return i2c_add_driver(&pca953x_driver);
|
return i2c_add_driver(&pca953x_driver);
|
||||||
}
|
}
|
||||||
module_init(pca953x_init);
|
/* register after i2c postcore initcall and before
|
||||||
|
* subsys initcalls that may rely on these GPIOs
|
||||||
|
*/
|
||||||
|
subsys_initcall(pca953x_init);
|
||||||
|
|
||||||
static void __exit pca953x_exit(void)
|
static void __exit pca953x_exit(void)
|
||||||
{
|
{
|
||||||
|
@ -351,7 +351,10 @@ static int __init pcf857x_init(void)
|
|||||||
{
|
{
|
||||||
return i2c_add_driver(&pcf857x_driver);
|
return i2c_add_driver(&pcf857x_driver);
|
||||||
}
|
}
|
||||||
module_init(pcf857x_init);
|
/* register after i2c postcore initcall and before
|
||||||
|
* subsys initcalls that may rely on these GPIOs
|
||||||
|
*/
|
||||||
|
subsys_initcall(pcf857x_init);
|
||||||
|
|
||||||
static void __exit pcf857x_exit(void)
|
static void __exit pcf857x_exit(void)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user