diff options
-rw-r--r-- | common/power_button_x86.c | 13 |
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); |