aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHarald Seiler <hws@denx.de>2022-07-06 13:19:10 +0200
committerTom Rini <trini@konsulko.com>2023-01-12 11:25:17 -0500
commit33965c7e18a44b1b15c83921393a9cfc123f0e90 (patch)
tree566a967c7605e13b9a9fcb9617a16244caa78509
parentf58885d002302b8047446a6a15f7376bb7b1ea32 (diff)
downloadu-boot-33965c7e18a44b1b15c83921393a9cfc123f0e90.zip
u-boot-33965c7e18a44b1b15c83921393a9cfc123f0e90.tar.gz
u-boot-33965c7e18a44b1b15c83921393a9cfc123f0e90.tar.bz2
console: Add option to keep it silent until env is loaded
Add a config-option which forces the console to stay silent until the proper environment is loaded from flash. This is important when the default environment does not silence the console but no output must be printed when 'silent' is set in the flash environment. After the environment from flash is loaded, the console will be silenced/unsilenced depending on it. If PRE_CONSOLE_BUFFER is also used, the buffer will now be flushed if the console should not be silenced. Signed-off-by: Harald Seiler <hws@denx.de> Reviewed-by: Simon Glass <sjg@chromium.org>
-rw-r--r--common/Kconfig10
-rw-r--r--common/console.c5
2 files changed, 15 insertions, 0 deletions
diff --git a/common/Kconfig b/common/Kconfig
index 8c71d3c..73e3fe3 100644
--- a/common/Kconfig
+++ b/common/Kconfig
@@ -164,6 +164,16 @@ config SILENT_CONSOLE_UPDATE_ON_RELOC
(e.g. NAND). This option makes the value of the 'silent'
environment variable take effect at relocation.
+config SILENT_CONSOLE_UNTIL_ENV
+ bool "Keep console silent until environment is loaded"
+ depends on SILENT_CONSOLE
+ help
+ This option makes sure U-Boot will never use the console unless the
+ environment from flash does not contain the 'silent' variable. If
+ set, the console is kept silent until after the environment was
+ loaded. Use this in combination with PRE_CONSOLE_BUFFER to print out
+ earlier messages after loading the environment when allowed.
+
config PRE_CONSOLE_BUFFER
bool "Buffer characters before the console is available"
help
diff --git a/common/console.c b/common/console.c
index 10ab361..e4301a4 100644
--- a/common/console.c
+++ b/common/console.c
@@ -970,6 +970,11 @@ static bool console_update_silent(void)
if (!IS_ENABLED(CONFIG_SILENT_CONSOLE))
return false;
+ if (IS_ENABLED(CONFIG_SILENT_CONSOLE_UNTIL_ENV) && !(gd->flags & GD_FLG_ENV_READY)) {
+ gd->flags |= GD_FLG_SILENT;
+ return false;
+ }
+
if (env_get("silent")) {
gd->flags |= GD_FLG_SILENT;
return false;