diff options
Diffstat (limited to 'arch/arm/mach-omap2/pm34xx.c')
-rw-r--r-- | arch/arm/mach-omap2/pm34xx.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c index e76af5b532a0..eec0916de819 100644 --- a/arch/arm/mach-omap2/pm34xx.c +++ b/arch/arm/mach-omap2/pm34xx.c | |||
@@ -379,9 +379,16 @@ void omap_sram_idle(void) | |||
379 | if (pwrdm_read_pwrst(neon_pwrdm) == PWRDM_POWER_ON) | 379 | if (pwrdm_read_pwrst(neon_pwrdm) == PWRDM_POWER_ON) |
380 | pwrdm_set_next_pwrst(neon_pwrdm, mpu_next_state); | 380 | pwrdm_set_next_pwrst(neon_pwrdm, mpu_next_state); |
381 | 381 | ||
382 | /* PER */ | 382 | /* Enable IO-PAD and IO-CHAIN wakeups */ |
383 | per_next_state = pwrdm_read_next_pwrst(per_pwrdm); | 383 | per_next_state = pwrdm_read_next_pwrst(per_pwrdm); |
384 | core_next_state = pwrdm_read_next_pwrst(core_pwrdm); | 384 | core_next_state = pwrdm_read_next_pwrst(core_pwrdm); |
385 | if (per_next_state < PWRDM_POWER_ON || | ||
386 | core_next_state < PWRDM_POWER_ON) { | ||
387 | prm_set_mod_reg_bits(OMAP3430_EN_IO, WKUP_MOD, PM_WKEN); | ||
388 | omap3_enable_io_chain(); | ||
389 | } | ||
390 | |||
391 | /* PER */ | ||
385 | if (per_next_state < PWRDM_POWER_ON) { | 392 | if (per_next_state < PWRDM_POWER_ON) { |
386 | omap_uart_prepare_idle(2); | 393 | omap_uart_prepare_idle(2); |
387 | omap2_gpio_prepare_for_retention(); | 394 | omap2_gpio_prepare_for_retention(); |
@@ -406,10 +413,8 @@ void omap_sram_idle(void) | |||
406 | omap3_core_save_context(); | 413 | omap3_core_save_context(); |
407 | omap3_prcm_save_context(); | 414 | omap3_prcm_save_context(); |
408 | } | 415 | } |
409 | /* Enable IO-PAD and IO-CHAIN wakeups */ | ||
410 | prm_set_mod_reg_bits(OMAP3430_EN_IO, WKUP_MOD, PM_WKEN); | ||
411 | omap3_enable_io_chain(); | ||
412 | } | 416 | } |
417 | |||
413 | omap3_intc_prepare_idle(); | 418 | omap3_intc_prepare_idle(); |
414 | 419 | ||
415 | /* | 420 | /* |
@@ -471,7 +476,8 @@ void omap_sram_idle(void) | |||
471 | } | 476 | } |
472 | 477 | ||
473 | /* Disable IO-PAD and IO-CHAIN wakeup */ | 478 | /* Disable IO-PAD and IO-CHAIN wakeup */ |
474 | if (core_next_state < PWRDM_POWER_ON) { | 479 | if (per_next_state < PWRDM_POWER_ON || |
480 | core_next_state < PWRDM_POWER_ON) { | ||
475 | prm_clear_mod_reg_bits(OMAP3430_EN_IO, WKUP_MOD, PM_WKEN); | 481 | prm_clear_mod_reg_bits(OMAP3430_EN_IO, WKUP_MOD, PM_WKEN); |
476 | omap3_disable_io_chain(); | 482 | omap3_disable_io_chain(); |
477 | } | 483 | } |