If BMP_LOGO is set, currently display_init_required() will always return 1, so that platform code will always initialize display. However, that information isn't passed to vboot, which may result in unnecessary extra reboots, for example when the payload needs to request display init (by vb2api_need_reboot_for_display()). Since there is already a Kconfig option VBOOT_ALWAYS_ENABLE_DISPLAY to tell vboot that "display is available on this boot", enable it by default if BMP_LOGO is set. BUG=b:345085042 TEST=none BRANCH=none Change-Id: I20113ec464aa036d0498dedb50f0e82cb677ae93 Signed-off-by: Yu-Ping Wu <yupingso@chromium.org> Reviewed-on: https://review.coreboot.org/c/coreboot/+/83256 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Subrata Banik <subratabanik@google.com> Reviewed-by: Julius Werner <jwerner@chromium.org>
35 lines
697 B
C
35 lines
697 B
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
|
|
#include <assert.h>
|
|
#include <bootmode.h>
|
|
#include <security/vboot/misc.h>
|
|
#include <vb2_api.h>
|
|
|
|
static int gfx_init_done = -1;
|
|
|
|
int gfx_get_init_done(void)
|
|
{
|
|
if (gfx_init_done < 0)
|
|
return 0;
|
|
return gfx_init_done;
|
|
}
|
|
|
|
void gfx_set_init_done(int done)
|
|
{
|
|
gfx_init_done = done;
|
|
}
|
|
|
|
int display_init_required(void)
|
|
{
|
|
/* For vboot, honor VB2_CONTEXT_DISPLAY_INIT. */
|
|
if (CONFIG(VBOOT)) {
|
|
/* Must always select MUST_REQUEST_DISPLAY when using this
|
|
function. */
|
|
if (!CONFIG(VBOOT_MUST_REQUEST_DISPLAY))
|
|
dead_code();
|
|
return vboot_get_context()->flags & VB2_CONTEXT_DISPLAY_INIT;
|
|
}
|
|
|
|
/* By default always initialize display. */
|
|
return 1;
|
|
}
|