
The silent variable now updates the global data flag anytime it is changed as well as after the env relocation (in case its value is different from the default env in such cases as NAND env)
Signed-off-by: Joe Hershberger joe.hershberger@ni.com --- common/cmd_nvedit.c | 16 ++++++++++++++++ common/env_common.c | 8 ++++++++ doc/README.silent | 14 ++++++++++---- 3 files changed, 34 insertions(+), 4 deletions(-)
diff --git a/common/cmd_nvedit.c b/common/cmd_nvedit.c index fd05e72..bd52fa4 100644 --- a/common/cmd_nvedit.c +++ b/common/cmd_nvedit.c @@ -303,9 +303,25 @@ int _do_env_set(int flag, int argc, char * const argv[]) /* Delete only ? */ if (argc < 3 || argv[2] == NULL) { int rc = hdelete_r(name, &env_htab); + +#if defined(CONFIG_SILENT_CONSOLE) && \ + defined(CONFIG_SILENT_CONSOLE_UPDATE_ON_SET) + if (strcmp(name, "silent") == 0) { + /* silent is deleted */ + gd->flags &= ~GD_FLG_SILENT; + } +#endif return !rc; }
+#if defined(CONFIG_SILENT_CONSOLE) && \ + defined(CONFIG_SILENT_CONSOLE_UPDATE_ON_SET) + if (strcmp(name, "silent") == 0) { + /* silent is added */ + gd->flags |= GD_FLG_SILENT; + } +#endif + /* * Insert / replace new value */ diff --git a/common/env_common.c b/common/env_common.c index d9e990d..0c7e845 100644 --- a/common/env_common.c +++ b/common/env_common.c @@ -245,6 +245,14 @@ void env_relocate(void) } else { env_relocate_spec(); } + +#if defined(CONFIG_SILENT_CONSOLE) && \ + defined(CONFIG_SILENT_CONSOLE_UPDATE_ON_RELOC) + if (getenv("silent") != NULL) + gd->flags |= GD_FLG_SILENT; + else + gd->flags &= ~GD_FLG_SILENT; +#endif }
#ifdef CONFIG_AUTO_COMPLETE diff --git a/doc/README.silent b/doc/README.silent index a26e3df..a04961f 100644 --- a/doc/README.silent +++ b/doc/README.silent @@ -1,9 +1,15 @@ The config option CONFIG_SILENT_CONSOLE can be used to quiet messages on the console. If the option has been enabled, the output can be -silenced by setting the environment variable "silent". The variable -is latched into the global data at an early stage in the boot process -so deleting it with "setenv" will not take effect until the system is -restarted. +silenced by setting the environment variable "silent". + +- CONFIG_SILENT_CONSOLE_UPDATE_ON_SET + When the "silent" variable is changed with env set, the change + will take effect immediately + +- CONFIG_SILENT_CONSOLE_UPDATE_ON_RELOC + Some environments are not available until relocation (e.g. NAND) + so this will make the value in the flash env take effect at + relocation.
The following actions are taken if "silent" is set at boot time: