mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-09-28 23:50:26 +09:00
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:
parent
4dcb81545a
commit
d9477a0a4d
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
10
test/bootm.c
10
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 */
|
/* '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;
|
||||||
|
Loading…
Reference in New Issue
Block a user