aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-omap2/io.c
diff options
context:
space:
mode:
authorPaul Walmsley <paul@pwsan.com>2010-07-26 18:34:30 -0400
committerPaul Walmsley <paul@pwsan.com>2010-07-26 18:34:30 -0400
commit97d60162f64ef068b639d8a77ef3bc148baa53ad (patch)
tree33bdb47ec9f97e6404c864d59dbb362cae700a23 /arch/arm/mach-omap2/io.c
parent848240223c35fcc71c424ad51a8e8aef42d3879c (diff)
OMAP: hwmod: allow omap_hwmod_late_init() caller to skip module idle in _setup()
On kernels that don't use the omap_device_enable() calls to enable devices, leave all on-chip devices enabled in hwmod _setup(). Otherwise, accesses to those devices are likely to fail, crashing the system. It's expected that kernels built without CONFIG_PM_RUNTIME will be the primary use-case for this. This functionality is controlled by adding an extra parameter to omap_hwmod_late_init(). This patch is based on the patch "OMAP: hwmod: don't auto-disable hwmod when !CONFIG_PM_RUNTIME" by Kevin Hilman <khilman@deeprootsystems.com>. Cc: Kevin Hilman <khilman@deeprootsystems.com> Signed-off-by: Paul Walmsley <paul@pwsan.com>
Diffstat (limited to 'arch/arm/mach-omap2/io.c')
-rw-r--r--arch/arm/mach-omap2/io.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/arch/arm/mach-omap2/io.c b/arch/arm/mach-omap2/io.c
index 3cfb425ea67e..e95b47b3bfd3 100644
--- a/arch/arm/mach-omap2/io.c
+++ b/arch/arm/mach-omap2/io.c
@@ -316,6 +316,8 @@ static int __init _omap2_init_reprogram_sdrc(void)
316void __init omap2_init_common_hw(struct omap_sdrc_params *sdrc_cs0, 316void __init omap2_init_common_hw(struct omap_sdrc_params *sdrc_cs0,
317 struct omap_sdrc_params *sdrc_cs1) 317 struct omap_sdrc_params *sdrc_cs1)
318{ 318{
319 u8 skip_setup_idle = 0;
320
319 pwrdm_init(powerdomains_omap); 321 pwrdm_init(powerdomains_omap);
320 clkdm_init(clockdomains_omap, clkdm_autodeps); 322 clkdm_init(clockdomains_omap, clkdm_autodeps);
321 if (cpu_is_omap242x()) 323 if (cpu_is_omap242x())
@@ -340,8 +342,13 @@ void __init omap2_init_common_hw(struct omap_sdrc_params *sdrc_cs0,
340 pr_err("Could not init clock framework - unknown CPU\n"); 342 pr_err("Could not init clock framework - unknown CPU\n");
341 343
342 omap_serial_early_init(); 344 omap_serial_early_init();
345
346#ifndef CONFIG_PM_RUNTIME
347 skip_setup_idle = 1;
348#endif
343 if (cpu_is_omap24xx() || cpu_is_omap34xx()) /* FIXME: OMAP4 */ 349 if (cpu_is_omap24xx() || cpu_is_omap34xx()) /* FIXME: OMAP4 */
344 omap_hwmod_late_init(); 350 omap_hwmod_late_init(skip_setup_idle);
351
345 omap_pm_if_init(); 352 omap_pm_if_init();
346 if (cpu_is_omap24xx() || cpu_is_omap34xx()) { 353 if (cpu_is_omap24xx() || cpu_is_omap34xx()) {
347 omap2_sdrc_init(sdrc_cs0, sdrc_cs1); 354 omap2_sdrc_init(sdrc_cs0, sdrc_cs1);