usb_reset_device(9)
NAME
usb_reset_device - perform a USB port reset to reinitialize a device
SYNOPSIS
int usb_reset_device(struct usb_device * udev);
ARGUMENTS
- udev
- device to reset (not in SUSPENDED or NOTATTACHED state)
DESCRIPTION
WARNING - donīt use this routine to reset a composite device (one with
multiple interfaces owned by separate drivers)! Use
usb_reset_composite_device instead.
Do a port reset, reassign the deviceīs address, and establish its
former operating configuration. If the reset fails, or the deviceīs
descriptors change from their values before the reset, or the original
configuration and altsettings cannot be restored, a flag will be set
telling khubd to pretend the device has been disconnected and then
re-connected. All drivers will be unbound, and the device will be
re-enumerated and probed all over again.
Returns 0 if the reset succeeded, -ENODEV if the device has been
flagged for logical disconnection, or some other negative error code if
the reset wasnīt even attempted.
The caller must own the device lock. For example, itīs safe to use this from a driver probe routine after downloading new firmware. For calls that might not occur during probe, drivers should lock the device using usb_lock_device_for_reset.
LOCKING EXCEPTION
This routine may also be called from within an autoresume handler. Such
usage wonīt conflict with other tasks holding the device lock because
these tasks should always call usb_autopm_resume_device, thereby
preventing any unwanted autoresume.