From 1a03740bb094585a6aeba7c1bd83077d5f219c9f Mon Sep 17 00:00:00 2001 From: Shelley Chen Date: Wed, 28 Dec 2016 14:54:15 -0800 Subject: firmware: calling menu ui when using detachables BUG=chrome-os-partner:61275 BRANCH=None TEST=compile depthcharge with inflags=VB_SALK_INFLAGS_ENABLE_DETACHABLE_UI and run. Change-Id: I4c2351feef51bbf88fefd37986de6f853cd1942e Signed-off-by: Shelley Chen Reviewed-on: https://chromium-review.googlesource.com/424091 Reviewed-by: Randall Spangler --- firmware/include/vboot_api.h | 9 ++++++++- firmware/lib/vboot_api_kernel.c | 10 ++++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/firmware/include/vboot_api.h b/firmware/include/vboot_api.h index f127ab8e..d57f98d0 100644 --- a/firmware/include/vboot_api.h +++ b/firmware/include/vboot_api.h @@ -339,6 +339,8 @@ typedef struct VbSelectAndLoadKernelParams { void *kernel_buffer; /* Size of kernel buffer in bytes */ uint32_t kernel_buffer_size; + /* input flags. Currently used for detachables */ + uint32_t inflags; /* * Outputs from VbSelectAndLoadKernel(); valid only if it returns @@ -354,7 +356,7 @@ typedef struct VbSelectAndLoadKernelParams { uint32_t bootloader_size; /* UniquePartitionGuid for boot partition */ uint8_t partition_guid[16]; - /* Flags passed in by signer */ + /* Flags set by signer */ uint32_t flags; /* * TODO: in H2C, all that pretty much just gets passed to the @@ -364,6 +366,11 @@ typedef struct VbSelectAndLoadKernelParams { */ } VbSelectAndLoadKernelParams; +/* Flag to indicate using detachable menu ui (arrow up/down+power) + * instead of traditional FW screens with ctrl+D, ctrl+U, etc. + */ +#define VB_SALK_INFLAGS_ENABLE_DETACHABLE_UI (1 << 0) + /** * Select and loads the kernel. * diff --git a/firmware/lib/vboot_api_kernel.c b/firmware/lib/vboot_api_kernel.c index f2f39661..53c08b35 100644 --- a/firmware/lib/vboot_api_kernel.c +++ b/firmware/lib/vboot_api_kernel.c @@ -427,11 +427,17 @@ VbError_t VbSelectAndLoadKernel(VbCommonParams *cparams, /* Select boot path */ if (shared->recovery_reason) { /* Recovery boot. This has UI. */ - retval = VbBootRecovery(&ctx, cparams); + if (kparams->inflags & VB_SALK_INFLAGS_ENABLE_DETACHABLE_UI) + retval = VbBootRecoveryMenu(&ctx, cparams); + else + retval = VbBootRecovery(&ctx, cparams); VbExEcEnteringMode(0, VB_EC_RECOVERY); } else if (shared->flags & VBSD_BOOT_DEV_SWITCH_ON) { /* Developer boot. This has UI. */ - retval = VbBootDeveloper(&ctx, cparams); + if (kparams->inflags & VB_SALK_INFLAGS_ENABLE_DETACHABLE_UI) + retval = VbBootDeveloperMenu(&ctx, cparams); + else + retval = VbBootDeveloper(&ctx, cparams); VbExEcEnteringMode(0, VB_EC_DEVELOPER); } else { /* Normal boot */ -- cgit v1.2.1