usb: Fix usb_kbd_deregister when console-muxing is used
authorHans de Goede <hdegoede@redhat.com>
Sun, 11 Jan 2015 19:34:44 +0000 (20:34 +0100)
committerMarek Vasut <marex@denx.de>
Sun, 18 Jan 2015 11:31:36 +0000 (12:31 +0100)
When iomuxing is used we must not only deregister the device with stdio.c,
but also remove the reference to the device in the console_devices array
used by console-muxing. Add a call to iomux_doenv to usb_kbd_deregister to
update console_devices, which will drop the reference.

This fixes the console filling with "Failed to enqueue URB to controller"
messages after a "usb stop force", or when the USB keyboard is gone after a
"usb reset".

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

index 0d477439076cbf4d60c6a89a4d25ab5f2a78207b..ecc3085cc0811b5471cab07415904221153abf33 100644 (file)
@@ -544,6 +544,10 @@ int usb_kbd_deregister(int force)
                data = usb_kbd_dev->privptr;
                if (stdio_deregister_dev(dev, force) != 0)
                        return 1;
+#ifdef CONFIG_CONSOLE_MUX
+               if (iomux_doenv(stdin, getenv("stdin")) != 0)
+                       return 1;
+#endif
 #ifdef CONFIG_SYS_USB_EVENT_POLL_VIA_INT_QUEUE
                destroy_int_queue(usb_kbd_dev, data->intq);
 #endif