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 <amar...@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

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to