"git@gitlab.flux.utah.edu:xcap/xcap-capability-linux.git" did not exist on "8884c092e5e4f9a1b6e44f2e02a3eb5481af87ab"
USB: re-enable interface after driver unbinds
This patch (as1197) fixes an error introduced recently. Since a significant number of devices can't handle Set-Interface requests, we no longer call usb_set_interface() when a driver unbinds from an interface, provided the interface is already in altsetting 0. However the interface still does get disabled, and the call to usb_set_interface() was the only thing re-enabling it. Since the interface doesn't get re-enabled, further attempts to use it fail. So the patch adds a call to usb_enable_interface() when a driver unbinds and the interface is in altsetting 0. For this to work right, the interface's endpoints have to be re-enabled but their toggles have to be left alone. Therefore an additional argument is added to usb_enable_endpoint() and usb_enable_interface(), a flag indicating whether or not the endpoint toggles should be reset. This is a forward-ported version of a patch which fixes Bugzilla #12301. Signed-off-by:Alan Stern <stern@rowland.harvard.edu> Reported-by:
David Roka <roka@dawid.hu> Reported-by:
Erik Ekman <erik@kryo.se> Tested-by:
Erik Ekman <erik@kryo.se> Tested-by:
Alon Bar-Lev <alon.barlev@gmail.com> Signed-off-by:
Greg Kroah-Hartman <gregkh@suse.de>
Showing
- drivers/usb/core/driver.c 6 additions, 3 deletionsdrivers/usb/core/driver.c
- drivers/usb/core/hub.c 1 addition, 1 deletiondrivers/usb/core/hub.c
- drivers/usb/core/message.c 15 additions, 10 deletionsdrivers/usb/core/message.c
- drivers/usb/core/usb.c 1 addition, 1 deletiondrivers/usb/core/usb.c
- drivers/usb/core/usb.h 3 additions, 1 deletiondrivers/usb/core/usb.h
Loading
Please register or sign in to comment