usb_queue_reset_device — Reset a USB device from an atomic context
void usb_queue_reset_device ( | struct usb_interface * iface); |
This function can be used to reset a USB device from an atomic
context, where usb_reset_device won't work (as it blocks).
Doing a reset via this method is functionally equivalent to calling
usb_reset_device, except for the fact that it is delayed to a
workqueue. This means that any drivers bound to other interfaces
might be unbound, as well as users from usbfs in user space.
- Scheduling two resets at the same time from two different drivers
attached to two different interfaces of the same device is
possible; depending on how the driver attached to each interface
handles ->pre_reset, the second reset might happen or not.
- If the reset is delayed so long that the interface is unbound from its driver, the reset will be skipped.
- This function can be called during .probe. It can also be called
during .disconnect, but doing so is pointless because the reset
will not occur. If you really want to reset the device during
.disconnect, call usb_reset_device directly -- but watch out
for nested unbinding issues!