diff --git a/src/vendorcode/google/chromeos/Kconfig b/src/vendorcode/google/chromeos/Kconfig index 668cbd0c14..8826a148e8 100644 --- a/src/vendorcode/google/chromeos/Kconfig +++ b/src/vendorcode/google/chromeos/Kconfig @@ -119,6 +119,21 @@ config EC_SOFTWARE_SYNC firmware similar to how vboot verifies the main system firmware. This option selects whether depthcharge should support EC software sync. +config VBOOT_EC_SLOW_UPDATE + bool "EC is slow to update" + default n + depends on EC_SOFTWARE_SYNC + help + Whether the EC (or PD) is slow to update and needs to display a + screen that informs the user the update is happening. + +config VBOOT_OPROM_MATTERS + bool "Video option ROM matters" + default n + depends on VBOOT_VERIFY_FIRMWARE + help + Whether the video option ROM has run matters on this platform. + config VIRTUAL_DEV_SWITCH bool "Virtual developer switch support" default n diff --git a/src/vendorcode/google/chromeos/vbnv_cmos.c b/src/vendorcode/google/chromeos/vbnv_cmos.c index a13726d04b..7c22c6b96b 100644 --- a/src/vendorcode/google/chromeos/vbnv_cmos.c +++ b/src/vendorcode/google/chromeos/vbnv_cmos.c @@ -19,10 +19,14 @@ #include #include +#include #include #include #include #include "chromeos.h" +#if IS_ENABLED(CONFIG_VBOOT_VERIFY_FIRMWARE) +#include "vboot_handoff.h" +#endif #define VBNV_BLOCK_SIZE 16 /* Size of NV storage block in bytes */ @@ -140,6 +144,15 @@ int get_recovery_mode_from_vbnv(void) int vboot_wants_oprom(void) { +#if IS_ENABLED(CONFIG_VBOOT_VERIFY_FIRMWARE) + struct vboot_handoff *vbho; + + /* First check if handoff structure flag exists and is set. */ + vbho = cbmem_find(CBMEM_ID_VBOOT_HANDOFF); + if (vbho && vbho->init_params.flags & VB_INIT_FLAG_OPROM_LOADED) + return 1; +#endif + if (!is_vbnv_initialized()) vbnv_setup(); diff --git a/src/vendorcode/google/chromeos/vboot_loader.c b/src/vendorcode/google/chromeos/vboot_loader.c index 2a1ee3e7a7..d13608c50e 100644 --- a/src/vendorcode/google/chromeos/vboot_loader.c +++ b/src/vendorcode/google/chromeos/vboot_loader.c @@ -230,6 +230,16 @@ static void vboot_invoke_wrapper(struct vboot_handoff *vboot_handoff) *iflags |= VB_INIT_FLAG_EC_SOFTWARE_SYNC; *iflags |= VB_INIT_FLAG_VIRTUAL_REC_SWITCH; } + if (CONFIG_VBOOT_EC_SLOW_UPDATE) + *iflags |= VB_INIT_FLAG_EC_SLOW_UPDATE; + if (CONFIG_VBOOT_OPROM_MATTERS) { + *iflags |= VB_INIT_FLAG_OPROM_MATTERS; + /* Will load VGA option rom during this boot */ + if (developer_mode_enabled() || recovery_mode_enabled() || + vboot_wants_oprom()) { + *iflags |= VB_INIT_FLAG_OPROM_LOADED; + } + } context.handoff = vboot_handoff; context.cparams = &cparams;