diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/hid/usbhid/hid-core.c | 2 | ||||
-rw-r--r-- | drivers/usb/core/devio.c | 2 | ||||
-rw-r--r-- | drivers/usb/core/hub.c | 33 | ||||
-rw-r--r-- | drivers/usb/storage/transport.c | 4 |
4 files changed, 21 insertions, 20 deletions
diff --git a/drivers/hid/usbhid/hid-core.c b/drivers/hid/usbhid/hid-core.c index 69fa79b6b51c..27fe4d8912cb 100644 --- a/drivers/hid/usbhid/hid-core.c +++ b/drivers/hid/usbhid/hid-core.c | |||
@@ -122,7 +122,7 @@ static void hid_reset(struct work_struct *work) | |||
122 | dev_dbg(&usbhid->intf->dev, "resetting device\n"); | 122 | dev_dbg(&usbhid->intf->dev, "resetting device\n"); |
123 | rc = rc_lock = usb_lock_device_for_reset(hid_to_usb_dev(hid), usbhid->intf); | 123 | rc = rc_lock = usb_lock_device_for_reset(hid_to_usb_dev(hid), usbhid->intf); |
124 | if (rc_lock >= 0) { | 124 | if (rc_lock >= 0) { |
125 | rc = usb_reset_composite_device(hid_to_usb_dev(hid)); | 125 | rc = usb_reset_device(hid_to_usb_dev(hid)); |
126 | if (rc_lock) | 126 | if (rc_lock) |
127 | usb_unlock_device(hid_to_usb_dev(hid)); | 127 | usb_unlock_device(hid_to_usb_dev(hid)); |
128 | } | 128 | } |
diff --git a/drivers/usb/core/devio.c b/drivers/usb/core/devio.c index bc1cce5cf758..e09935acae80 100644 --- a/drivers/usb/core/devio.c +++ b/drivers/usb/core/devio.c | |||
@@ -872,7 +872,7 @@ static int proc_connectinfo(struct dev_state *ps, void __user *arg) | |||
872 | 872 | ||
873 | static int proc_resetdevice(struct dev_state *ps) | 873 | static int proc_resetdevice(struct dev_state *ps) |
874 | { | 874 | { |
875 | return usb_reset_composite_device(ps->dev); | 875 | return usb_reset_device(ps->dev); |
876 | } | 876 | } |
877 | 877 | ||
878 | static int proc_setintf(struct dev_state *ps, void __user *arg) | 878 | static int proc_setintf(struct dev_state *ps, void __user *arg) |
diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c index 207c33d369be..bb3ecc4c08f2 100644 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c | |||
@@ -135,6 +135,8 @@ EXPORT_SYMBOL_GPL(ehci_cf_port_reset_rwsem); | |||
135 | #define HUB_DEBOUNCE_STABLE 100 | 135 | #define HUB_DEBOUNCE_STABLE 100 |
136 | 136 | ||
137 | 137 | ||
138 | static int usb_reset_and_verify_device(struct usb_device *udev); | ||
139 | |||
138 | static inline char *portspeed(int portstatus) | 140 | static inline char *portspeed(int portstatus) |
139 | { | 141 | { |
140 | if (portstatus & (1 << USB_PORT_FEAT_HIGHSPEED)) | 142 | if (portstatus & (1 << USB_PORT_FEAT_HIGHSPEED)) |
@@ -1971,7 +1973,7 @@ static int finish_port_resume(struct usb_device *udev) | |||
1971 | * resumed. | 1973 | * resumed. |
1972 | */ | 1974 | */ |
1973 | if (udev->reset_resume) | 1975 | if (udev->reset_resume) |
1974 | status = usb_reset_device(udev); | 1976 | status = usb_reset_and_verify_device(udev); |
1975 | 1977 | ||
1976 | /* 10.5.4.5 says be sure devices in the tree are still there. | 1978 | /* 10.5.4.5 says be sure devices in the tree are still there. |
1977 | * For now let's assume the device didn't go crazy on resume, | 1979 | * For now let's assume the device didn't go crazy on resume, |
@@ -2030,7 +2032,7 @@ static int finish_port_resume(struct usb_device *udev) | |||
2030 | * to it will be lost. Using the USB_PERSIST facility, the device can be | 2032 | * to it will be lost. Using the USB_PERSIST facility, the device can be |
2031 | * made to appear as if it had not disconnected. | 2033 | * made to appear as if it had not disconnected. |
2032 | * | 2034 | * |
2033 | * This facility can be dangerous. Although usb_reset_device() makes | 2035 | * This facility can be dangerous. Although usb_reset_and_verify_device() makes |
2034 | * every effort to insure that the same device is present after the | 2036 | * every effort to insure that the same device is present after the |
2035 | * reset as before, it cannot provide a 100% guarantee. Furthermore it's | 2037 | * reset as before, it cannot provide a 100% guarantee. Furthermore it's |
2036 | * quite possible for a device to remain unaltered but its media to be | 2038 | * quite possible for a device to remain unaltered but its media to be |
@@ -2140,7 +2142,7 @@ int usb_port_resume(struct usb_device *udev) | |||
2140 | hub_port_logical_disconnect(hub, port1); | 2142 | hub_port_logical_disconnect(hub, port1); |
2141 | } else if (udev->reset_resume) { | 2143 | } else if (udev->reset_resume) { |
2142 | dev_dbg(&udev->dev, "reset-resume\n"); | 2144 | dev_dbg(&udev->dev, "reset-resume\n"); |
2143 | status = usb_reset_device(udev); | 2145 | status = usb_reset_and_verify_device(udev); |
2144 | } | 2146 | } |
2145 | return status; | 2147 | return status; |
2146 | } | 2148 | } |
@@ -2321,7 +2323,7 @@ static int hub_set_address(struct usb_device *udev, int devnum) | |||
2321 | * Returns device in USB_STATE_ADDRESS, except on error. | 2323 | * Returns device in USB_STATE_ADDRESS, except on error. |
2322 | * | 2324 | * |
2323 | * If this is called for an already-existing device (as part of | 2325 | * If this is called for an already-existing device (as part of |
2324 | * usb_reset_device), the caller must own the device lock. For a | 2326 | * usb_reset_and_verify_device), the caller must own the device lock. For a |
2325 | * newly detected device that is not accessible through any global | 2327 | * newly detected device that is not accessible through any global |
2326 | * pointers, it's not necessary to lock the device. | 2328 | * pointers, it's not necessary to lock the device. |
2327 | */ | 2329 | */ |
@@ -2638,7 +2640,7 @@ hub_power_remaining (struct usb_hub *hub) | |||
2638 | * This routine is called when: | 2640 | * This routine is called when: |
2639 | * a port connection-change occurs; | 2641 | * a port connection-change occurs; |
2640 | * a port enable-change occurs (often caused by EMI); | 2642 | * a port enable-change occurs (often caused by EMI); |
2641 | * usb_reset_device() encounters changed descriptors (as from | 2643 | * usb_reset_and_verify_device() encounters changed descriptors (as from |
2642 | * a firmware download) | 2644 | * a firmware download) |
2643 | * caller already locked the hub | 2645 | * caller already locked the hub |
2644 | */ | 2646 | */ |
@@ -2712,7 +2714,7 @@ static void hub_port_connect_change(struct usb_hub *hub, int port1, | |||
2712 | #endif | 2714 | #endif |
2713 | 2715 | ||
2714 | } else { | 2716 | } else { |
2715 | status = usb_reset_composite_device(udev); | 2717 | status = usb_reset_device(udev); |
2716 | } | 2718 | } |
2717 | usb_unlock_device(udev); | 2719 | usb_unlock_device(udev); |
2718 | 2720 | ||
@@ -2940,7 +2942,7 @@ static void hub_events(void) | |||
2940 | dev_dbg (hub_dev, "resetting for error %d\n", | 2942 | dev_dbg (hub_dev, "resetting for error %d\n", |
2941 | hub->error); | 2943 | hub->error); |
2942 | 2944 | ||
2943 | ret = usb_reset_composite_device(hdev); | 2945 | ret = usb_reset_device(hdev); |
2944 | if (ret) { | 2946 | if (ret) { |
2945 | dev_dbg (hub_dev, | 2947 | dev_dbg (hub_dev, |
2946 | "error resetting hub: %d\n", ret); | 2948 | "error resetting hub: %d\n", ret); |
@@ -3233,12 +3235,12 @@ static int descriptors_changed(struct usb_device *udev, | |||
3233 | } | 3235 | } |
3234 | 3236 | ||
3235 | /** | 3237 | /** |
3236 | * usb_reset_device - perform a USB port reset to reinitialize a device | 3238 | * usb_reset_and_verify_device - perform a USB port reset to reinitialize a device |
3237 | * @udev: device to reset (not in SUSPENDED or NOTATTACHED state) | 3239 | * @udev: device to reset (not in SUSPENDED or NOTATTACHED state) |
3238 | * | 3240 | * |
3239 | * WARNING - don't use this routine to reset a composite device | 3241 | * WARNING - don't use this routine to reset a composite device |
3240 | * (one with multiple interfaces owned by separate drivers)! | 3242 | * (one with multiple interfaces owned by separate drivers)! |
3241 | * Use usb_reset_composite_device() instead. | 3243 | * Use usb_reset_device() instead. |
3242 | * | 3244 | * |
3243 | * Do a port reset, reassign the device's address, and establish its | 3245 | * Do a port reset, reassign the device's address, and establish its |
3244 | * former operating configuration. If the reset fails, or the device's | 3246 | * former operating configuration. If the reset fails, or the device's |
@@ -3262,7 +3264,7 @@ static int descriptors_changed(struct usb_device *udev, | |||
3262 | * holding the device lock because these tasks should always call | 3264 | * holding the device lock because these tasks should always call |
3263 | * usb_autopm_resume_device(), thereby preventing any unwanted autoresume. | 3265 | * usb_autopm_resume_device(), thereby preventing any unwanted autoresume. |
3264 | */ | 3266 | */ |
3265 | int usb_reset_device(struct usb_device *udev) | 3267 | static int usb_reset_and_verify_device(struct usb_device *udev) |
3266 | { | 3268 | { |
3267 | struct usb_device *parent_hdev = udev->parent; | 3269 | struct usb_device *parent_hdev = udev->parent; |
3268 | struct usb_hub *parent_hub; | 3270 | struct usb_hub *parent_hub; |
@@ -3350,24 +3352,23 @@ re_enumerate: | |||
3350 | hub_port_logical_disconnect(parent_hub, port1); | 3352 | hub_port_logical_disconnect(parent_hub, port1); |
3351 | return -ENODEV; | 3353 | return -ENODEV; |
3352 | } | 3354 | } |
3353 | EXPORT_SYMBOL_GPL(usb_reset_device); | ||
3354 | 3355 | ||
3355 | /** | 3356 | /** |
3356 | * usb_reset_composite_device - warn interface drivers and perform a USB port reset | 3357 | * usb_reset_device - warn interface drivers and perform a USB port reset |
3357 | * @udev: device to reset (not in SUSPENDED or NOTATTACHED state) | 3358 | * @udev: device to reset (not in SUSPENDED or NOTATTACHED state) |
3358 | * | 3359 | * |
3359 | * Warns all drivers bound to registered interfaces (using their pre_reset | 3360 | * Warns all drivers bound to registered interfaces (using their pre_reset |
3360 | * method), performs the port reset, and then lets the drivers know that | 3361 | * method), performs the port reset, and then lets the drivers know that |
3361 | * the reset is over (using their post_reset method). | 3362 | * the reset is over (using their post_reset method). |
3362 | * | 3363 | * |
3363 | * Return value is the same as for usb_reset_device(). | 3364 | * Return value is the same as for usb_reset_and_verify_device(). |
3364 | * | 3365 | * |
3365 | * The caller must own the device lock. For example, it's safe to use | 3366 | * The caller must own the device lock. For example, it's safe to use |
3366 | * this from a driver probe() routine after downloading new firmware. | 3367 | * this from a driver probe() routine after downloading new firmware. |
3367 | * For calls that might not occur during probe(), drivers should lock | 3368 | * For calls that might not occur during probe(), drivers should lock |
3368 | * the device using usb_lock_device_for_reset(). | 3369 | * the device using usb_lock_device_for_reset(). |
3369 | */ | 3370 | */ |
3370 | int usb_reset_composite_device(struct usb_device *udev) | 3371 | int usb_reset_device(struct usb_device *udev) |
3371 | { | 3372 | { |
3372 | int ret; | 3373 | int ret; |
3373 | int i; | 3374 | int i; |
@@ -3397,7 +3398,7 @@ int usb_reset_composite_device(struct usb_device *udev) | |||
3397 | } | 3398 | } |
3398 | } | 3399 | } |
3399 | 3400 | ||
3400 | ret = usb_reset_device(udev); | 3401 | ret = usb_reset_and_verify_device(udev); |
3401 | 3402 | ||
3402 | if (config) { | 3403 | if (config) { |
3403 | for (i = config->desc.bNumInterfaces - 1; i >= 0; --i) { | 3404 | for (i = config->desc.bNumInterfaces - 1; i >= 0; --i) { |
@@ -3416,4 +3417,4 @@ int usb_reset_composite_device(struct usb_device *udev) | |||
3416 | usb_autosuspend_device(udev); | 3417 | usb_autosuspend_device(udev); |
3417 | return ret; | 3418 | return ret; |
3418 | } | 3419 | } |
3419 | EXPORT_SYMBOL_GPL(usb_reset_composite_device); | 3420 | EXPORT_SYMBOL_GPL(usb_reset_device); |
diff --git a/drivers/usb/storage/transport.c b/drivers/usb/storage/transport.c index 670e4cbd1f06..fcbbfdb7b2b0 100644 --- a/drivers/usb/storage/transport.c +++ b/drivers/usb/storage/transport.c | |||
@@ -1172,8 +1172,8 @@ int usb_stor_port_reset(struct us_data *us) | |||
1172 | result = -EIO; | 1172 | result = -EIO; |
1173 | US_DEBUGP("No reset during disconnect\n"); | 1173 | US_DEBUGP("No reset during disconnect\n"); |
1174 | } else { | 1174 | } else { |
1175 | result = usb_reset_composite_device(us->pusb_dev); | 1175 | result = usb_reset_device(us->pusb_dev); |
1176 | US_DEBUGP("usb_reset_composite_device returns %d\n", | 1176 | US_DEBUGP("usb_reset_device returns %d\n", |
1177 | result); | 1177 | result); |
1178 | } | 1178 | } |
1179 | if (rc_lock) | 1179 | if (rc_lock) |