summaryrefslogtreecommitdiff
path: root/firmware/lib/vboot_api_init.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/lib/vboot_api_init.c')
-rw-r--r--firmware/lib/vboot_api_init.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/firmware/lib/vboot_api_init.c b/firmware/lib/vboot_api_init.c
index b83214f2..38bc8793 100644
--- a/firmware/lib/vboot_api_init.c
+++ b/firmware/lib/vboot_api_init.c
@@ -82,6 +82,10 @@ VbError_t VbInit(VbCommonParams *cparams, VbInitParams *iparams)
shared->flags |= VBSD_EC_SLOW_UPDATE;
if (iparams->flags & VB_INIT_FLAG_VIRTUAL_REC_SWITCH)
shared->flags |= VBSD_BOOT_REC_SWITCH_VIRTUAL;
+ if (iparams->flags & VB_INIT_FLAG_OPROM_MATTERS)
+ shared->flags |= VBSD_OPROM_MATTERS;
+ if (iparams->flags & VB_INIT_FLAG_OPROM_LOADED)
+ shared->flags |= VBSD_OPROM_LOADED;
is_s3_resume = (iparams->flags & VB_INIT_FLAG_S3_RESUME ? 1 : 0);
@@ -327,7 +331,14 @@ VbError_t VbInit(VbCommonParams *cparams, VbInitParams *iparams)
if ((iparams->flags & VB_INIT_FLAG_OPROM_MATTERS) &&
(iparams->flags & VB_INIT_FLAG_OPROM_LOADED)) {
VbNvSet(&vnc, VBNV_OPROM_NEEDED, 0);
- retval = VBERROR_VGA_OPROM_MISMATCH;
+ /*
+ * If this is a system with slow EC update then don't
+ * reboot immediately in case VGA option ROM is still
+ * needed to display an update screen. The reboot will
+ * be requested after EC software sync is complete.
+ */
+ if (!(iparams->flags & VB_INIT_FLAG_EC_SLOW_UPDATE))
+ retval = VBERROR_VGA_OPROM_MISMATCH;
VBDEBUG(("VbInit() has oprom, doesn't need it\n"));
}
}