diff --git a/cmd/Kconfig b/cmd/Kconfig index 2cbfc0f87e..8d2e0a9e4e 100644 --- a/cmd/Kconfig +++ b/cmd/Kconfig @@ -153,6 +153,23 @@ config AUTOBOOT_STOP_STR_SHA256 string / password matches a values that is encypted via a SHA256 hash and saved in the environment. +config AUTOBOOT_USE_MENUKEY + bool "Allow a specify key to run a menu from the environment" + depends on !AUTOBOOT_KEYED + help + If a specific key is pressed to stop autoboot, then the commands in + the environment variable 'menucmd' are executed before boot starts. + +config AUTOBOOT_MENUKEY + int "ASCII value of boot key to show a menu" + default 0 + depends on AUTOBOOT_USE_MENUKEY + help + If this key is pressed to stop autoboot, then the commands in the + environment variable 'menucmd' will be executed before boot starts. + For example, 33 means "!" in ASCII, so pressing ! at boot would take + this action. + endmenu config BUILD_BIN2C diff --git a/common/autoboot.c b/common/autoboot.c index a6071ab839..ad189a8ba2 100644 --- a/common/autoboot.c +++ b/common/autoboot.c @@ -224,7 +224,7 @@ static int abortboot_key_sequence(int bootdelay) return abort; } -#ifdef CONFIG_MENUKEY +#ifdef CONFIG_USE_AUTOBOOT_MENUKEY static int menukey; #endif @@ -252,7 +252,7 @@ static int abortboot_single_key(int bootdelay) if (tstc()) { /* we got a key press */ abort = 1; /* don't auto boot */ bootdelay = 0; /* no more delay */ -# ifdef CONFIG_MENUKEY +# ifdef CONFIG_USE_AUTOBOOT_MENUKEY menukey = getc(); # else (void) getc(); /* consume input */ @@ -358,11 +358,11 @@ void autoboot_command(const char *s) #endif } -#ifdef CONFIG_MENUKEY - if (menukey == CONFIG_MENUKEY) { +#ifdef CONFIG_USE_AUTOBOOT_MENUKEY + if (menukey == CONFIG_AUTOBOOT_MENUKEY) { s = env_get("menucmd"); if (s) run_command_list(s, -1, 0); } -#endif /* CONFIG_MENUKEY */ +#endif /* CONFIG_USE_AUTOBOOT_MENUKEY */ } diff --git a/configs/socfpga_vining_fpga_defconfig b/configs/socfpga_vining_fpga_defconfig index 1a9323f822..9e86a23704 100644 --- a/configs/socfpga_vining_fpga_defconfig +++ b/configs/socfpga_vining_fpga_defconfig @@ -8,7 +8,7 @@ CONFIG_USE_BOOTARGS=y CONFIG_BOOTARGS="console=ttyS0,115200" # CONFIG_USE_BOOTCOMMAND is not set CONFIG_USE_PREBOOT=y -CONFIG_PREBOOT="setenv hostname vining-${unit_serial} ; setenv PS1 "${unit_ident} (${unit_serial}) => " ; if gpio input 78 ; then setenv bootdelay 10 ; setenv boottype rcvr ; else setenv bootdelay 5 ; setenv boottype norm ; fi" +CONFIG_PREBOOT="setenv hostname vining-${unit_serial} ; setenv PS1 \"${unit_ident} (${unit_serial}) => \" ; if gpio input 78 ; then setenv bootdelay 10 ; setenv boottype rcvr ; else setenv bootdelay 5 ; setenv boottype norm ; fi" CONFIG_SYS_CONSOLE_IS_IN_ENV=y CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE=y CONFIG_SYS_CONSOLE_ENV_OVERWRITE=y diff --git a/doc/README.autoboot b/doc/README.autoboot index de35f3093d..5e9a5e1cf7 100644 --- a/doc/README.autoboot +++ b/doc/README.autoboot @@ -152,3 +152,11 @@ What they do (Only effective when CONFIG_BOOT_RETRY_TIME is also set) After the countdown timed out, the board will be reset to restart again. + + CONFIG_AUTOBOOT_USE_MENUKEY + CONFIG_AUTOBOOT_MENUKEY + + If this key is pressed to stop autoboot, then the commands in the + environment variable 'menucmd' will be executed before boot starts. + For example, 33 means "!" in ASCII, so pressing ! at boot would take + this action. diff --git a/include/autoboot.h b/include/autoboot.h index 3ebd6f90e3..ac8157e570 100644 --- a/include/autoboot.h +++ b/include/autoboot.h @@ -27,7 +27,7 @@ const char *bootdelay_process(void); * autoboot_command() - run the autoboot command * * If enabled, run the autoboot command returned from bootdelay_process(). - * Also do the CONFIG_MENUKEY processing if enabled. + * Also do the CONFIG_AUTOBOOT_MENUKEY processing if enabled. * * @cmd: Command to run */ diff --git a/scripts/config_whitelist.txt b/scripts/config_whitelist.txt index 28494411fe..3de5021e8f 100644 --- a/scripts/config_whitelist.txt +++ b/scripts/config_whitelist.txt @@ -1140,7 +1140,6 @@ CONFIG_MEMSIZE_MASK CONFIG_MEM_HOLE_16M CONFIG_MEM_INIT_VALUE CONFIG_MEM_REMAP -CONFIG_MENUKEY CONFIG_MENU_SHOW CONFIG_MFG_ENV_SETTINGS CONFIG_MIIM_ADDRESS