Skipping display init on normal-mode boot is a vboot feature, not specific to Chrome OS. Fix the code in display_init_required() and pci_dev_init() to check CONFIG_VBOOT rather than CONFIG_CHROMEOS now that the two aren't always the same anymore. Also add a check to guarantee at compile time that CONFIG_VBOOT_OPROM_MATTERS is enabled on all platforms that make a check to this function (when CONFIG_VBOOT is also enabled). The whole display skipping mechanism is based on the oprom_needed NVRAM flag, and skipping display init without enabling the option to tell vboot that it needs to pay attention to that flag would make the whole thing not work right. Change-Id: I5d6421509bdcdaa61b78015af3fa6241fe75bb7f Signed-off-by: Julius Werner <jwerner@chromium.org> Reviewed-on: https://review.coreboot.org/c/coreboot/+/32112 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net> Reviewed-by: Patrick Georgi <pgeorgi@google.com>
49 lines
1.2 KiB
C
49 lines
1.2 KiB
C
/*
|
|
* This file is part of the coreboot project.
|
|
*
|
|
* Copyright (C) 2011 The ChromiumOS Authors. All rights reserved.
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; version 2 of the License.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*/
|
|
|
|
#include <assert.h>
|
|
#include <bootmode.h>
|
|
#include <vendorcode/google/chromeos/chromeos.h>
|
|
|
|
#if ENV_RAMSTAGE
|
|
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;
|
|
}
|
|
#endif
|
|
|
|
int display_init_required(void)
|
|
{
|
|
/* For vboot always honor vboot_handoff_skip_display_init(). */
|
|
if (CONFIG(VBOOT)) {
|
|
/* Must always select OPROM_MATTERS when using this function. */
|
|
if (!CONFIG(VBOOT_OPROM_MATTERS))
|
|
dead_code();
|
|
return !vboot_handoff_skip_display_init();
|
|
}
|
|
|
|
/* By default always initialize display. */
|
|
return 1;
|
|
}
|