summaryrefslogtreecommitdiff
path: root/config/u-boot/x86/patches/0004-Add-an-8sec-autoboot-timeout-on-the-bootflow-menu.patch
diff options
context:
space:
mode:
Diffstat (limited to 'config/u-boot/x86/patches/0004-Add-an-8sec-autoboot-timeout-on-the-bootflow-menu.patch')
-rw-r--r--config/u-boot/x86/patches/0004-Add-an-8sec-autoboot-timeout-on-the-bootflow-menu.patch65
1 files changed, 65 insertions, 0 deletions
diff --git a/config/u-boot/x86/patches/0004-Add-an-8sec-autoboot-timeout-on-the-bootflow-menu.patch b/config/u-boot/x86/patches/0004-Add-an-8sec-autoboot-timeout-on-the-bootflow-menu.patch
new file mode 100644
index 00000000..3790e6ed
--- /dev/null
+++ b/config/u-boot/x86/patches/0004-Add-an-8sec-autoboot-timeout-on-the-bootflow-menu.patch
@@ -0,0 +1,65 @@
+From 1b1673e76dae73885089415132284e9a14ecd4ac Mon Sep 17 00:00:00 2001
+From: Leah Rowe <info@minifree.org>
+Date: Tue, 3 Dec 2024 20:31:32 +0000
+Subject: [PATCH 1/1] Add an 8sec autoboot timeout on the bootflow menu
+
+Otherwise, you have to press enter to load from a boot option,
+which is unacceptable on headless setups.
+
+If you press the arrow keys to interrupt it, the timer will stop
+and you must then press enter to boot an option.
+
+Otherwise, if you just leave U-Boot to do its thing, it will
+automatically boot what was selected, e.g. installed OS.
+
+Signed-off-by: Leah Rowe <info@minifree.org>
+---
+ boot/bootflow_menu.c | 11 ++++++++++-
+ 1 file changed, 10 insertions(+), 1 deletion(-)
+
+diff --git a/boot/bootflow_menu.c b/boot/bootflow_menu.c
+index 9d0dc352f9..c788b86cdc 100644
+--- a/boot/bootflow_menu.c
++++ b/boot/bootflow_menu.c
+@@ -59,7 +59,7 @@ int bootflow_menu_new(struct expo **expp)
+ ret = scene_menu(scn, "main", OBJ_MENU, &menu);
+ ret |= scene_obj_set_pos(scn, OBJ_MENU, MARGIN_LEFT, 100);
+ ret |= scene_txt_str(scn, "title", OBJ_MENU_TITLE, STR_MENU_TITLE,
+- "U-Boot - Boot Menu", NULL);
++ "**** The selected menu item will autoboot in a few seconds unless interrupted! ****", NULL);
+ ret |= scene_menu_set_title(scn, OBJ_MENU, OBJ_PROMPT);
+
+ logo = video_get_u_boot_logo();
+@@ -185,6 +185,8 @@ int bootflow_menu_run(struct bootstd_priv *std, bool text_mode,
+ uint sel_id;
+ bool done;
+ int ret;
++ int bootflow_delay=8000;
++ bool bootflow_countdown=true;
+
+ cli_ch_init(cch);
+
+@@ -231,6 +233,12 @@ int bootflow_menu_run(struct bootstd_priv *std, bool text_mode,
+ schedule();
+ mdelay(2);
+ ichar = cli_ch_process(cch, -ETIMEDOUT);
++ if (bootflow_countdown == true) {
++ bootflow_delay -= 2;
++ if (bootflow_delay <= 0) {
++ ichar='\n';
++ }
++ }
+ }
+ if (!ichar) {
+ ichar = getchar();
+@@ -265,6 +273,7 @@ int bootflow_menu_run(struct bootstd_priv *std, bool text_mode,
+ break;
+ }
+ }
++ bootflow_countdown = false;
+ } while (!done);
+
+ if (ret)
+--
+2.39.5
+