summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHsuan Ting Chen <roccochen@chromium.org>2020-05-25 13:46:16 +0800
committerCommit Bot <commit-bot@chromium.org>2020-05-26 03:03:27 +0000
commit26e9494948c31190344b67c6a20e7f4444c1403d (patch)
treea9a96edf949a74285fcf346d33c9f13bdd2c3bc9
parent77bb1fccb2dca1caeb19bec7dfa6d59d7da60be7 (diff)
downloadvboot-26e9494948c31190344b67c6a20e7f4444c1403d.tar.gz
vboot/ui: Fix to_dev action initialization error
Add an entry storing previous status of physical presence button to vb2_ui_context and reset it when recovery_to_dev_init is called. BUG=b:146399181,b:157390248 TEST=make clean && make runtests BRANCH=none Signed-off-by: Hsuan Ting Chen <roccochen@chromium.org> Change-Id: Ia0294a189713f1f99db7309937ea80ff90849bd8 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2214457 Reviewed-by: Yu-Ping Wu <yupingso@chromium.org> Commit-Queue: Yu-Ping Wu <yupingso@chromium.org>
-rw-r--r--firmware/2lib/2ui_screens.c7
-rw-r--r--firmware/2lib/include/2ui.h3
2 files changed, 7 insertions, 3 deletions
diff --git a/firmware/2lib/2ui_screens.c b/firmware/2lib/2ui_screens.c
index c4465a4a..90a10208 100644
--- a/firmware/2lib/2ui_screens.c
+++ b/firmware/2lib/2ui_screens.c
@@ -147,12 +147,13 @@ vb2_error_t recovery_to_dev_init(struct vb2_ui_context *ui)
ui->state.selected_item = RECOVERY_TO_DEV_ITEM_CANCEL;
}
+ ui->physical_presence_button_pressed = 0;
+
return VB2_REQUEST_UI_CONTINUE;
}
vb2_error_t vb2_ui_recovery_to_dev_action(struct vb2_ui_context *ui)
{
- static int pressed_last;
int pressed;
if (ui->state.screen->id != VB2_SCREEN_RECOVERY_TO_DEV) {
@@ -180,10 +181,10 @@ vb2_error_t vb2_ui_recovery_to_dev_action(struct vb2_ui_context *ui)
if (pressed) {
VB2_DEBUG("Physical presence button pressed, "
"awaiting release\n");
- pressed_last = 1;
+ ui->physical_presence_button_pressed = 1;
return VB2_REQUEST_UI_CONTINUE;
}
- if (!pressed_last)
+ if (!ui->physical_presence_button_pressed)
return VB2_REQUEST_UI_CONTINUE;
VB2_DEBUG("Physical presence button released\n");
}
diff --git a/firmware/2lib/include/2ui.h b/firmware/2lib/include/2ui.h
index 0d4df42f..73dd1c75 100644
--- a/firmware/2lib/include/2ui.h
+++ b/firmware/2lib/include/2ui.h
@@ -70,6 +70,9 @@ struct vb2_ui_context {
/* For manual recovery. */
vb2_error_t recovery_rv;
+
+ /* For to_dev transition flow. */
+ int physical_presence_button_pressed;
};
vb2_error_t vb2_ui_change_screen(struct vb2_ui_context *ui, enum vb2_screen id);