| From 2394d67e446bf616a0885167d5f0d397bdacfdfc Mon Sep 17 00:00:00 2001 |
| From: Oliver Neukum <oneukum@suse.de> |
| Date: Tue, 13 Sep 2011 08:42:21 +0200 |
| Subject: USB: add RESET_RESUME for webcams shown to be quirky |
| |
| From: Oliver Neukum <oneukum@suse.de> |
| |
| commit 2394d67e446bf616a0885167d5f0d397bdacfdfc upstream. |
| |
| The new runtime PM code has shown that many webcams suffer |
| from a race condition that may crash them upon resume. |
| Runtime PM is especially prone to show the problem because |
| it retains power to the cameras at all times. However |
| system suspension may also crash the devices and retain |
| power to the devices. |
| The only way to solve this problem without races is in |
| usbcore with the RESET_RESUME quirk. |
| |
| Signed-off-by: Oliver Neukum <oneukum@suse.de> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| drivers/usb/core/quirks.c | 21 +++++++++++++++++++++ |
| 1 file changed, 21 insertions(+) |
| |
| --- a/drivers/usb/core/quirks.c |
| +++ b/drivers/usb/core/quirks.c |
| @@ -38,6 +38,24 @@ static const struct usb_device_id usb_qu |
| /* Creative SB Audigy 2 NX */ |
| { USB_DEVICE(0x041e, 0x3020), .driver_info = USB_QUIRK_RESET_RESUME }, |
| |
| + /* Logitech Webcam C200 */ |
| + { USB_DEVICE(0x046d, 0x0802), .driver_info = USB_QUIRK_RESET_RESUME }, |
| + |
| + /* Logitech Webcam C250 */ |
| + { USB_DEVICE(0x046d, 0x0804), .driver_info = USB_QUIRK_RESET_RESUME }, |
| + |
| + /* Logitech Webcam B/C500 */ |
| + { USB_DEVICE(0x046d, 0x0807), .driver_info = USB_QUIRK_RESET_RESUME }, |
| + |
| + /* Logitech Webcam Pro 9000 */ |
| + { USB_DEVICE(0x046d, 0x0809), .driver_info = USB_QUIRK_RESET_RESUME }, |
| + |
| + /* Logitech Webcam C310 */ |
| + { USB_DEVICE(0x046d, 0x081b), .driver_info = USB_QUIRK_RESET_RESUME }, |
| + |
| + /* Logitech Webcam C270 */ |
| + { USB_DEVICE(0x046d, 0x0825), .driver_info = USB_QUIRK_RESET_RESUME }, |
| + |
| /* Logitech Harmony 700-series */ |
| { USB_DEVICE(0x046d, 0xc122), .driver_info = USB_QUIRK_DELAY_INIT }, |
| |
| @@ -69,6 +87,9 @@ static const struct usb_device_id usb_qu |
| { USB_DEVICE(0x06a3, 0x0006), .driver_info = |
| USB_QUIRK_CONFIG_INTF_STRINGS }, |
| |
| + /* Guillemot Webcam Hercules Dualpix Exchange*/ |
| + { USB_DEVICE(0x06f8, 0x0804), .driver_info = USB_QUIRK_RESET_RESUME }, |
| + |
| /* M-Systems Flash Disk Pioneers */ |
| { USB_DEVICE(0x08ec, 0x1000), .driver_info = USB_QUIRK_RESET_RESUME }, |
| |