Merge tag 'mvebu-fixes-3.17' of git://git.infradead.org/linux-mvebu into next/fixes...
[cascardo/linux.git] / arch / arm / mach-omap2 / pm44xx.c
index 0dda6cf..0bfce38 100644 (file)
@@ -29,6 +29,7 @@ u16 pm44xx_errata;
 struct power_state {
        struct powerdomain *pwrdm;
        u32 next_state;
+       u32 next_logic_state;
 #ifdef CONFIG_SUSPEND
        u32 saved_state;
        u32 saved_logic_state;
@@ -54,7 +55,7 @@ static int omap4_pm_suspend(void)
        /* Set targeted power domain states by suspend */
        list_for_each_entry(pwrst, &pwrst_list, node) {
                omap_set_pwrdm_state(pwrst->pwrdm, pwrst->next_state);
-               pwrdm_set_logic_retst(pwrst->pwrdm, PWRDM_POWER_OFF);
+               pwrdm_set_logic_retst(pwrst->pwrdm, pwrst->next_logic_state);
        }
 
        /*
@@ -120,7 +121,11 @@ static int __init pwrdms_setup(struct powerdomain *pwrdm, void *unused)
                return -ENOMEM;
 
        pwrst->pwrdm = pwrdm;
-       pwrst->next_state = PWRDM_POWER_RET;
+       pwrst->next_state = pwrdm_get_valid_lp_state(pwrdm, false,
+                                                    PWRDM_POWER_RET);
+       pwrst->next_logic_state = pwrdm_get_valid_lp_state(pwrdm, true,
+                                                          PWRDM_POWER_OFF);
+
        list_add(&pwrst->node, &pwrst_list);
 
        return omap_set_pwrdm_state(pwrst->pwrdm, pwrst->next_state);