summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--common/power_button_x86.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/common/power_button_x86.c b/common/power_button_x86.c
index ca2bac378c..64f02525f6 100644
--- a/common/power_button_x86.c
+++ b/common/power_button_x86.c
@@ -364,11 +364,16 @@ static void state_machine(uint64_t tnow)
pwrbtn_state = PWRBTN_STATE_IDLE;
break;
case PWRBTN_STATE_WAS_OFF:
- /* Done stretching initial power button signal, so show the
- * true power button state to the PCH. */
+ /*
+ * Done stretching initial power button signal, so stop
+ * asserting PCH_PWRBTN_L to avoid chipset shut down if
+ * the physical power button continues to be held down
+ * for an extended period.
+ */
if (power_button_is_pressed()) {
- /* User is still holding the power button */
- pwrbtn_state = PWRBTN_STATE_HELD;
+ /* Ignore the power button hold until release */
+ set_pwrbtn_to_pch(1);
+ pwrbtn_state = PWRBTN_STATE_EAT_RELEASE;
} else {
/* Stop stretching the power button press */
power_button_released(tnow);