summaryrefslogtreecommitdiff
path: root/power/baytrail.c
diff options
context:
space:
mode:
Diffstat (limited to 'power/baytrail.c')
-rw-r--r--power/baytrail.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/power/baytrail.c b/power/baytrail.c
index 9ca1633a2f..3f7f217f24 100644
--- a/power/baytrail.c
+++ b/power/baytrail.c
@@ -113,6 +113,9 @@ enum x86_state x86_chipset_init(void)
*/
if (system_jumped_to_this_image()) {
if ((x86_get_signals() & IN_ALL_S0) == IN_ALL_S0) {
+ /* Disable idle task deep sleep when in S0. */
+ disable_sleep(SLEEP_MASK_AP_RUN);
+
CPRINTF("[%T x86 already in S0]\n");
return X86_S0;
} else {
@@ -266,6 +269,12 @@ enum x86_state x86_handle_state(enum x86_state state)
/* Call hooks now that rails are up */
hook_notify(HOOK_CHIPSET_RESUME);
+ /*
+ * Disable idle task deep sleep. This means that the low
+ * power idle task will not go into deep sleep while in S0.
+ */
+ disable_sleep(SLEEP_MASK_AP_RUN);
+
/* Wait 100ms after all voltages good */
msleep(100);
@@ -298,6 +307,12 @@ enum x86_state x86_handle_state(enum x86_state state)
wireless_enable(0);
/*
+ * Enable idle task deep sleep. Allow the low power idle task
+ * to go into deep sleep in S3 or lower.
+ */
+ enable_sleep(SLEEP_MASK_AP_RUN);
+
+ /*
* Deassert prochot since CPU is off and we're about to drop
* +VCCP.
*/