diff options
-rw-r--r-- | firmware/include/vboot_api.h | 9 | ||||
-rw-r--r-- | 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 */ |