mirror of
https://github.com/torvalds/linux.git
synced 2024-11-19 02:21:47 +00:00
OMAP3: PM: Enable IO / IO-CHAIN wakeups for PER
IO events can also come from GPIO modules, which reside in the PER domain. It is possible for the PER to enter RET while CORE is still in ON. If GPIO 2-6 are enabled for IO-pad wakeups, the PER domain will not wakeup in this case, unless we enable it. Signed-off-by: Mike Chan <mike@android.com> Signed-off-by: Kevin Hilman <khilman@deeprootsystems.com>
This commit is contained in:
parent
7a44ad2fce
commit
40742fa82e
@ -379,9 +379,16 @@ void omap_sram_idle(void)
|
|||||||
if (pwrdm_read_pwrst(neon_pwrdm) == PWRDM_POWER_ON)
|
if (pwrdm_read_pwrst(neon_pwrdm) == PWRDM_POWER_ON)
|
||||||
pwrdm_set_next_pwrst(neon_pwrdm, mpu_next_state);
|
pwrdm_set_next_pwrst(neon_pwrdm, mpu_next_state);
|
||||||
|
|
||||||
/* PER */
|
/* Enable IO-PAD and IO-CHAIN wakeups */
|
||||||
per_next_state = pwrdm_read_next_pwrst(per_pwrdm);
|
per_next_state = pwrdm_read_next_pwrst(per_pwrdm);
|
||||||
core_next_state = pwrdm_read_next_pwrst(core_pwrdm);
|
core_next_state = pwrdm_read_next_pwrst(core_pwrdm);
|
||||||
|
if (per_next_state < PWRDM_POWER_ON ||
|
||||||
|
core_next_state < PWRDM_POWER_ON) {
|
||||||
|
prm_set_mod_reg_bits(OMAP3430_EN_IO, WKUP_MOD, PM_WKEN);
|
||||||
|
omap3_enable_io_chain();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* PER */
|
||||||
if (per_next_state < PWRDM_POWER_ON) {
|
if (per_next_state < PWRDM_POWER_ON) {
|
||||||
omap_uart_prepare_idle(2);
|
omap_uart_prepare_idle(2);
|
||||||
omap2_gpio_prepare_for_retention();
|
omap2_gpio_prepare_for_retention();
|
||||||
@ -406,10 +413,8 @@ void omap_sram_idle(void)
|
|||||||
omap3_core_save_context();
|
omap3_core_save_context();
|
||||||
omap3_prcm_save_context();
|
omap3_prcm_save_context();
|
||||||
}
|
}
|
||||||
/* Enable IO-PAD and IO-CHAIN wakeups */
|
|
||||||
prm_set_mod_reg_bits(OMAP3430_EN_IO, WKUP_MOD, PM_WKEN);
|
|
||||||
omap3_enable_io_chain();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
omap3_intc_prepare_idle();
|
omap3_intc_prepare_idle();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -471,7 +476,8 @@ void omap_sram_idle(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Disable IO-PAD and IO-CHAIN wakeup */
|
/* Disable IO-PAD and IO-CHAIN wakeup */
|
||||||
if (core_next_state < PWRDM_POWER_ON) {
|
if (per_next_state < PWRDM_POWER_ON ||
|
||||||
|
core_next_state < PWRDM_POWER_ON) {
|
||||||
prm_clear_mod_reg_bits(OMAP3430_EN_IO, WKUP_MOD, PM_WKEN);
|
prm_clear_mod_reg_bits(OMAP3430_EN_IO, WKUP_MOD, PM_WKEN);
|
||||||
omap3_disable_io_chain();
|
omap3_disable_io_chain();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user