|
@@ -227,7 +227,7 @@ static void __init save_l2x0_context(void)
|
|
int omap4_enter_lowpower(unsigned int cpu, unsigned int power_state)
|
|
int omap4_enter_lowpower(unsigned int cpu, unsigned int power_state)
|
|
{
|
|
{
|
|
struct omap4_cpu_pm_info *pm_info = &per_cpu(omap4_pm_info, cpu);
|
|
struct omap4_cpu_pm_info *pm_info = &per_cpu(omap4_pm_info, cpu);
|
|
- unsigned int save_state = 0;
|
|
|
|
|
|
+ unsigned int save_state = 0, cpu_logic_state = PWRDM_POWER_RET;
|
|
unsigned int wakeup_cpu;
|
|
unsigned int wakeup_cpu;
|
|
|
|
|
|
if (omap_rev() == OMAP4430_REV_ES1_0)
|
|
if (omap_rev() == OMAP4430_REV_ES1_0)
|
|
@@ -239,6 +239,7 @@ int omap4_enter_lowpower(unsigned int cpu, unsigned int power_state)
|
|
save_state = 0;
|
|
save_state = 0;
|
|
break;
|
|
break;
|
|
case PWRDM_POWER_OFF:
|
|
case PWRDM_POWER_OFF:
|
|
|
|
+ cpu_logic_state = PWRDM_POWER_OFF;
|
|
save_state = 1;
|
|
save_state = 1;
|
|
break;
|
|
break;
|
|
case PWRDM_POWER_RET:
|
|
case PWRDM_POWER_RET:
|
|
@@ -270,6 +271,7 @@ int omap4_enter_lowpower(unsigned int cpu, unsigned int power_state)
|
|
|
|
|
|
cpu_clear_prev_logic_pwrst(cpu);
|
|
cpu_clear_prev_logic_pwrst(cpu);
|
|
pwrdm_set_next_pwrst(pm_info->pwrdm, power_state);
|
|
pwrdm_set_next_pwrst(pm_info->pwrdm, power_state);
|
|
|
|
+ pwrdm_set_logic_retst(pm_info->pwrdm, cpu_logic_state);
|
|
set_cpu_wakeup_addr(cpu, virt_to_phys(omap_pm_ops.resume));
|
|
set_cpu_wakeup_addr(cpu, virt_to_phys(omap_pm_ops.resume));
|
|
omap_pm_ops.scu_prepare(cpu, power_state);
|
|
omap_pm_ops.scu_prepare(cpu, power_state);
|
|
l2x0_pwrst_prepare(cpu, save_state);
|
|
l2x0_pwrst_prepare(cpu, save_state);
|