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 <sjg@chromium.org>
This commit is contained in:
Simon Glass 2020-11-05 10:33:41 -07:00 committed by Tom Rini
parent 4dcb81545a
commit d9477a0a4d
3 changed files with 17 additions and 16 deletions

View File

@ -468,15 +468,17 @@ ulong bootm_disable_interrupts(void)
#define CONSOLE_ARG "console=" #define CONSOLE_ARG "console="
#define CONSOLE_ARG_LEN (sizeof(CONSOLE_ARG) - 1) #define CONSOLE_ARG_LEN (sizeof(CONSOLE_ARG) - 1)
int bootm_process_cmdline_env(void) int bootm_process_cmdline_env(bool do_silent)
{ {
char *buf; char *buf;
const char *env_val; const char *env_val;
char *cmdline; char *cmdline;
int want_silent; int want_silent;
if (!IS_ENABLED(CONFIG_SILENT_CONSOLE) && /* First check if any action is needed */
!IS_ENABLED(CONFIG_SILENT_U_BOOT_ONLY)) do_silent = IS_ENABLED(CONFIG_SILENT_CONSOLE) &&
!IS_ENABLED(CONFIG_SILENT_U_BOOT_ONLY) && do_silent;
if (!do_silent)
return 0; return 0;
cmdline = env_get("bootargs"); 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)) if (!ret && (states & BOOTM_STATE_OS_BD_T))
ret = boot_fn(BOOTM_STATE_OS_BD_T, argc, argv, images); ret = boot_fn(BOOTM_STATE_OS_BD_T, argc, argv, images);
if (!ret && (states & BOOTM_STATE_OS_PREP)) { if (!ret && (states & BOOTM_STATE_OS_PREP)) {
if (images->os.os == IH_OS_LINUX) { ret = bootm_process_cmdline_env(images->os.os == IH_OS_LINUX);
ret = bootm_process_cmdline_env(); if (ret) {
if (ret) { printf("Cmdline setup failed (err=%d)\n", ret);
printf("Cmdline setup failed (err=%d)\n", ret); ret = CMD_RET_FAILURE;
ret = CMD_RET_FAILURE; goto err;
goto err;
}
} }
ret = boot_fn(BOOTM_STATE_OS_PREP, argc, argv, images); ret = boot_fn(BOOTM_STATE_OS_PREP, argc, argv, images);
} }

View File

@ -91,8 +91,9 @@ void board_preboot_os(void);
* Updates the 'bootargs' envvar as required. This handles making Linux boot * Updates the 'bootargs' envvar as required. This handles making Linux boot
* silently if requested ('silent_linux' envvar) * silently if requested ('silent_linux' envvar)
* *
* @do_silent: Process bootargs for silent console
* @return 0 if OK, -ENOMEM if out of memory * @return 0 if OK, -ENOMEM if out of memory
*/ */
int bootm_process_cmdline_env(void); int bootm_process_cmdline_env(bool do_silent);
#endif #endif

View File

@ -23,26 +23,26 @@ static int bootm_test_silent_var(struct unit_test_state *uts)
/* 'silent_linux' not set should do nothing */ /* 'silent_linux' not set should do nothing */
env_set("silent_linux", NULL); env_set("silent_linux", NULL);
env_set("bootargs", CONSOLE_STR); 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_asserteq_str(CONSOLE_STR, env_get("bootargs"));
env_set("bootargs", NULL); env_set("bootargs", NULL);
ut_assertok(bootm_process_cmdline_env()); ut_assertok(bootm_process_cmdline_env(true));
ut_assertnull(env_get("bootargs")); ut_assertnull(env_get("bootargs"));
ut_assertok(env_set("silent_linux", "no")); ut_assertok(env_set("silent_linux", "no"));
env_set("bootargs", CONSOLE_STR); 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_asserteq_str(CONSOLE_STR, env_get("bootargs"));
ut_assertok(env_set("silent_linux", "yes")); ut_assertok(env_set("silent_linux", "yes"));
env_set("bootargs", CONSOLE_STR); 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")); ut_asserteq_str("console=", env_get("bootargs"));
/* Empty buffer should still add the string */ /* Empty buffer should still add the string */
env_set("bootargs", NULL); env_set("bootargs", NULL);
ut_assertok(bootm_process_cmdline_env()); ut_assertok(bootm_process_cmdline_env(true));
ut_asserteq_str("console=", env_get("bootargs")); ut_asserteq_str("console=", env_get("bootargs"));
return 0; return 0;