diff options
-rw-r--r-- | firmware/lib/vboot_audio.c | 12 | ||||
-rw-r--r-- | tests/vboot_api_devmode_tests.c | 3 | ||||
-rw-r--r-- | tests/vboot_audio_tests.c | 2 |
3 files changed, 14 insertions, 3 deletions
diff --git a/firmware/lib/vboot_audio.c b/firmware/lib/vboot_audio.c index b1b2b8c6..86145355 100644 --- a/firmware/lib/vboot_audio.c +++ b/firmware/lib/vboot_audio.c @@ -45,6 +45,9 @@ uint32_t short_count_ = sizeof(short_notes_) / sizeof(VbDevMusicNote); /* No need to dynamically allocate this, is there? */ static VbAudioContext au; +/* Flag to override GBB_FLAG_DEV_SCREEN_SHORT_DELAY gbb flag */ +int audio_open_count = 0; + /* Convert from msecs to VbExGetTimer() units. */ static uint64_t ticks_per_msec = 0; /* Initialized by VbAudioOpen() */ static uint64_t VbMsecToTicks(uint16_t msec) { @@ -204,7 +207,6 @@ static void VbGetDevMusicNotes(VbAudioContext *audio, int use_short) audio->free_notes_when_done = 0; } - /** * Initialization function. Returns context for processing dev-mode delay. */ @@ -240,12 +242,16 @@ VbAudioContext *VbAudioOpen(VbCommonParams *cparams) * Prepare to generate audio/delay event. Use a short developer screen * delay if indicated by GBB flags. */ - if (gbb->major_version == GBB_MAJOR_VER && gbb->minor_version >= 1 - && (gbb->flags & GBB_FLAG_DEV_SCREEN_SHORT_DELAY)) { + if ((gbb->major_version == GBB_MAJOR_VER && gbb->minor_version >= 1 + && (gbb->flags & GBB_FLAG_DEV_SCREEN_SHORT_DELAY))) { VB2_DEBUG("VbAudioOpen() - using short dev screen delay\n"); use_short = 1; } + /* Only use short dev screen delay on the first audio */ + if (audio_open_count++ > 0) + use_short = 0; + VbGetDevMusicNotes(audio, use_short); VB2_DEBUG("VbAudioOpen() - note count %d\n", audio->note_count); diff --git a/tests/vboot_api_devmode_tests.c b/tests/vboot_api_devmode_tests.c index cc24cee9..6ec74b29 100644 --- a/tests/vboot_api_devmode_tests.c +++ b/tests/vboot_api_devmode_tests.c @@ -149,6 +149,8 @@ static uint32_t kbd_fire_key; static VbError_t beep_return; static note_event_t *expected_event; +extern int audio_open_count; + /* Reset mock data (for use before each test) */ static void ResetMocks(void) { @@ -181,6 +183,7 @@ static void ResetMocks(void) { kbd_fire_key = 0; beep_return = VBERROR_SUCCESS; + audio_open_count = 0; matched_events = 0; max_events = 0; diff --git a/tests/vboot_audio_tests.c b/tests/vboot_audio_tests.c index 07ca438e..99d9bd4f 100644 --- a/tests/vboot_audio_tests.c +++ b/tests/vboot_audio_tests.c @@ -50,6 +50,7 @@ static uint8_t notebuf[sizeof(good_header) + static VbDevMusic *use_hdr; static VbDevMusicNote *use_notes; static uint32_t use_size; +extern int audio_open_count; /* Set correct checksum for custom notes */ void FixChecksum(VbDevMusic *hdr) { @@ -72,6 +73,7 @@ static void ResetMocks(void) { memcpy(use_notes, good_notes, sizeof(good_notes)); FixChecksum(use_hdr); use_size = sizeof(notebuf); + audio_open_count = 0; } /* Compare two sets of notes */ |