]> git.baikalelectronics.ru Git - uboot.git/commitdiff
console: Add option to keep it silent until env is loaded
authorHarald Seiler <hws@denx.de>
Wed, 6 Jul 2022 11:19:10 +0000 (13:19 +0200)
committerTom Rini <trini@konsulko.com>
Thu, 12 Jan 2023 16:25:17 +0000 (11:25 -0500)
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>
common/Kconfig
common/console.c

index 8c71d3c972bf13a45b0286a453ee8cb50e2cc1bf..73e3fe36573da9c9de334b0a98e45af0267f5e67 100644 (file)
@@ -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
index 10ab361d006928016ed12b309f6284c9462a9319..e4301a49322f6f95f37d3edcd2823f2a3eb4248c 100644 (file)
@@ -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;