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 <s...@chromium.org>
---

 common/bootm.c  |  8 +++++---
 include/bootm.h | 11 +++++++++--
 test/bootm.c    | 10 +++++-----
 3 files changed, 19 insertions(+), 10 deletions(-)

diff --git a/common/bootm.c b/common/bootm.c
index 41965fa304c..5a5b79c5cd0 100644
--- a/common/bootm.c
+++ b/common/bootm.c
@@ -540,16 +540,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;
 
@@ -683,7 +684,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;
-- 
2.29.0.rc1.297.gfa9743e501-goog

Reply via email to