diff options
author | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2013-01-18 12:17:17 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2013-01-18 12:17:17 -0500 |
commit | cbf50a4125f5242dd70b1f2342dbba2d94c6d94e (patch) | |
tree | a97a067e53f32e246034fbbb07e2c0894c279391 /drivers/usb/core | |
parent | 7a8ea7ebe4cf698918e7d3c860587e815eaa0f28 (diff) | |
parent | 7d1f9aeff1ee4a20b1aeb377dd0f579fe9647619 (diff) |
Merge 3.8-rc4 into usb-next
This pulls in all of the -rc4 fixes into usb-next to sync things up.
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/usb/core')
-rw-r--r-- | drivers/usb/core/hub.c | 10 | ||||
-rw-r--r-- | drivers/usb/core/quirks.c | 3 |
2 files changed, 11 insertions, 2 deletions
diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c index 0ef512aa2898..dc6ebd1d88da 100644 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c | |||
@@ -3013,7 +3013,7 @@ int usb_port_suspend(struct usb_device *udev, pm_message_t msg) | |||
3013 | static int finish_port_resume(struct usb_device *udev) | 3013 | static int finish_port_resume(struct usb_device *udev) |
3014 | { | 3014 | { |
3015 | int status = 0; | 3015 | int status = 0; |
3016 | u16 devstatus; | 3016 | u16 devstatus = 0; |
3017 | 3017 | ||
3018 | /* caller owns the udev device lock */ | 3018 | /* caller owns the udev device lock */ |
3019 | dev_dbg(&udev->dev, "%s\n", | 3019 | dev_dbg(&udev->dev, "%s\n", |
@@ -3058,7 +3058,13 @@ static int finish_port_resume(struct usb_device *udev) | |||
3058 | if (status) { | 3058 | if (status) { |
3059 | dev_dbg(&udev->dev, "gone after usb resume? status %d\n", | 3059 | dev_dbg(&udev->dev, "gone after usb resume? status %d\n", |
3060 | status); | 3060 | status); |
3061 | } else if (udev->actconfig) { | 3061 | /* |
3062 | * There are a few quirky devices which violate the standard | ||
3063 | * by claiming to have remote wakeup enabled after a reset, | ||
3064 | * which crash if the feature is cleared, hence check for | ||
3065 | * udev->reset_resume | ||
3066 | */ | ||
3067 | } else if (udev->actconfig && !udev->reset_resume) { | ||
3062 | le16_to_cpus(&devstatus); | 3068 | le16_to_cpus(&devstatus); |
3063 | if (devstatus & (1 << USB_DEVICE_REMOTE_WAKEUP)) { | 3069 | if (devstatus & (1 << USB_DEVICE_REMOTE_WAKEUP)) { |
3064 | status = usb_control_msg(udev, | 3070 | status = usb_control_msg(udev, |
diff --git a/drivers/usb/core/quirks.c b/drivers/usb/core/quirks.c index fdefd9c7f7af..3113c1d71442 100644 --- a/drivers/usb/core/quirks.c +++ b/drivers/usb/core/quirks.c | |||
@@ -43,6 +43,9 @@ static const struct usb_device_id usb_quirk_list[] = { | |||
43 | /* Creative SB Audigy 2 NX */ | 43 | /* Creative SB Audigy 2 NX */ |
44 | { USB_DEVICE(0x041e, 0x3020), .driver_info = USB_QUIRK_RESET_RESUME }, | 44 | { USB_DEVICE(0x041e, 0x3020), .driver_info = USB_QUIRK_RESET_RESUME }, |
45 | 45 | ||
46 | /* Microsoft LifeCam-VX700 v2.0 */ | ||
47 | { USB_DEVICE(0x045e, 0x0770), .driver_info = USB_QUIRK_RESET_RESUME }, | ||
48 | |||
46 | /* Logitech Quickcam Fusion */ | 49 | /* Logitech Quickcam Fusion */ |
47 | { USB_DEVICE(0x046d, 0x08c1), .driver_info = USB_QUIRK_RESET_RESUME }, | 50 | { USB_DEVICE(0x046d, 0x08c1), .driver_info = USB_QUIRK_RESET_RESUME }, |
48 | 51 | ||