summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYu-Ping Wu <yupingso@chromium.org>2020-06-08 17:22:08 +0800
committerCommit Bot <commit-bot@chromium.org>2020-06-10 09:22:34 +0000
commita85dfbc994fd1d66c4d2fdbe0e32ea531e29eaf9 (patch)
tree25af1aa3eb8642ef59c43201d8beaa04e5b96b29
parent070d4f167ccca67ba06f41c892f588f28d376b4c (diff)
downloadvboot-a85dfbc994fd1d66c4d2fdbe0e32ea531e29eaf9.tar.gz
vboot: add vb2api_use_short_dev_screen_delay() to 2api.h
Add vb2api_use_short_dev_screen_delay() to vboot2 API. BRANCH=none BUG=b:146399181, b:157871585 TEST=make runtests Change-Id: Ice4852a7505e8dba73fa2026e8d433b8e487f556 Signed-off-by: Yu-Ping Wu <yupingso@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2235292 Reviewed-by: Joel Kitching <kitching@chromium.org>
-rw-r--r--firmware/2lib/2misc.c6
-rw-r--r--firmware/2lib/2ui_screens.c3
-rw-r--r--firmware/2lib/include/2api.h8
-rw-r--r--firmware/lib/vboot_audio.c9
-rw-r--r--tests/vb2_misc_tests.c14
5 files changed, 31 insertions, 9 deletions
diff --git a/firmware/2lib/2misc.c b/firmware/2lib/2misc.c
index feee132b..6276d8b9 100644
--- a/firmware/2lib/2misc.c
+++ b/firmware/2lib/2misc.c
@@ -557,3 +557,9 @@ int vb2_dev_boot_usb_allowed(struct vb2_context *ctx)
(gbb->flags & VB2_GBB_FLAG_FORCE_DEV_BOOT_USB) ||
vb2_secdata_fwmp_get_flag(ctx, VB2_SECDATA_FWMP_DEV_ENABLE_USB);
}
+
+int vb2api_use_short_dev_screen_delay(struct vb2_context *ctx)
+{
+ struct vb2_gbb_header *gbb = vb2_get_gbb(ctx);
+ return gbb->flags & VB2_GBB_FLAG_DEV_SCREEN_SHORT_DELAY;
+}
diff --git a/firmware/2lib/2ui_screens.c b/firmware/2lib/2ui_screens.c
index 7423d390..473441ea 100644
--- a/firmware/2lib/2ui_screens.c
+++ b/firmware/2lib/2ui_screens.c
@@ -479,8 +479,7 @@ vb2_error_t vb2_ui_developer_mode_boot_external_action(
vb2_error_t developer_mode_action(struct vb2_ui_context *ui)
{
- struct vb2_gbb_header *gbb = vb2_get_gbb(ui->ctx);
- const int use_short = gbb->flags & VB2_GBB_FLAG_DEV_SCREEN_SHORT_DELAY;
+ const int use_short = vb2api_use_short_dev_screen_delay(ui->ctx);
uint64_t elapsed;
/* Once any user interaction occurs, stop the timer. */
diff --git a/firmware/2lib/include/2api.h b/firmware/2lib/include/2api.h
index 5b3542b5..9eeff85b 100644
--- a/firmware/2lib/include/2api.h
+++ b/firmware/2lib/include/2api.h
@@ -882,6 +882,14 @@ enum vb2_dev_default_boot_target {
enum vb2_dev_default_boot_target vb2api_get_dev_default_boot_target(
struct vb2_context *ctx);
+/**
+ * Whether to use short delay instead of the normal delay in developer screens.
+ *
+ * @param ctx Vboot context
+ * @return 1 for short delay and 0 otherwise.
+ */
+int vb2api_use_short_dev_screen_delay(struct vb2_context *ctx);
+
/*****************************************************************************/
/* APIs provided by the caller to verified boot */
diff --git a/firmware/lib/vboot_audio.c b/firmware/lib/vboot_audio.c
index 7f9b5a5b..c2c599bf 100644
--- a/firmware/lib/vboot_audio.c
+++ b/firmware/lib/vboot_audio.c
@@ -5,6 +5,7 @@
* Delay/beep functions used in dev-mode kernel selection.
*/
+#include "2api.h"
#include "2common.h"
#include "2misc.h"
#include "2sysincludes.h"
@@ -21,16 +22,10 @@ static int beep_count; /* Number of beeps so far */
*/
void vb2_audio_start(struct vb2_context *ctx)
{
- struct vb2_gbb_header *gbb = vb2_get_gbb(ctx);
-
open_time = vb2ex_mtime(); /* "zero" starts now */
beep_count = 0;
- /*
- * Use a short developer screen delay on the first audio if indicated
- * by GBB flags.
- */
- if ((gbb->flags & VB2_GBB_FLAG_DEV_SCREEN_SHORT_DELAY) &&
+ if (vb2api_use_short_dev_screen_delay(ctx) &&
(audio_open_count++ == 0)) {
VB2_DEBUG("vb2_audio_start() - using short dev screen delay\n");
audio_use_short = 1;
diff --git a/tests/vb2_misc_tests.c b/tests/vb2_misc_tests.c
index eaf7869f..f363ba53 100644
--- a/tests/vb2_misc_tests.c
+++ b/tests/vb2_misc_tests.c
@@ -1004,6 +1004,19 @@ static void dev_boot_allowed_tests(void)
"dev boot usb - all flags set");
}
+static void use_dev_screen_short_delay_tests(void)
+{
+ /* Normal delay */
+ reset_common_data();
+ TEST_EQ(vb2api_use_short_dev_screen_delay(ctx), 0,
+ "short delay: no");
+
+ /* Short delay */
+ gbb.flags |= VB2_GBB_FLAG_DEV_SCREEN_SHORT_DELAY;
+ TEST_EQ(vb2api_use_short_dev_screen_delay(ctx), 1,
+ "short delay: yes");
+}
+
int main(int argc, char* argv[])
{
init_workbuf_tests();
@@ -1021,6 +1034,7 @@ int main(int argc, char* argv[])
phone_recovery_enabled_tests();
dev_default_boot_tests();
dev_boot_allowed_tests();
+ use_dev_screen_short_delay_tests();
return gTestSuccess ? 0 : 255;
}