[U-Boot] [PATCH] serial: add environment control for SERIAL_MULTI
Allen Martin
amartin at nvidia.com
Thu Oct 25 23:59:50 CEST 2012
Add a new special environment variable "serial" that allows selection
of serial device when CONFIG_SERIAL_MULTI is defined. This replaces
the existing calls to serial_assign() from cmd_nvedit.c and iomux.c
that were not doing anything.
Signed-off-by: Allen Martin <amartin at nvidia.com>
---
common/cmd_nvedit.c | 7 ++++++-
common/iomux.c | 10 ----------
doc/driver-model/UDM-serial.txt | 5 +++--
3 files changed, 9 insertions(+), 13 deletions(-)
diff --git a/common/cmd_nvedit.c b/common/cmd_nvedit.c
index 1f9c674..d1ee07d 100644
--- a/common/cmd_nvedit.c
+++ b/common/cmd_nvedit.c
@@ -238,11 +238,16 @@ int env_check_apply(const char *name, const char *oldval,
/* Try assigning specified device */
if (console_assign(console, newval) < 0)
return 1;
+#endif /* CONFIG_CONSOLE_MUX */
+ }
+#ifdef CONFIG_SERIAL_MULTI
+ /* Check for serial redirection */
+ if (strcmp(name, "serial") == 0) {
if (serial_assign(newval) < 0)
return 1;
-#endif /* CONFIG_CONSOLE_MUX */
}
+#endif /* CONFIG_SERIAL_MULTI */
/*
* Some variables like "ethaddr" and "serial#" can be set only once and
diff --git a/common/iomux.c b/common/iomux.c
index dbc2312..6a75704 100644
--- a/common/iomux.c
+++ b/common/iomux.c
@@ -135,16 +135,6 @@ int iomux_doenv(const int console, const char *arg)
*/
if (console_assign(console, start[j]) < 0)
continue;
- /*
- * This was taken from common/cmd_nvedit.c.
- * This will never work because serial_assign() returns
- * 1 upon error, not -1.
- * This would almost always return an error anyway because
- * serial_assign() expects the name of a serial device, like
- * serial_smc, but the user generally only wants to set serial.
- */
- if (serial_assign(start[j]) < 0)
- continue;
cons_set[cs_idx++] = dev;
}
free(console_args);
diff --git a/doc/driver-model/UDM-serial.txt b/doc/driver-model/UDM-serial.txt
index 9feb2e5..66f3e6b 100644
--- a/doc/driver-model/UDM-serial.txt
+++ b/doc/driver-model/UDM-serial.txt
@@ -26,8 +26,9 @@ and serial_setbrg() are often called from platform-dependent places.
It's important to consider current implementation of CONFIG_SERIAL_MULTI though.
This resides in common/serial.c and behaves as a multiplexer for serial ports.
This, by calling serial_assign(), allows user to switch I/O from one serial port
-to another. Though the environmental variables "stdin", "stdout", "stderr"
-remain set to "serial".
+to another. The environment variable "serial" is used to select which of the
+serial ports is the currently active port. The environmental variables
+"stdin", "stdout", "stderr" remain set to "serial".
These variables are managed by the IOMUX. This resides in common/iomux.c and
manages all console input/output from U-Boot. For serial port, only one IOMUX is
--
1.7.10.4
More information about the U-Boot
mailing list