diff options
author | Yu-Ping Wu <yupingso@chromium.org> | 2020-06-08 17:22:08 +0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-06-10 09:22:34 +0000 |
commit | a85dfbc994fd1d66c4d2fdbe0e32ea531e29eaf9 (patch) | |
tree | 25af1aa3eb8642ef59c43201d8beaa04e5b96b29 | |
parent | 070d4f167ccca67ba06f41c892f588f28d376b4c (diff) | |
download | vboot-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.c | 6 | ||||
-rw-r--r-- | firmware/2lib/2ui_screens.c | 3 | ||||
-rw-r--r-- | firmware/2lib/include/2api.h | 8 | ||||
-rw-r--r-- | firmware/lib/vboot_audio.c | 9 | ||||
-rw-r--r-- | tests/vb2_misc_tests.c | 14 |
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; } |