usb: kbd: Do not deregister usbkbd twice when using dm
authorHans de Goede <hdegoede@redhat.com>
Sun, 3 Apr 2016 07:18:53 +0000 (09:18 +0200)
committerMarek Vasut <marex@denx.de>
Sun, 10 Apr 2016 15:18:42 +0000 (17:18 +0200)
The dm usb_kbd_remove function() will deregister the usb keyboard for
us on a "usb reset" / "usb stop" so there is no need to manually call
usb_kbd_deregister() in the dm case.

This commit removes usb_kbd_deregister() in the dm case fixing the
following "usb reset" errors:

usb_kbd_remove: warning, ret=-6
device_remove: Device 'usb_kbd' failed to remove, but children are gone

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
cmd/usb.c
common/usb_kbd.c

index 9ed5dc6..97dd6f0 100644 (file)
--- a/cmd/usb.c
+++ b/cmd/usb.c
@@ -541,7 +541,7 @@ static int do_usbboot(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 
 static int do_usb_stop_keyboard(int force)
 {
-#ifdef CONFIG_USB_KEYBOARD
+#if !defined CONFIG_DM_USB && defined CONFIG_USB_KEYBOARD
        if (usb_kbd_deregister(force) != 0) {
                printf("USB not stopped: usbkbd still using USB\n");
                return 1;
index d84865f..97f79f8 100644 (file)
@@ -566,7 +566,6 @@ int drv_usb_kbd_init(void)
        /* No USB Keyboard found */
        return -1;
 }
-#endif
 
 /* Deregister the keyboard. */
 int usb_kbd_deregister(int force)
@@ -599,6 +598,8 @@ int usb_kbd_deregister(int force)
 #endif
 }
 
+#endif
+
 #ifdef CONFIG_DM_USB
 
 static int usb_kbd_probe(struct udevice *dev)