summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--board/samus/power_sequence.c6
-rw-r--r--power/baytrail.c1
-rw-r--r--power/haswell.c3
3 files changed, 9 insertions, 1 deletions
diff --git a/board/samus/power_sequence.c b/board/samus/power_sequence.c
index 74efef873e..1c24ead274 100644
--- a/board/samus/power_sequence.c
+++ b/board/samus/power_sequence.c
@@ -210,6 +210,7 @@ enum power_state power_handle_state(enum power_state state)
while ((power_get_signals() & IN_PGOOD_PP5000) != 0) {
if (task_wait_event(SECOND) == TASK_EVENT_TIMER) {
CPRINTF("[%T timeout waiting for PP5000\n");
+ gpio_set_level(GPIO_PP5000_EN, 0);
chipset_force_shutdown();
return POWER_G3;
}
@@ -227,6 +228,9 @@ enum power_state power_handle_state(enum power_state state)
/* Wait for 1.05V to come up and CPU to notice */
if (power_wait_signals(IN_PGOOD_PP1050 |
IN_PCH_SLP_SUS_DEASSERTED)) {
+ gpio_set_level(GPIO_PP1050_EN, 0);
+ gpio_set_level(GPIO_PP3300_DSW_GATED_EN, 0);
+ gpio_set_level(GPIO_PP5000_EN, 0);
chipset_force_shutdown();
return POWER_G3;
}
@@ -243,6 +247,8 @@ enum power_state power_handle_state(enum power_state state)
gpio_set_level(GPIO_PP1800_EN, 1);
gpio_set_level(GPIO_PP1200_EN, 1);
if (power_wait_signals(IN_PGOOD_S3)) {
+ gpio_set_level(GPIO_PP1800_EN, 0);
+ gpio_set_level(GPIO_PP1200_EN, 0);
chipset_force_shutdown();
return POWER_S5;
}
diff --git a/power/baytrail.c b/power/baytrail.c
index 04f0795a95..3ef9b2b37b 100644
--- a/power/baytrail.c
+++ b/power/baytrail.c
@@ -190,6 +190,7 @@ enum power_state power_handle_state(enum power_state state)
gpio_set_level(GPIO_SUSP_VR_EN, 1);
if (power_wait_signals(IN_PGOOD_S5)) {
+ gpio_set_level(GPIO_SUSP_VR_EN, 0);
chipset_force_shutdown();
return POWER_G3;
}
diff --git a/power/haswell.c b/power/haswell.c
index df727d2983..b51ac36ad8 100644
--- a/power/haswell.c
+++ b/power/haswell.c
@@ -213,6 +213,7 @@ enum power_state power_handle_state(enum power_state state)
gpio_set_level(GPIO_SUSP_VR_EN, 1);
if (power_wait_signals(IN_PGOOD_PP1050)) {
+ gpio_set_level(GPIO_SUSP_VR_EN, 0);
chipset_force_shutdown();
return POWER_G3;
}
@@ -229,7 +230,7 @@ enum power_state power_handle_state(enum power_state state)
gpio_set_level(GPIO_PP5000_EN, 1);
if (power_wait_signals(IN_PGOOD_PP5000)) {
chipset_force_shutdown();
- return POWER_G3;
+ return POWER_S5G3;
}
/* Wait for the always-on rails to be good */