diff mbox

[U-Boot] usb: kbd: Do not deregister usbkbd twice when using dm

Message ID 1459667933-2702-1-git-send-email-hdegoede@redhat.com
State Accepted
Commit 9a80e714350a959caadfd6e2405cd1f7e8ea86d3
Delegated to: Marek Vasut
Headers show

Commit Message

Hans de Goede April 3, 2016, 7:18 a.m. UTC
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        | 2 +-
 common/usb_kbd.c | 3 ++-
 2 files changed, 3 insertions(+), 2 deletions(-)

Comments

Marek Vasut April 3, 2016, 5:15 p.m. UTC | #1
On 04/03/2016 09:18 AM, Hans de Goede wrote:
> 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>

Applied, thanks.

Best regards,
Marek Vasut
diff mbox

Patch

diff --git a/cmd/usb.c b/cmd/usb.c
index 719f6f2..f1a7deb 100644
--- a/cmd/usb.c
+++ b/cmd/usb.c
@@ -545,7 +545,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;
diff --git a/common/usb_kbd.c b/common/usb_kbd.c
index d84865f..97f79f8 100644
--- a/common/usb_kbd.c
+++ b/common/usb_kbd.c
@@ -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)