]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
console: Print out complete stdio device list
authorBin Meng <bmeng@tinylab.org>
Sun, 23 Jul 2023 04:40:37 +0000 (12:40 +0800)
committerLeo Yu-Chi Liang <ycliang@andestech.com>
Wed, 2 Aug 2023 08:32:31 +0000 (16:32 +0800)
At present if both CONSOLE_MUX and SYS_CONSOLE_IS_IN_ENV are on,
during boot, the printed out stdio devices are incomplete, e.g.:
with "stdout=serial,vidconsole", only "vidconsole" is printed.

For such case, we can print out the stdio device name from the
environment variables.

Signed-off-by: Bin Meng <bmeng@tinylab.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Tom Rini <trini@konsulko.com>
common/console.c

index af52897ec38a645b1e29e656b8cf9c883881fac8..98c3ee6ca6b89296deb8d661c8dbe3c3a80cd6fc 100644 (file)
@@ -1014,15 +1014,27 @@ static void stdio_print_current_devices(void)
 {
        char *stdinname, *stdoutname, *stderrname;
 
-       stdinname = stdio_devices[stdin] ?
-                   stdio_devices[stdin]->name :
-                   "No input devices available!";
-       stdoutname = stdio_devices[stdout] ?
-                    stdio_devices[stdout]->name :
-                    "No output devices available!";
-       stderrname = stdio_devices[stderr] ?
-                    stdio_devices[stderr]->name :
-                    "No error devices available!";
+       if (CONFIG_IS_ENABLED(CONSOLE_MUX) &&
+           CONFIG_IS_ENABLED(SYS_CONSOLE_IS_IN_ENV)) {
+               /* stdin stdout and stderr are in environment */
+               stdinname  = env_get("stdin");
+               stdoutname = env_get("stdout");
+               stderrname = env_get("stderr");
+
+               stdinname = stdinname ? : "No input devices available!";
+               stdoutname = stdoutname ? : "No output devices available!";
+               stderrname = stderrname ? : "No error devices available!";
+       } else {
+               stdinname = stdio_devices[stdin] ?
+                       stdio_devices[stdin]->name :
+                       "No input devices available!";
+               stdoutname = stdio_devices[stdout] ?
+                       stdio_devices[stdout]->name :
+                       "No output devices available!";
+               stderrname = stdio_devices[stderr] ?
+                       stdio_devices[stderr]->name :
+                       "No error devices available!";
+       }
 
        /* Print information */
        puts("In:    ");