diff options
Diffstat (limited to 'firmware/2lib/2ui.c')
-rw-r--r-- | firmware/2lib/2ui.c | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/firmware/2lib/2ui.c b/firmware/2lib/2ui.c index b6892cb9..25037c94 100644 --- a/firmware/2lib/2ui.c +++ b/firmware/2lib/2ui.c @@ -7,19 +7,42 @@ #include "2api.h" #include "2common.h" +#include "2misc.h" +#include "2nvstorage.h" +#include "2return_codes.h" +#include "2secdata.h" #include "2ui.h" +#include "vboot_kernel.h" /*****************************************************************************/ /* Entry points */ vb2_error_t vb2_developer_menu(struct vb2_context *ctx) { + enum vb2_dev_default_boot default_boot; + /* TODO(roccochen): Init, wait for user, and boot. */ vb2ex_display_ui(VB2_SCREEN_BLANK, 0); - while (1); + /* If dev mode was disabled, loop forever. */ + if (!vb2_dev_boot_allowed(ctx)) + while (1); - return VB2_SUCCESS; + /* Boot from the default option. */ + default_boot = vb2_get_dev_boot_target(ctx); + + /* Boot legacy does not return on success */ + if (default_boot == VB2_DEV_DEFAULT_BOOT_LEGACY && + vb2_dev_boot_legacy_allowed(ctx) && + VbExLegacy(VB_ALTFW_DEFAULT) == VB2_SUCCESS) + return VB2_SUCCESS; + + if (default_boot == VB2_DEV_DEFAULT_BOOT_USB && + vb2_dev_boot_usb_allowed(ctx) && + VbTryLoadKernel(ctx, VB_DISK_FLAG_REMOVABLE) == VB2_SUCCESS) + return VB2_SUCCESS; + + return VbTryLoadKernel(ctx, VB_DISK_FLAG_FIXED); } vb2_error_t vb2_broken_recovery_menu(struct vb2_context *ctx) |