aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-omap2/pm34xx.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/mach-omap2/pm34xx.c')
-rw-r--r--arch/arm/mach-omap2/pm34xx.c25
1 files changed, 22 insertions, 3 deletions
diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c
index 74bc15e71e9f..a81ed251e667 100644
--- a/arch/arm/mach-omap2/pm34xx.c
+++ b/arch/arm/mach-omap2/pm34xx.c
@@ -917,12 +917,29 @@ void omap3_pm_off_mode_enable(int enable)
917 state = PWRDM_POWER_RET; 917 state = PWRDM_POWER_RET;
918 918
919#ifdef CONFIG_CPU_IDLE 919#ifdef CONFIG_CPU_IDLE
920 omap3_cpuidle_update_states(state, state); 920 /*
921 * Erratum i583: implementation for ES rev < Es1.2 on 3630. We cannot
922 * enable OFF mode in a stable form for previous revisions, restrict
923 * instead to RET
924 */
925 if (IS_PM34XX_ERRATUM(PM_SDRC_WAKEUP_ERRATUM_i583))
926 omap3_cpuidle_update_states(state, PWRDM_POWER_RET);
927 else
928 omap3_cpuidle_update_states(state, state);
921#endif 929#endif
922 930
923 list_for_each_entry(pwrst, &pwrst_list, node) { 931 list_for_each_entry(pwrst, &pwrst_list, node) {
924 pwrst->next_state = state; 932 if (IS_PM34XX_ERRATUM(PM_SDRC_WAKEUP_ERRATUM_i583) &&
925 omap_set_pwrdm_state(pwrst->pwrdm, state); 933 pwrst->pwrdm == core_pwrdm &&
934 state == PWRDM_POWER_OFF) {
935 pwrst->next_state = PWRDM_POWER_RET;
936 WARN_ONCE(1,
937 "%s: Core OFF disabled due to errata i583\n",
938 __func__);
939 } else {
940 pwrst->next_state = state;
941 }
942 omap_set_pwrdm_state(pwrst->pwrdm, pwrst->next_state);
926 } 943 }
927} 944}
928 945
@@ -1000,6 +1017,8 @@ static void __init pm_errata_configure(void)
1000 pm34xx_errata |= PM_RTA_ERRATUM_i608; 1017 pm34xx_errata |= PM_RTA_ERRATUM_i608;
1001 /* Enable the l2 cache toggling in sleep logic */ 1018 /* Enable the l2 cache toggling in sleep logic */
1002 enable_omap3630_toggle_l2_on_restore(); 1019 enable_omap3630_toggle_l2_on_restore();
1020 if (omap_rev() < OMAP3630_REV_ES1_2)
1021 pm34xx_errata |= PM_SDRC_WAKEUP_ERRATUM_i583;
1003 } 1022 }
1004} 1023}
1005 1024