|
@@ -376,15 +376,14 @@ void omap_sram_idle(void)
|
|
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) {
|
|
if (per_next_state < PWRDM_POWER_ON) {
|
|
omap_uart_prepare_idle(2);
|
|
omap_uart_prepare_idle(2);
|
|
|
|
+ omap2_gpio_prepare_for_idle(per_next_state);
|
|
if (per_next_state == PWRDM_POWER_OFF) {
|
|
if (per_next_state == PWRDM_POWER_OFF) {
|
|
if (core_next_state == PWRDM_POWER_ON) {
|
|
if (core_next_state == PWRDM_POWER_ON) {
|
|
per_next_state = PWRDM_POWER_RET;
|
|
per_next_state = PWRDM_POWER_RET;
|
|
pwrdm_set_next_pwrst(per_pwrdm, per_next_state);
|
|
pwrdm_set_next_pwrst(per_pwrdm, per_next_state);
|
|
per_state_modified = 1;
|
|
per_state_modified = 1;
|
|
- } else {
|
|
|
|
- omap2_gpio_prepare_for_retention();
|
|
|
|
|
|
+ } else
|
|
omap3_per_save_context();
|
|
omap3_per_save_context();
|
|
- }
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -455,10 +454,9 @@ void omap_sram_idle(void)
|
|
/* PER */
|
|
/* PER */
|
|
if (per_next_state < PWRDM_POWER_ON) {
|
|
if (per_next_state < PWRDM_POWER_ON) {
|
|
per_prev_state = pwrdm_read_prev_pwrst(per_pwrdm);
|
|
per_prev_state = pwrdm_read_prev_pwrst(per_pwrdm);
|
|
- if (per_prev_state == PWRDM_POWER_OFF) {
|
|
|
|
|
|
+ omap2_gpio_resume_after_idle();
|
|
|
|
+ if (per_prev_state == PWRDM_POWER_OFF)
|
|
omap3_per_restore_context();
|
|
omap3_per_restore_context();
|
|
- omap2_gpio_resume_after_retention();
|
|
|
|
- }
|
|
|
|
omap_uart_resume_idle(2);
|
|
omap_uart_resume_idle(2);
|
|
if (per_state_modified)
|
|
if (per_state_modified)
|
|
pwrdm_set_next_pwrst(per_pwrdm, PWRDM_POWER_OFF);
|
|
pwrdm_set_next_pwrst(per_pwrdm, PWRDM_POWER_OFF);
|