diff options
Diffstat (limited to 'board/samus/power_sequence.c')
-rw-r--r-- | board/samus/power_sequence.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/board/samus/power_sequence.c b/board/samus/power_sequence.c index a8bba2748d..bc06ed6222 100644 --- a/board/samus/power_sequence.c +++ b/board/samus/power_sequence.c @@ -124,6 +124,8 @@ enum power_state power_chipset_init(void) */ if (system_jumped_to_this_image()) { if ((power_get_signals() & IN_ALL_S0) == IN_ALL_S0) { + /* Disable idle task deep sleep when in S0. */ + disable_sleep(SLEEP_MASK_AP_RUN); CPRINTF("[%T already in S0]\n"); return POWER_S0; } else { @@ -298,6 +300,12 @@ enum power_state power_handle_state(enum power_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 99ms after all voltages good */ msleep(99); @@ -327,6 +335,12 @@ enum power_state power_handle_state(enum power_state state) wireless_set_state(WIRELESS_SUSPEND); /* + * 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. */ |