Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 673c0c00 authored by David Brownell's avatar David Brownell Committed by Linus Torvalds
Browse files

spi: core and gpio expanders use subsys_init



Make the SPI external GPIO expander drivers register themselves at
subsys_initcall() time when they're statically linked, and make the SPI
core do its driver model initialization earlier so that's safe.

SOC-integrated GPIOs are available starting very early -- often before
initcalls start to run, or earily in arch_initcall() at latest -- so this
improves consistency, letting more subsystems rely on GPIOs being usable
by their own subsys_initcall() code.

Signed-off-by: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 2bec19fe
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -325,13 +325,15 @@ static int __init max7301_init(void)
{
	return spi_register_driver(&max7301_driver);
}
/* register after spi postcore initcall and before
 * subsys initcalls that may rely on these GPIOs
 */
subsys_initcall(max7301_init);

static void __exit max7301_exit(void)
{
	spi_unregister_driver(&max7301_driver);
}

module_init(max7301_init);
module_exit(max7301_exit);

MODULE_AUTHOR("Juergen Beisert");
+4 −1
Original line number Diff line number Diff line
@@ -419,7 +419,10 @@ static int __init mcp23s08_init(void)
{
	return spi_register_driver(&mcp23s08_driver);
}
module_init(mcp23s08_init);
/* register after spi postcore initcall and before
 * subsys initcalls that may rely on these GPIOs
 */
subsys_initcall(mcp23s08_init);

static void __exit mcp23s08_exit(void)
{
+1 −1
Original line number Diff line number Diff line
@@ -738,5 +738,5 @@ static int __init spi_init(void)
 * driver registration) _could_ be dynamically linked (modular) ... costs
 * include needing to have boardinfo data structures be much more public.
 */
subsys_initcall(spi_init);
postcore_initcall(spi_init);