]> git.baikalelectronics.ru Git - uboot.git/commitdiff
bootm: Add a bool parameter to bootm_process_cmdline_env()
authorSimon Glass <sjg@chromium.org>
Thu, 5 Nov 2020 17:33:41 +0000 (10:33 -0700)
committerTom Rini <trini@konsulko.com>
Fri, 4 Dec 2020 21:09:26 +0000 (16:09 -0500)
This function will soon do more than just handle the 'silent linux'
feature. As a first step, update it to take a boolean parameter,
indicating whether or not the processing is required.

Signed-off-by: Simon Glass <sjg@chromium.org>
common/bootm.c
include/bootm.h
test/bootm.c

index 54f64128f867d635cb181242d11576d1a2235f9a..9b0c81d6534e962426a0d0a0a201f93c06b17faa 100644 (file)
@@ -468,15 +468,17 @@ ulong bootm_disable_interrupts(void)
 #define CONSOLE_ARG     "console="
 #define CONSOLE_ARG_LEN (sizeof(CONSOLE_ARG) - 1)
 
-int bootm_process_cmdline_env(void)
+int bootm_process_cmdline_env(bool do_silent)
 {
        char *buf;
        const char *env_val;
        char *cmdline;
        int want_silent;
 
-       if (!IS_ENABLED(CONFIG_SILENT_CONSOLE) &&
-           !IS_ENABLED(CONFIG_SILENT_U_BOOT_ONLY))
+       /* First check if any action is needed */
+       do_silent = IS_ENABLED(CONFIG_SILENT_CONSOLE) &&
+           !IS_ENABLED(CONFIG_SILENT_U_BOOT_ONLY) && do_silent;
+       if (!do_silent)
                return 0;
        cmdline = env_get("bootargs");
 
@@ -631,13 +633,11 @@ 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)) {
-               if (images->os.os == IH_OS_LINUX) {
-                       ret = bootm_process_cmdline_env();
-                       if (ret) {
-                               printf("Cmdline setup failed (err=%d)\n", ret);
-                               ret = CMD_RET_FAILURE;
-                               goto err;
-                       }
+               ret = bootm_process_cmdline_env(images->os.os == IH_OS_LINUX);
+               if (ret) {
+                       printf("Cmdline setup failed (err=%d)\n", ret);
+                       ret = CMD_RET_FAILURE;
+                       goto err;
                }
                ret = boot_fn(BOOTM_STATE_OS_PREP, argc, argv, images);
        }
index 35c27ab960993ca2fe5eca6a892bbb1a0c99402f..f12ee2b3cb322b3e43222baea7d43c84d28d5255 100644 (file)
@@ -91,8 +91,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
  * @return 0 if OK, -ENOMEM if out of memory
  */
-int bootm_process_cmdline_env(void);
+int bootm_process_cmdline_env(bool do_silent);
 
 #endif
index b69bfad4f6742720c5de95254a0b317b69ab7585..c203f0acd608e1994a33a557ed118eb2c4711bc9 100644 (file)
@@ -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());
+       ut_assertok(bootm_process_cmdline_env(true));
        ut_asserteq_str(CONSOLE_STR, env_get("bootargs"));
 
        env_set("bootargs", NULL);
-       ut_assertok(bootm_process_cmdline_env());
+       ut_assertok(bootm_process_cmdline_env(true));
        ut_assertnull(env_get("bootargs"));
 
        ut_assertok(env_set("silent_linux", "no"));
        env_set("bootargs", CONSOLE_STR);
-       ut_assertok(bootm_process_cmdline_env());
+       ut_assertok(bootm_process_cmdline_env(true));
        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());
+       ut_assertok(bootm_process_cmdline_env(true));
        ut_asserteq_str("console=", env_get("bootargs"));
 
        /* Empty buffer should still add the string */
        env_set("bootargs", NULL);
-       ut_assertok(bootm_process_cmdline_env());
+       ut_assertok(bootm_process_cmdline_env(true));
        ut_asserteq_str("console=", env_get("bootargs"));
 
        return 0;