From 6eeddec87185eac611ceb3fb8003f04c503fd54e Mon Sep 17 00:00:00 2001 From: Matt Delco Date: Thu, 21 Mar 2019 12:18:49 -0700 Subject: vboot: remove workaround in diagnostics UI The cr50 has been changed to report live status of the power button so this workaround is no longer needed. BUG=b:128431787 BRANCH=None TEST=Locally built and flashed onto system with modified cr50. Verified that power button status is read and works reliably. Change-Id: Ia9b33610c897085e79dd18805350c41e17e3d9f2 Signed-off-by: Matt Delco Reviewed-on: https://chromium-review.googlesource.com/1534621 Commit-Ready: Matt Delco Tested-by: Matt Delco Reviewed-by: Julius Werner --- firmware/lib/vboot_ui.c | 38 ++++++++++++++------------------------ 1 file changed, 14 insertions(+), 24 deletions(-) diff --git a/firmware/lib/vboot_ui.c b/firmware/lib/vboot_ui.c index 5934d0c1..6009d90d 100644 --- a/firmware/lib/vboot_ui.c +++ b/firmware/lib/vboot_ui.c @@ -403,6 +403,7 @@ static VbError_t vb2_check_diagnostic_key(struct vb2_context *ctx, static VbError_t vb2_diagnostics_ui(struct vb2_context *ctx) { int active = 1; + int power_button_was_released = 0; int power_button_was_pressed = 0; VbError_t result = VBERROR_REBOOT_REQUIRED; int action_confirmed = 0; @@ -422,33 +423,22 @@ static VbError_t vb2_diagnostics_ui(struct vb2_context *ctx) * on detachables, and this function wants to see for itself * that the power button isn't currently pressed. */ - uint32_t power_pressed = - VbExGetSwitches(VB_SWITCH_FLAG_PHYS_PRESENCE_PRESSED); - /* - * TODO(delco): Remove this workaround. On Wilco a button - * press is only reported a single time regardless of the - * duration of the press. Until it's changed to report the - * live/current status of the button we can't ignore when - * VbWantShutdown() reports a button press (well, we can - * ignore it but the user might have to press the power button - * more than once for this code to react). - */ - int shutdown = VbWantShutdown(ctx, 0); - if (shutdown & VB_SHUTDOWN_REQUEST_POWER_BUTTON) { - power_pressed = 1; - } - - if (power_pressed) { - power_button_was_pressed = 1; - } else if (power_button_was_pressed) { - VB2_DEBUG("vb2_diagnostics_ui() - power released\n"); - action_confirmed = 1; - active = 0; - break; + if (VbExGetSwitches(VB_SWITCH_FLAG_PHYS_PRESENCE_PRESSED)) { + /* Wait for a release before registering a press. */ + if (power_button_was_released) + power_button_was_pressed = 1; + } else { + power_button_was_released = 1; + if (power_button_was_pressed) { + VB2_DEBUG("vb2_diagnostics_ui() - power released\n"); + action_confirmed = 1; + active = 0; + break; + } } /* Check the lid and ignore the power button. */ - if (shutdown & VB_SHUTDOWN_REQUEST_LID_CLOSED) { + if (VbWantShutdown(ctx, 0) & ~VB_SHUTDOWN_REQUEST_POWER_BUTTON) { VB2_DEBUG("vb2_diagnostics_ui() - shutdown request\n"); result = VBERROR_SHUTDOWN_REQUESTED; active = 0; -- cgit v1.2.1