bootstd: Allow enabling BOOTSTD_FULL without needing EXPO
authorSimon Glass <sjg@chromium.org>
Sat, 28 Jan 2023 22:00:18 +0000 (15:00 -0700)
committerTom Rini <trini@konsulko.com>
Mon, 6 Feb 2023 18:04:53 +0000 (13:04 -0500)
It is sometimes useful to have one without the other, e.g. on a device
without a display, since at present the expo feature requires CONFIG_VIDEO
to be enabled.

Update the Makefile and bootflow command to support this, as well as the
EXPO dependency.

Signed-off-by: Simon Glass <sjg@chromium.org>
boot/Kconfig
boot/Makefile
cmd/bootflow.c

index fdcfbae..98e194f 100644 (file)
@@ -561,6 +561,7 @@ endif # BOOTMETH_VBE
 
 config EXPO
        bool "Support for expos - groups of scenes displaying a UI"
+       depends on VIDEO
        default y if BOOTMETH_VBE
        help
          An expo is a way of presenting and collecting information from the
index f990e66..43baf2b 100644 (file)
@@ -30,7 +30,7 @@ obj-$(CONFIG_$(SPL_TPL_)BOOTMETH_SANDBOX) += bootmeth_sandbox.o
 obj-$(CONFIG_$(SPL_TPL_)BOOTMETH_SCRIPT) += bootmeth_script.o
 ifdef CONFIG_$(SPL_TPL_)BOOTSTD_FULL
 obj-$(CONFIG_$(SPL_TPL_)CMD_BOOTEFI_BOOTMGR) += bootmeth_efi_mgr.o
-obj-$(CONFIG_$(SPL_TPL_)BOOTSTD) += bootflow_menu.o
+obj-$(CONFIG_$(SPL_TPL_)EXPO) += bootflow_menu.o
 endif
 
 obj-$(CONFIG_$(SPL_TPL_)OF_LIBFDT) += image-fdt.o
@@ -48,7 +48,7 @@ ifdef CONFIG_SPL_BUILD
 obj-$(CONFIG_SPL_LOAD_FIT) += common_fit.o
 endif
 
-obj-$(CONFIG_$(SPL_TPL_)BOOTMETH_VBE) += expo.o scene.o scene_menu.o
+obj-$(CONFIG_$(SPL_TPL_)EXPO) += expo.o scene.o scene_menu.o
 
 obj-$(CONFIG_$(SPL_TPL_)BOOTMETH_VBE) += vbe.o vbe_request.o
 obj-$(CONFIG_$(SPL_TPL_)BOOTMETH_VBE_SIMPLE) += vbe_simple.o
index 692bc6d..3548bbb 100644 (file)
@@ -394,15 +394,20 @@ static int do_bootflow_menu(struct cmd_tbl *cmdtp, int flag, int argc,
        if (ret)
                return CMD_RET_FAILURE;
 
-       ret = bootflow_menu_run(std, text_mode, &bflow);
-       if (ret) {
-               if (ret == -EAGAIN)
-                       printf("Nothing chosen\n");
-               else
-                       printf("Menu failed (err=%d)\n", ret);
-
-               return CMD_RET_FAILURE;
+       if (IS_ENABLED(CONFIG_EXPO)) {
+               ret = bootflow_menu_run(std, text_mode, &bflow);
+               if (ret) {
+                       if (ret == -EAGAIN)
+                               printf("Nothing chosen\n");
+                       else
+                               printf("Menu failed (err=%d)\n", ret);
+               }
+       } else {
+               printf("Menu not supported\n");
+               ret = -ENOSYS;
        }
+       if (ret)
+               return CMD_RET_FAILURE;
 
        printf("Selected: %s\n", bflow->os_name ? bflow->os_name : bflow->name);
        std->cur_bootflow = bflow;