usb: kbd: allow probing even if usbkbd not in stdin
authorKory Maincent <kory.maincent@bootlin.com>
Wed, 22 Jun 2022 08:59:31 +0000 (10:59 +0200)
committerMarek Vasut <marex@denx.de>
Tue, 12 Jul 2022 19:59:54 +0000 (21:59 +0200)
For now the driver does not probe if usbkbd was not present in stdin.
This presents two issues, we can not probe the driver before setting stdin
and we can not use this driver in other manner than stdin console.

This patch fixes this by adding an else statement. It simply probes the
driver without console management in the case "usbkbd" is not in stdin.

Signed-off-by: Kory Maincent <kory.maincent@bootlin.com>
common/usb_kbd.c

index 352d86fb2ecede259107bb75a57fb09645dba6d1..d385bea532e24d86259c937f29a788cfce6a46c3 100644 (file)
@@ -581,21 +581,22 @@ static int probe_usb_keyboard(struct usb_device *dev)
 
        stdinname = env_get("stdin");
 #if CONFIG_IS_ENABLED(CONSOLE_MUX)
-       error = iomux_doenv(stdin, stdinname);
-       if (error)
-               return error;
+       if (strstr(stdinname, DEVNAME) != NULL) {
+               error = iomux_doenv(stdin, stdinname);
+               if (error)
+                       return error;
+       }
 #else
        /* Check if this is the standard input device. */
-       if (strcmp(stdinname, DEVNAME))
-               return 1;
-
-       /* Reassign the console */
-       if (overwrite_console())
-               return 1;
+       if (!strcmp(stdinname, DEVNAME)) {
+               /* Reassign the console */
+               if (overwrite_console())
+                       return 1;
 
-       error = console_assign(stdin, DEVNAME);
-       if (error)
-               return error;
+               error = console_assign(stdin, DEVNAME);
+               if (error)
+                       return error;
+       }
 #endif
 
        return 0;