vboot: communicate display requirements with vb2api_fw_phase1
Input: tell vb2api_fw_phase1 if display unconditionally available Output: vb2api_fw_phase1 may request coreboot to initialize display, if needed based on some internal request Move setting the VBOOT_FLAG_DISPLAY_REQUESTED flag into verstage_main. BUG=b:124141368, b:124192753, chromium:948529 TEST=make clean && make test-abuild BRANCH=none Change-Id: I81c82c46303564b63b8a32e7f80beb9d891a4628 Cq-Depend: chromium:1564232 Signed-off-by: Joel Kitching <kitching@google.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/32324 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Julius Werner <jwerner@chromium.org>
This commit is contained in:
committed by
Patrick Georgi
parent
9e8cf3cc86
commit
5923d67cfd
@ -68,14 +68,11 @@ static void fill_vboot_handoff(struct vboot_handoff *vboot_handoff,
|
|||||||
vb_sd->flags |= VBSD_BOOT_DEV_SWITCH_ON;
|
vb_sd->flags |= VBSD_BOOT_DEV_SWITCH_ON;
|
||||||
vb_sd->flags |= VBSD_LF_DEV_SWITCH_ON;
|
vb_sd->flags |= VBSD_LF_DEV_SWITCH_ON;
|
||||||
}
|
}
|
||||||
/* Inform vboot if the display was requested by vboot kernel phase
|
/* TODO(chromium:948529): Remove these two flags after downstream
|
||||||
or enabled by dev/rec mode. */
|
vboot code longer reads them. */
|
||||||
if (vboot_wants_oprom() || vb2_sd->recovery_reason ||
|
if (vboot_wants_oprom() || vb2_sd->recovery_reason ||
|
||||||
vb2_sd->flags & VB2_SD_FLAG_DEV_MODE_ENABLED) {
|
vb2_sd->flags & VB2_SD_FLAG_DEV_MODE_ENABLED)
|
||||||
vboot_get_working_data()->flags |= VBOOT_WD_FLAG_DISPLAY_INIT;
|
|
||||||
vb_sd->flags |= VBSD_OPROM_LOADED;
|
vb_sd->flags |= VBSD_OPROM_LOADED;
|
||||||
}
|
|
||||||
/* TODO: Remove when depthcharge no longer reads this flag. */
|
|
||||||
if (CONFIG(VBOOT_MUST_REQUEST_DISPLAY))
|
if (CONFIG(VBOOT_MUST_REQUEST_DISPLAY))
|
||||||
vb_sd->flags |= VBSD_OPROM_MATTERS;
|
vb_sd->flags |= VBSD_OPROM_MATTERS;
|
||||||
|
|
||||||
|
@ -336,6 +336,10 @@ void verstage_main(void)
|
|||||||
if (CONFIG(VBOOT_LID_SWITCH) && !get_lid_switch())
|
if (CONFIG(VBOOT_LID_SWITCH) && !get_lid_switch())
|
||||||
ctx.flags |= VB2_CONTEXT_NOFAIL_BOOT;
|
ctx.flags |= VB2_CONTEXT_NOFAIL_BOOT;
|
||||||
|
|
||||||
|
/* Mainboard/SoC always initializes display. */
|
||||||
|
if (!CONFIG(VBOOT_MUST_REQUEST_DISPLAY))
|
||||||
|
ctx.flags |= VB2_CONTEXT_DISPLAY_INIT;
|
||||||
|
|
||||||
/* Do early init (set up secdata and NVRAM, load GBB) */
|
/* Do early init (set up secdata and NVRAM, load GBB) */
|
||||||
printk(BIOS_INFO, "Phase 1\n");
|
printk(BIOS_INFO, "Phase 1\n");
|
||||||
rv = vb2api_fw_phase1(&ctx);
|
rv = vb2api_fw_phase1(&ctx);
|
||||||
@ -360,6 +364,11 @@ void verstage_main(void)
|
|||||||
vboot_reboot();
|
vboot_reboot();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Is vboot declaring that display is available? If so, we should mark
|
||||||
|
it down, so that the mainboard/SoC knows to initialize display. */
|
||||||
|
if (ctx.flags & VB2_CONTEXT_DISPLAY_INIT)
|
||||||
|
vboot_get_working_data()->flags |= VBOOT_WD_FLAG_DISPLAY_INIT;
|
||||||
|
|
||||||
/* Determine which firmware slot to boot (based on NVRAM) */
|
/* Determine which firmware slot to boot (based on NVRAM) */
|
||||||
printk(BIOS_INFO, "Phase 2\n");
|
printk(BIOS_INFO, "Phase 2\n");
|
||||||
rv = vb2api_fw_phase2(&ctx);
|
rv = vb2api_fw_phase2(&ctx);
|
||||||
|
Reference in New Issue
Block a user