summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--common/bootm.c20
-rw-r--r--include/bootm.h3
-rw-r--r--test/bootm.c10
3 files changed, 17 insertions, 16 deletions
diff --git a/common/bootm.c b/common/bootm.c
index 54f64128f8..9b0c81d653 100644
--- a/common/bootm.c
+++ b/common/bootm.c
@@ -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);
}
diff --git a/include/bootm.h b/include/bootm.h
index 35c27ab960..f12ee2b3cb 100644
--- a/include/bootm.h
+++ b/include/bootm.h
@@ -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
diff --git a/test/bootm.c b/test/bootm.c
index b69bfad4f6..c203f0acd6 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());
+ 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;