mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-12-01 08:59:33 +00:00
bootm: Update bootm_process_cmdline_env() to use flags
At present only one transformation is supported: making the Linux console silent. To prepare for adding more, convert the boolean parameter into a flag value. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
b6386f3841
commit
b3c01678fd
3 changed files with 19 additions and 10 deletions
|
@ -542,16 +542,17 @@ static int fixup_silent_linux(char *buf, int maxlen)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int bootm_process_cmdline_env(bool do_silent)
|
||||
int bootm_process_cmdline_env(int flags)
|
||||
{
|
||||
const int maxlen = MAX_CMDLINE_SIZE;
|
||||
bool do_silent;
|
||||
const char *env;
|
||||
char *buf;
|
||||
int ret;
|
||||
|
||||
/* First check if any action is needed */
|
||||
do_silent = IS_ENABLED(CONFIG_SILENT_CONSOLE) &&
|
||||
!IS_ENABLED(CONFIG_SILENT_U_BOOT_ONLY) && do_silent;
|
||||
!IS_ENABLED(CONFIG_SILENT_U_BOOT_ONLY) && (flags & BOOTM_CL_SILENT);
|
||||
if (!do_silent)
|
||||
return 0;
|
||||
|
||||
|
@ -685,7 +686,8 @@ int do_bootm_states(struct cmd_tbl *cmdtp, int flag, int argc,
|
|||
if (!ret && (states & BOOTM_STATE_OS_BD_T))
|
||||
ret = boot_fn(BOOTM_STATE_OS_BD_T, argc, argv, images);
|
||||
if (!ret && (states & BOOTM_STATE_OS_PREP)) {
|
||||
ret = bootm_process_cmdline_env(images->os.os == IH_OS_LINUX);
|
||||
ret = bootm_process_cmdline_env(images->os.os == IH_OS_LINUX ?
|
||||
BOOTM_CL_SILENT : 0);
|
||||
if (ret) {
|
||||
printf("Cmdline setup failed (err=%d)\n", ret);
|
||||
ret = CMD_RET_FAILURE;
|
||||
|
|
|
@ -75,6 +75,13 @@ void board_quiesce_devices(void);
|
|||
*/
|
||||
void switch_to_non_secure_mode(void);
|
||||
|
||||
/* Flags to control bootm_process_cmdline() */
|
||||
enum bootm_cmdline_t {
|
||||
BOOTM_CL_SILENT = 1 << 0, /* Do silent console processing */
|
||||
|
||||
BOOTM_CL_ALL = 1, /* All substitutions */
|
||||
};
|
||||
|
||||
/**
|
||||
* arch_preboot_os() - arch specific configuration before booting
|
||||
*/
|
||||
|
@ -91,9 +98,9 @@ void board_preboot_os(void);
|
|||
* Updates the 'bootargs' envvar as required. This handles making Linux boot
|
||||
* silently if requested ('silent_linux' envvar)
|
||||
*
|
||||
* @do_silent: Process bootargs for silent console
|
||||
* @flags: Flags to control what happens (see bootm_cmdline_t)
|
||||
* @return 0 if OK, -ENOMEM if out of memory
|
||||
*/
|
||||
int bootm_process_cmdline_env(bool do_silent);
|
||||
int bootm_process_cmdline_env(int flags);
|
||||
|
||||
#endif
|
||||
|
|
10
test/bootm.c
10
test/bootm.c
|
@ -23,26 +23,26 @@ static int bootm_test_silent_var(struct unit_test_state *uts)
|
|||
/* 'silent_linux' not set should do nothing */
|
||||
env_set("silent_linux", NULL);
|
||||
env_set("bootargs", CONSOLE_STR);
|
||||
ut_assertok(bootm_process_cmdline_env(true));
|
||||
ut_assertok(bootm_process_cmdline_env(BOOTM_CL_SILENT));
|
||||
ut_asserteq_str(CONSOLE_STR, env_get("bootargs"));
|
||||
|
||||
env_set("bootargs", NULL);
|
||||
ut_assertok(bootm_process_cmdline_env(true));
|
||||
ut_assertok(bootm_process_cmdline_env(BOOTM_CL_SILENT));
|
||||
ut_assertnull(env_get("bootargs"));
|
||||
|
||||
ut_assertok(env_set("silent_linux", "no"));
|
||||
env_set("bootargs", CONSOLE_STR);
|
||||
ut_assertok(bootm_process_cmdline_env(true));
|
||||
ut_assertok(bootm_process_cmdline_env(BOOTM_CL_SILENT));
|
||||
ut_asserteq_str(CONSOLE_STR, env_get("bootargs"));
|
||||
|
||||
ut_assertok(env_set("silent_linux", "yes"));
|
||||
env_set("bootargs", CONSOLE_STR);
|
||||
ut_assertok(bootm_process_cmdline_env(true));
|
||||
ut_assertok(bootm_process_cmdline_env(BOOTM_CL_SILENT));
|
||||
ut_asserteq_str("console=", env_get("bootargs"));
|
||||
|
||||
/* Empty buffer should still add the string */
|
||||
env_set("bootargs", NULL);
|
||||
ut_assertok(bootm_process_cmdline_env(true));
|
||||
ut_assertok(bootm_process_cmdline_env(BOOTM_CL_SILENT));
|
||||
ut_asserteq_str("console=", env_get("bootargs"));
|
||||
|
||||
return 0;
|
||||
|
|
Loading…
Reference in a new issue