From d9477a0a4d4c4561941007a8b3db588385aaad07 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Thu, 5 Nov 2020 10:33:41 -0700 Subject: [PATCH] bootm: Add a bool parameter to bootm_process_cmdline_env() 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 --- common/bootm.c | 20 ++++++++++---------- include/bootm.h | 3 ++- test/bootm.c | 10 +++++----- 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; -- 2.39.5