diff options
author | Eduardo Valentin <eduardo.valentin@nokia.com> | 2010-12-20 15:05:09 -0500 |
---|---|---|
committer | Kevin Hilman <khilman@deeprootsystems.com> | 2010-12-21 17:45:53 -0500 |
commit | cc1b6028878646a2419b27e5f590b5e9fe01dc3d (patch) | |
tree | 560f6e797d20c112d1887d74250d41668b43b2ff /arch/arm/mach-omap2/cpuidle34xx.c | |
parent | 80723c3fe457a5d29c178da4ac72983f47b37ed7 (diff) |
OMAP3630: PM: Erratum i583: disable coreoff if < ES1.2
Limitation i583: Self_Refresh Exit issue after OFF mode
Issue:
When device is waking up from OFF mode, then SDRC state machine sends
inappropriate sequence violating JEDEC standards.
Impact:
OMAP3630 < ES1.2 is impacted as follows depending on the platform:
CS0: for 38.4MHz as internal sysclk, DDR content seen to be stable, while
for all other sysclk frequencies, varied levels of instability
seen based on varied parameters.
CS1: impacted
This patch takes option #3 as recommended by the Silicon erratum:
Avoid core power domain transitioning to OFF mode. Power consumption
impact is expected in this case.
To do this, we route core OFF requests to RET request on the impacted
revisions of silicon.
Acked-by: Jean Pihet <j-pihet@ti.com>
[nm@ti.com: rebased the code to 2.6.37-rc2- short circuit code changed a bit]
Signed-off-by: Nishanth Menon <nm@ti.com>
Signed-off-by: Eduardo Valentin <eduardo.valentin@nokia.com>
Signed-off-by: Kevin Hilman <khilman@deeprootsystems.com>
Diffstat (limited to 'arch/arm/mach-omap2/cpuidle34xx.c')
-rw-r--r-- | arch/arm/mach-omap2/cpuidle34xx.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/arch/arm/mach-omap2/cpuidle34xx.c b/arch/arm/mach-omap2/cpuidle34xx.c index f290e484e576..0fb619c52588 100644 --- a/arch/arm/mach-omap2/cpuidle34xx.c +++ b/arch/arm/mach-omap2/cpuidle34xx.c | |||
@@ -453,6 +453,18 @@ void omap_init_power_states(void) | |||
453 | omap3_power_states[OMAP3_STATE_C7].core_state = PWRDM_POWER_OFF; | 453 | omap3_power_states[OMAP3_STATE_C7].core_state = PWRDM_POWER_OFF; |
454 | omap3_power_states[OMAP3_STATE_C7].flags = CPUIDLE_FLAG_TIME_VALID | | 454 | omap3_power_states[OMAP3_STATE_C7].flags = CPUIDLE_FLAG_TIME_VALID | |
455 | CPUIDLE_FLAG_CHECK_BM; | 455 | CPUIDLE_FLAG_CHECK_BM; |
456 | |||
457 | /* | ||
458 | * Erratum i583: implementation for ES rev < Es1.2 on 3630. We cannot | ||
459 | * enable OFF mode in a stable form for previous revisions. | ||
460 | * we disable C7 state as a result. | ||
461 | */ | ||
462 | if (IS_PM34XX_ERRATUM(PM_SDRC_WAKEUP_ERRATUM_i583)) { | ||
463 | omap3_power_states[OMAP3_STATE_C7].valid = 0; | ||
464 | cpuidle_params_table[OMAP3_STATE_C7].valid = 0; | ||
465 | WARN_ONCE(1, "%s: core off state C7 disabled due to i583\n", | ||
466 | __func__); | ||
467 | } | ||
456 | } | 468 | } |
457 | 469 | ||
458 | struct cpuidle_driver omap3_idle_driver = { | 470 | struct cpuidle_driver omap3_idle_driver = { |