aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-omap2/io.c
diff options
context:
space:
mode:
authorPaul Walmsley <paul@pwsan.com>2010-12-21 17:25:10 -0500
committerPaul Walmsley <paul@pwsan.com>2010-12-21 21:55:11 -0500
commit4805734bcc5a6b28b527a13a5c1603a2912c9f48 (patch)
treee2f43f70814ef3bac279bedc511526149864c7fc /arch/arm/mach-omap2/io.c
parentb9e7683bbca638967a56e5d7fd4035a947109621 (diff)
OMAP2+: io: split omap2_init_common_hw()
Split omap2_init_common_hw() into two functions. The first, omap2_init_common_infrastructure(), initializes the hwmod code and data, the OMAP PM code, and the clock code and data. The second, omap2_init_common_devices(), handles any other early device initialization that, for whatever reason, has not been or cannot be moved to initcalls or early platform devices. This patch is required for the hwmod postsetup patch, which allows board files to change the state that hwmods should be placed into at the conclusion of the hwmod _setup() function. For example, for a board whose creators wish to ensure watchdog coverage across the entire kernel boot process, code to change the watchdog's postsetup state will be added in the board-*.c file between the omap2_init_common_infrastructure() and omap2_init_common_devices() function calls. Signed-off-by: Paul Walmsley <paul@pwsan.com> Cc: Tony Lindgren <tony@atomide.com>
Diffstat (limited to 'arch/arm/mach-omap2/io.c')
-rw-r--r--arch/arm/mach-omap2/io.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/arch/arm/mach-omap2/io.c b/arch/arm/mach-omap2/io.c
index 5577ab2faad2..77bf0d1baeef 100644
--- a/arch/arm/mach-omap2/io.c
+++ b/arch/arm/mach-omap2/io.c
@@ -331,11 +331,8 @@ static inline void omap_irq_base_init(void)
331#endif 331#endif
332} 332}
333 333
334void __init omap2_init_common_hw(struct omap_sdrc_params *sdrc_cs0, 334void __init omap2_init_common_infrastructure(void)
335 struct omap_sdrc_params *sdrc_cs1)
336{ 335{
337 u8 skip_setup_idle = 0;
338
339 pwrdm_init(powerdomains_omap); 336 pwrdm_init(powerdomains_omap);
340 clkdm_init(clockdomains_omap, clkdm_autodeps); 337 clkdm_init(clockdomains_omap, clkdm_autodeps);
341 if (cpu_is_omap242x()) 338 if (cpu_is_omap242x())
@@ -359,6 +356,17 @@ void __init omap2_init_common_hw(struct omap_sdrc_params *sdrc_cs0,
359 omap4xxx_clk_init(); 356 omap4xxx_clk_init();
360 else 357 else
361 pr_err("Could not init clock framework - unknown CPU\n"); 358 pr_err("Could not init clock framework - unknown CPU\n");
359}
360
361/*
362 * XXX Ideally, this function will dwindle into nothingness over time;
363 * almost all device init code should be possible through initcalls
364 * and other generalized mechanisms
365 */
366void __init omap2_init_common_devices(struct omap_sdrc_params *sdrc_cs0,
367 struct omap_sdrc_params *sdrc_cs1)
368{
369 u8 skip_setup_idle = 0;
362 370
363 omap_serial_early_init(); 371 omap_serial_early_init();
364 372