Remove more bogus arch_initcall() logic in mach-omap2/board-xyx.c files.
They broke a multi-OMAP build I did, at *RUN TIME* not build time, since
it tried to do the i2c init for every board linked in the kernel.
Remember, init_machine() entries run at arch_initcall() time; that's
where any board-specific init logic should normally go. Any initcalls
in the mach-*/*c files should normally be guarded by tests to make sure
they only run on the relevant hardware (board, cpu). Better yet, get
rid of the initcalls; init_machine() can *explicitly* call the right
version of that code, and pass in board-specific config data; and there
are hooks that can handle cpu-specific stuff too.
A quick glance suggests most of the remaining initcall logic in the
mach-omap2 directory is similarly broken... this patch gets rid of
one frequently-cloned idiom, it should help.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Tony Lindgren <tony@atomide.com>
static void __init omap_2430sdp_init(void)
{
+ omap2430_i2c_init();
+
platform_add_devices(sdp2430_devices, ARRAY_SIZE(sdp2430_devices));
omap_board_config = sdp2430_config;
omap_board_config_size = ARRAY_SIZE(sdp2430_config);
omap2_map_common_io();
}
-arch_initcall(omap2430_i2c_init);
-
MACHINE_START(OMAP_2430SDP, "OMAP2430 sdp2430 board")
/* Maintainer: Syed Khasim - Texas Instruments Inc */
.phys_io = 0x48000000,
static void __init omap_3430sdp_init(void)
{
+ omap3430_i2c_init();
platform_add_devices(sdp3430_devices, ARRAY_SIZE(sdp3430_devices));
omap_board_config = sdp3430_config;
omap_board_config_size = ARRAY_SIZE(sdp3430_config);
omap2_set_globals_343x();
omap2_map_common_io();
}
-arch_initcall(omap3430_i2c_init);
MACHINE_START(OMAP_3430SDP, "OMAP3430 3430SDP board")
/* Maintainer: Syed Khasim - Texas Instruments Inc */
static void __init omap_ldp_init(void)
{
+ omap_i2c_init();
platform_add_devices(ldp_devices, ARRAY_SIZE(ldp_devices));
omap_board_config = ldp_config;
omap_board_config_size = ARRAY_SIZE(ldp_config);
omap2_set_globals_343x();
omap2_map_common_io();
}
-arch_initcall(omap_i2c_init);
MACHINE_START(OMAP_LDP, "OMAP LDP board")
.phys_io = 0x48000000,
static void __init omap2_evm_init(void)
{
+ omap2_evm_i2c_init();
+
platform_add_devices(omap2_evm_devices, ARRAY_SIZE(omap2_evm_devices));
omap_board_config = omap2_evm_config;
omap_board_config_size = ARRAY_SIZE(omap2_evm_config);
omap2_map_common_io();
}
-arch_initcall(omap2_evm_i2c_init);
-
MACHINE_START(OMAP2EVM, "OMAP2EVM Board")
/* Maintainer: Arun KS <arunks@mistralsolutions.com> */
.phys_io = 0x48000000,
static void __init omap3_evm_init(void)
{
+ omap3_evm_i2c_init();
+
platform_add_devices(omap3_evm_devices, ARRAY_SIZE(omap3_evm_devices));
omap_board_config = omap3_evm_config;
omap_board_config_size = ARRAY_SIZE(omap3_evm_config);
ads7846_dev_init();
}
-arch_initcall(omap3_evm_i2c_init);
-
static void __init omap3_evm_map_io(void)
{
omap2_set_globals_343x();