stdin might not be set, which would cause iomux_doenv() to fail
therefore causing probe_usb_keyboard() to fail.  Furthermore if we do
have iomux enabled, the sensible thing (in terms of user experience)
would be to simply add ourselves to the list of stdin devices.

Signed-off-by: Rob Clark <robdcl...@gmail.com>
---
 common/usb_kbd.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/common/usb_kbd.c b/common/usb_kbd.c
index d2d29cc98f..72cf78abd4 100644
--- a/common/usb_kbd.c
+++ b/common/usb_kbd.c
@@ -517,7 +517,21 @@ static int probe_usb_keyboard(struct usb_device *dev)
 
        stdinname = getenv("stdin");
 #if CONFIG_IS_ENABLED(CONSOLE_MUX)
+       char *devname = DEVNAME;
+       /* stdin might not be set yet.. either way, with console-mux the
+        * sensible thing to do is add ourselves to the list of stdio
+        * devices:
+        */
+       if (stdinname) {
+               char *newstdin = malloc(strlen(stdinname) + strlen(","DEVNAME) 
+ 1);
+               sprintf(newstdin, "%s,"DEVNAME, stdinname);
+               stdinname = newstdin;
+       } else {
+               stdinname = devname;
+       }
        error = iomux_doenv(stdin, stdinname);
+       if (stdinname != devname)
+               free(stdinname);
        if (error)
                return error;
 #else
-- 
2.13.0

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

Reply via email to