From 846fe83eec802587777fef31d80c967cfcf7d700 Mon Sep 17 00:00:00 2001 From: David Brownell Date: Wed, 10 Sep 2008 23:01:24 -0700 Subject: [PATCH] mach-omap2: fix more arch_initcall() breakage 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 Signed-off-by: Tony Lindgren --- arch/arm/mach-omap2/board-2430sdp.c | 4 ++-- arch/arm/mach-omap2/board-3430sdp.c | 2 +- arch/arm/mach-omap2/board-ldp.c | 2 +- arch/arm/mach-omap2/board-omap2evm.c | 4 ++-- arch/arm/mach-omap2/board-omap3evm.c | 4 ++-- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/arch/arm/mach-omap2/board-2430sdp.c b/arch/arm/mach-omap2/board-2430sdp.c index 22aa28c7fcb..73df3269d08 100644 --- a/arch/arm/mach-omap2/board-2430sdp.c +++ b/arch/arm/mach-omap2/board-2430sdp.c @@ -384,6 +384,8 @@ static int __init omap2430_i2c_init(void) 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); @@ -408,8 +410,6 @@ static void __init omap_2430sdp_map_io(void) 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, diff --git a/arch/arm/mach-omap2/board-3430sdp.c b/arch/arm/mach-omap2/board-3430sdp.c index a9f368b4e10..004955a6f85 100644 --- a/arch/arm/mach-omap2/board-3430sdp.c +++ b/arch/arm/mach-omap2/board-3430sdp.c @@ -346,6 +346,7 @@ extern void __init sdp3430_flash_init(void); 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); @@ -370,7 +371,6 @@ static void __init omap_3430sdp_map_io(void) 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 */ diff --git a/arch/arm/mach-omap2/board-ldp.c b/arch/arm/mach-omap2/board-ldp.c index ffd27d676ce..c7b67857fa9 100644 --- a/arch/arm/mach-omap2/board-ldp.c +++ b/arch/arm/mach-omap2/board-ldp.c @@ -215,6 +215,7 @@ static int __init omap_i2c_init(void) 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); @@ -234,7 +235,6 @@ static void __init omap_ldp_map_io(void) omap2_set_globals_343x(); omap2_map_common_io(); } -arch_initcall(omap_i2c_init); MACHINE_START(OMAP_LDP, "OMAP LDP board") .phys_io = 0x48000000, diff --git a/arch/arm/mach-omap2/board-omap2evm.c b/arch/arm/mach-omap2/board-omap2evm.c index d55f6f7b7e8..6cf9db846f8 100644 --- a/arch/arm/mach-omap2/board-omap2evm.c +++ b/arch/arm/mach-omap2/board-omap2evm.c @@ -253,6 +253,8 @@ static struct platform_device *omap2_evm_devices[] __initdata = { 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); @@ -267,8 +269,6 @@ static void __init omap2_evm_map_io(void) omap2_map_common_io(); } -arch_initcall(omap2_evm_i2c_init); - MACHINE_START(OMAP2EVM, "OMAP2EVM Board") /* Maintainer: Arun KS */ .phys_io = 0x48000000, diff --git a/arch/arm/mach-omap2/board-omap3evm.c b/arch/arm/mach-omap2/board-omap3evm.c index ee8a84d3a43..e7680374e2d 100644 --- a/arch/arm/mach-omap2/board-omap3evm.c +++ b/arch/arm/mach-omap2/board-omap3evm.c @@ -215,6 +215,8 @@ static struct platform_device *omap3_evm_devices[] __initdata = { 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); @@ -230,8 +232,6 @@ static void __init omap3_evm_init(void) ads7846_dev_init(); } -arch_initcall(omap3_evm_i2c_init); - static void __init omap3_evm_map_io(void) { omap2_set_globals_343x(); -- 2.41.0