aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Glass2020-11-05 10:33:44 -0700
committerTom Rini2020-12-04 16:09:26 -0500
commitb3c01678fdb15c63b231743481b9b77c7c4f8549 (patch)
treefdd847df8fa0cc2a019dced609c214f68a21d015
parentb6386f38410f669f706a748d7d292d24ea14fe29 (diff)
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>
-rw-r--r--common/bootm.c8
-rw-r--r--include/bootm.h11
-rw-r--r--test/bootm.c10
3 files changed, 19 insertions, 10 deletions
diff --git a/common/bootm.c b/common/bootm.c
index 4fa909f23bc..912ed906ef3 100644
--- a/common/bootm.c
+++ b/common/bootm.c
@@ -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;
diff --git a/include/bootm.h b/include/bootm.h
index f12ee2b3cb3..4876d7b2882 100644
--- a/include/bootm.h
+++ b/include/bootm.h
@@ -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
diff --git a/test/bootm.c b/test/bootm.c
index c203f0acd60..ba08920bb17 100644
--- a/test/bootm.c
+++ b/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;