summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/vendorcode/google/chromeos/Kconfig15
-rw-r--r--src/vendorcode/google/chromeos/vbnv_cmos.c13
-rw-r--r--src/vendorcode/google/chromeos/vboot_loader.c10
3 files changed, 38 insertions, 0 deletions
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 <types.h>
#include <string.h>
+#include <cbmem.h>
#include <console/console.h>
#include <pc80/mc146818rtc.h>
#include <arch/early_variables.h>
#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;