diff options
author | Paul Walmsley <paul@pwsan.com> | 2010-07-26 18:34:30 -0400 |
---|---|---|
committer | Paul Walmsley <paul@pwsan.com> | 2010-07-26 18:34:30 -0400 |
commit | 97d60162f64ef068b639d8a77ef3bc148baa53ad (patch) | |
tree | 33bdb47ec9f97e6404c864d59dbb362cae700a23 /arch/arm/mach-omap2/io.c | |
parent | 848240223c35fcc71c424ad51a8e8aef42d3879c (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.c | 9 |
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) | |||
316 | void __init omap2_init_common_hw(struct omap_sdrc_params *sdrc_cs0, | 316 | void __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); |