All of lore.kernel.org
 help / color / mirror / Atom feed
From: Simon Glass <sjg@chromium.org>
To: u-boot@lists.denx.de
Subject: [PATCH v2 08/12] bootm: Update bootm_process_cmdline_env() to use flags
Date: Thu,  5 Nov 2020 10:33:44 -0700	[thread overview]
Message-ID: <20201105173349.903603-9-sjg@chromium.org> (raw)
In-Reply-To: <20201105173349.903603-1-sjg@chromium.org>

At present only one transformation is supported: making the Linux console
silent. To prepare for adding more, convert the boolean parameter into a
flag value.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

(no changes since v1)

 common/bootm.c  |  8 +++++---
 include/bootm.h | 11 +++++++++--
 test/bootm.c    | 10 +++++-----
 3 files changed, 19 insertions(+), 10 deletions(-)

diff --git a/common/bootm.c b/common/bootm.c
index 4fa909f23bc..912ed906ef3 100644
--- a/common/bootm.c
+++ b/common/bootm.c
@@ -542,16 +542,17 @@ static int fixup_silent_linux(char *buf, int maxlen)
 	return 0;
 }
 
-int bootm_process_cmdline_env(bool do_silent)
+int bootm_process_cmdline_env(int flags)
 {
 	const int maxlen = MAX_CMDLINE_SIZE;
+	bool do_silent;
 	const char *env;
 	char *buf;
 	int ret;
 
 	/* First check if any action is needed */
 	do_silent = IS_ENABLED(CONFIG_SILENT_CONSOLE) &&
-	    !IS_ENABLED(CONFIG_SILENT_U_BOOT_ONLY) && do_silent;
+	    !IS_ENABLED(CONFIG_SILENT_U_BOOT_ONLY) && (flags & BOOTM_CL_SILENT);
 	if (!do_silent)
 		return 0;
 
@@ -685,7 +686,8 @@ 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)) {
-		ret = bootm_process_cmdline_env(images->os.os == IH_OS_LINUX);
+		ret = bootm_process_cmdline_env(images->os.os == IH_OS_LINUX ?
+						BOOTM_CL_SILENT : 0);
 		if (ret) {
 			printf("Cmdline setup failed (err=%d)\n", ret);
 			ret = CMD_RET_FAILURE;
diff --git a/include/bootm.h b/include/bootm.h
index f12ee2b3cb3..4876d7b2882 100644
--- a/include/bootm.h
+++ b/include/bootm.h
@@ -75,6 +75,13 @@ void board_quiesce_devices(void);
  */
 void switch_to_non_secure_mode(void);
 
+/* Flags to control bootm_process_cmdline() */
+enum bootm_cmdline_t {
+	BOOTM_CL_SILENT	= 1 << 0,	/* Do silent console processing */
+
+	BOOTM_CL_ALL	= 1,		/* All substitutions */
+};
+
 /**
  * arch_preboot_os() - arch specific configuration before booting
  */
@@ -91,9 +98,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
+ * @flags: Flags to control what happens (see bootm_cmdline_t)
  * @return 0 if OK, -ENOMEM if out of memory
  */
-int bootm_process_cmdline_env(bool do_silent);
+int bootm_process_cmdline_env(int flags);
 
 #endif
diff --git a/test/bootm.c b/test/bootm.c
index c203f0acd60..ba08920bb17 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(true));
+	ut_assertok(bootm_process_cmdline_env(BOOTM_CL_SILENT));
 	ut_asserteq_str(CONSOLE_STR, env_get("bootargs"));
 
 	env_set("bootargs", NULL);
-	ut_assertok(bootm_process_cmdline_env(true));
+	ut_assertok(bootm_process_cmdline_env(BOOTM_CL_SILENT));
 	ut_assertnull(env_get("bootargs"));
 
 	ut_assertok(env_set("silent_linux", "no"));
 	env_set("bootargs", CONSOLE_STR);
-	ut_assertok(bootm_process_cmdline_env(true));
+	ut_assertok(bootm_process_cmdline_env(BOOTM_CL_SILENT));
 	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(true));
+	ut_assertok(bootm_process_cmdline_env(BOOTM_CL_SILENT));
 	ut_asserteq_str("console=", env_get("bootargs"));
 
 	/* Empty buffer should still add the string */
 	env_set("bootargs", NULL);
-	ut_assertok(bootm_process_cmdline_env(true));
+	ut_assertok(bootm_process_cmdline_env(BOOTM_CL_SILENT));
 	ut_asserteq_str("console=", env_get("bootargs"));
 
 	return 0;
-- 
2.29.1.341.ge80a0c044ae-goog

  parent reply	other threads:[~2020-11-05 17:33 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-11-05 17:33 [PATCH v2 00/12] bootm: Support substitions in bootargs and add tests Simon Glass
2020-11-05 17:33 ` [PATCH v2 01/12] env: Allow returning errors from hdelete_r() Simon Glass
2020-12-07 22:18   ` Tom Rini
2020-11-05 17:33 ` [PATCH v2 02/12] bootm: Add tests for fixup_silent_linux() Simon Glass
2020-12-07 22:18   ` Tom Rini
2020-11-05 17:33 ` [PATCH v2 03/12] bootm: Update fixup_silent_linux() to return an error Simon Glass
2020-12-07 22:18   ` Tom Rini
2020-11-05 17:33 ` [PATCH v2 04/12] bootm: Rename fixup_silent_linux() Simon Glass
2020-12-07 22:18   ` Tom Rini
2020-11-05 17:33 ` [PATCH v2 05/12] bootm: Add a bool parameter to bootm_process_cmdline_env() Simon Glass
2020-12-07 22:19   ` Tom Rini
2020-11-05 17:33 ` [PATCH v2 06/12] bootm: Use size rather than length for CONSOLE_ARG Simon Glass
2020-12-07 22:19   ` Tom Rini
2020-11-05 17:33 ` [PATCH v2 07/12] bootm: Split out bootargs environment reading / writing Simon Glass
2020-12-07 22:19   ` Tom Rini
2020-11-05 17:33 ` Simon Glass [this message]
2020-12-07 22:19   ` [PATCH v2 08/12] bootm: Update bootm_process_cmdline_env() to use flags Tom Rini
2020-11-05 17:33 ` [PATCH v2 09/12] bootm: Allow updating the bootargs in a buffer Simon Glass
2020-12-07 22:19   ` Tom Rini
2020-11-05 17:33 ` [PATCH v2 10/12] x86: zimage: Add silent-console processing Simon Glass
2020-12-07 22:19   ` Tom Rini
2020-11-05 17:33 ` [PATCH v2 11/12] cli: Support macro processing with a fixed-size buffer Simon Glass
2020-12-07 22:19   ` Tom Rini
2020-11-05 17:33 ` [PATCH v2 12/12] bootm: Support string substitution in bootargs Simon Glass
2020-12-07 22:19   ` Tom Rini

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20201105173349.903603-9-sjg@chromium.org \
    --to=sjg@chromium.org \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.