aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/core
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-01-18 12:17:17 -0500
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-01-18 12:17:17 -0500
commitcbf50a4125f5242dd70b1f2342dbba2d94c6d94e (patch)
treea97a067e53f32e246034fbbb07e2c0894c279391 /drivers/usb/core
parent7a8ea7ebe4cf698918e7d3c860587e815eaa0f28 (diff)
parent7d1f9aeff1ee4a20b1aeb377dd0f579fe9647619 (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.c10
-rw-r--r--drivers/usb/core/quirks.c3
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)
3013static int finish_port_resume(struct usb_device *udev) 3013static 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