diff options
Diffstat (limited to 'board/samus_pd/board.c')
-rw-r--r-- | board/samus_pd/board.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/board/samus_pd/board.c b/board/samus_pd/board.c index a62299d71c..f250dd34a6 100644 --- a/board/samus_pd/board.c +++ b/board/samus_pd/board.c @@ -50,21 +50,27 @@ void pch_evt(enum gpio_signal signal) switch (ps) { case POWER_S5: if (gpio_get_level(GPIO_PCH_SLP_S5_L)) { + /* S5 -> S3 */ hook_notify(HOOK_CHIPSET_STARTUP); ps = POWER_S3; } break; case POWER_S3: if (gpio_get_level(GPIO_PCH_SLP_S3_L)) { + /* S3 -> S0: disable deep sleep */ + disable_sleep(SLEEP_MASK_AP_RUN); hook_notify(HOOK_CHIPSET_RESUME); ps = POWER_S0; } else if (!gpio_get_level(GPIO_PCH_SLP_S5_L)) { + /* S3 -> S5 */ hook_notify(HOOK_CHIPSET_SHUTDOWN); ps = POWER_S5; } break; case POWER_S0: if (!gpio_get_level(GPIO_PCH_SLP_S3_L)) { + /* S0 -> S3: enable deep sleep */ + enable_sleep(SLEEP_MASK_AP_RUN); hook_notify(HOOK_CHIPSET_SUSPEND); ps = POWER_S3; } @@ -117,12 +123,15 @@ static void board_init(void) /* Determine initial chipset state */ if (slp_s5 && slp_s3) { + disable_sleep(SLEEP_MASK_AP_RUN); hook_notify(HOOK_CHIPSET_RESUME); ps = POWER_S0; } else if (slp_s5 && !slp_s3) { + enable_sleep(SLEEP_MASK_AP_RUN); hook_notify(HOOK_CHIPSET_STARTUP); ps = POWER_S3; } else { + enable_sleep(SLEEP_MASK_AP_RUN); hook_notify(HOOK_CHIPSET_SHUTDOWN); ps = POWER_S5; } |