]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - common/usb_kbd.c
x86: Support tracing function
[karo-tx-uboot.git] / common / usb_kbd.c
index b962849920a40c5cc1aefca9f2f1c0425e114d14..3174b5e1bf4b4a7b827edf825725f6f95c24cf9e 100644 (file)
@@ -461,8 +461,13 @@ static int usb_kbd_probe(struct usb_device *dev, unsigned int ifnum)
        usb_set_idle(dev, iface->desc.bInterfaceNumber, REPEAT_RATE, 0);
 
        debug("USB KBD: enable interrupt pipe...\n");
-       usb_submit_int_msg(dev, pipe, data->new, maxp > 8 ? 8 : maxp,
-                               ep->bInterval);
+       if (usb_submit_int_msg(dev, pipe, data->new, maxp > 8 ? 8 : maxp,
+                              ep->bInterval) < 0) {
+               printf("Failed to get keyboard state from device %04x:%04x\n",
+                      dev->descriptor.idVendor, dev->descriptor.idProduct);
+               /* Abort, we don't want to use that non-functional keyboard. */
+               return 0;
+       }
 
        /* Success. */
        return 1;
@@ -496,6 +501,7 @@ int drv_usb_kbd_init(void)
                if (old_dev) {
                        /* Already registered, just return ok. */
                        debug("USB KBD: is already registered.\n");
+                       usb_kbd_deregister();
                        return 1;
                }