Browse Source

console: Print out complete stdio device list

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>
Bin Meng 10 months ago
parent
commit
6b343ab38d
1 changed files with 21 additions and 9 deletions
  1. 21 9
      common/console.c

+ 21 - 9
common/console.c

@@ -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:    ");