summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Lok <ben.lok@mediatek.com>2015-07-31 19:23:03 +0800
committerChromeOS Commit Bot <chromeos-commit-bot@chromium.org>2015-08-05 12:10:30 +0000
commit70858deabc8b271471999448aa168762f32249d1 (patch)
tree99bda9280f8038ed89f9299652bfd3d8bc02b36f
parent756d7d3f842acad18ad3769958699232b51f88bf (diff)
downloadchrome-ec-70858deabc8b271471999448aa168762f32249d1.tar.gz
oak: enable EC sleep in S3
In S3, the EC isn't expecting AP host commands, so it's safe to enable sleep BRANCH=none BUG=none TEST=Check sleep mask in S0 and S3. Also check sleep mask after sysjump with AP on and with AP off. Change-Id: I9dcfe996e8e92e6703d71bbe966cd2447c6b14fe Signed-off-by: Ben Lok <ben.lok@mediatek.com> Reviewed-on: https://chromium-review.googlesource.com/290002 Reviewed-by: Rong Chang <rongchang@chromium.org>
-rw-r--r--power/mediatek.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/power/mediatek.c b/power/mediatek.c
index f1205a9f2f..9a6acdd30e 100644
--- a/power/mediatek.c
+++ b/power/mediatek.c
@@ -407,11 +407,14 @@ enum power_state power_chipset_init(void)
} else {
/* In the SYSJUMP case, we check if the AP is on */
if (is_power_good_asserted()) {
- CPRINTS("SOC ON\n");
+ CPRINTS("SOC ON");
init_power_state = POWER_S0;
- disable_sleep(SLEEP_MASK_AP_RUN);
+ if (is_suspend_asserted())
+ enable_sleep(SLEEP_MASK_AP_RUN);
+ else
+ disable_sleep(SLEEP_MASK_AP_RUN);
} else {
- CPRINTS("SOC OFF\n");
+ CPRINTS("SOC OFF");
init_power_state = POWER_G3;
enable_sleep(SLEEP_MASK_AP_RUN);
}
@@ -710,6 +713,7 @@ enum power_state power_handle_state(enum power_state state)
return state;
case POWER_S3S0:
+ disable_sleep(SLEEP_MASK_AP_RUN);
#ifdef HAS_TASK_POWERLED
powerled_set_state(POWERLED_STATE_ON);
#endif
@@ -735,6 +739,7 @@ enum power_state power_handle_state(enum power_state state)
#endif
/* Call hooks here since we don't know it prior to AP suspend */
hook_notify(HOOK_CHIPSET_SUSPEND);
+ enable_sleep(SLEEP_MASK_AP_RUN);
return POWER_S3;
case POWER_S3S5: