Provided by:
linux-doc-2.6.15_2.6.15-23.39_all 
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 reset any device unless drivers for all of its
interfaces are expecting that reset! Maybe some driver->reset method
should eventually help ensure sufficient cooperation.
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.