Add CONFIG_CMD_STANDALONE_EFIBOOTMGR.
With this patch, EFI boot manager can be kicked in by a standalone
command, efibootmgr.

Signed-off-by: AKASHI Takahiro <takahiro.aka...@linaro.org>
---
 cmd/Kconfig   |  8 ++++++++
 cmd/bootefi.c | 35 +++++++++++++++++++++++++++++++++++
 2 files changed, 43 insertions(+)

diff --git a/cmd/Kconfig b/cmd/Kconfig
index 0b07b3b9d777..6c9a9f821e54 100644
--- a/cmd/Kconfig
+++ b/cmd/Kconfig
@@ -224,6 +224,14 @@ config CMD_BOOTEFI
        help
          Boot an EFI image from memory.
 
+config CMD_STANDALONE_EFIBOOTMGR
+       bool "Enable EFI Boot Manager as a standalone command"
+       depends on CMD_BOOTEFI
+       default n
+       help
+          With this option enabled, EFI Boot Manager can be invoked
+         as a standalone command.
+
 config CMD_BOOTEFI_HELLO_COMPILE
        bool "Compile a standard EFI hello world binary for testing"
        depends on CMD_BOOTEFI && !CPU_V7M && !SANDBOX
diff --git a/cmd/bootefi.c b/cmd/bootefi.c
index 97d49a53a44b..1afa86256670 100644
--- a/cmd/bootefi.c
+++ b/cmd/bootefi.c
@@ -631,3 +631,38 @@ void efi_set_bootdev(const char *dev, const char *devnr, 
const char *path)
                bootefi_image_path = NULL;
        }
 }
+
+#ifdef CONFIG_CMD_STANDALONE_EFIBOOTMGR
+static int do_efibootmgr_cmd(cmd_tbl_t *cmdtp, int flag, int argc,
+                            char * const argv[])
+{
+       char *fdt_opt;
+       int ret;
+
+       if (argc != 1)
+               return CMD_RET_USAGE;
+
+       fdt_opt = env_get("fdtaddr");
+       if (!fdt_opt)
+               fdt_opt = env_get("fdtcontroladdr");
+
+       ret = do_efibootmgr(fdt_opt);
+
+       free(fdt_opt);
+
+       return ret;
+}
+
+#ifdef CONFIG_SYS_LONGHELP
+static char efibootmgr_help_text[] =
+       "(no arguments)\n"
+       " - Launch EFI boot manager and execute EFI application\n"
+       "   based on BootNext and BootOrder variables\n";
+#endif
+
+U_BOOT_CMD(
+       efibootmgr, 1, 0, do_efibootmgr_cmd,
+       "Launch EFI boot manager",
+       efibootmgr_help_text
+);
+#endif /* CONFIG_CMD_STANDALONE_EFIBOOTMGR */
-- 
2.20.1

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to