Update to 2.6.32.41 Mainline
/drivers/usb/core/hub.c
blob:fc722a025bd2927c0aa5346d12c610fb4d8fbce9 -> blob:283f019b9b3a12327d5a22ab3f684ce1d4c32de7
--- drivers/usb/core/hub.c
+++ drivers/usb/core/hub.c
@@ -1424,11 +1424,11 @@ void usb_set_device_state(struct usb_dev
|| new_state == USB_STATE_SUSPENDED)
; /* No change to wakeup settings */
else if (new_state == USB_STATE_CONFIGURED)
- device_init_wakeup(&udev->dev,
+ device_set_wakeup_capable(&udev->dev,
(udev->actconfig->desc.bmAttributes
& USB_CONFIG_ATT_WAKEUP));
else
- device_init_wakeup(&udev->dev, 0);
+ device_set_wakeup_capable(&udev->dev, 0);
}
if (udev->state == USB_STATE_SUSPENDED &&
new_state != USB_STATE_SUSPENDED)
@@ -1786,10 +1786,17 @@ int usb_new_device(struct usb_device *ud
{
int err;
- /* Increment the parent's count of unsuspended children */
- if (udev->parent)
+ if (udev->parent) {
+ /* Increment the parent's count of unsuspended children */
usb_autoresume_device(udev->parent);
+ /* Initialize non-root-hub device wakeup to disabled;
+ * device (un)configuration controls wakeup capable
+ * sysfs power/wakeup controls wakeup enabled/disabled
+ */
+ device_init_wakeup(&udev->dev, 0);
+ }
+
err = usb_enumerate_device(udev); /* Read descriptors */
if (err < 0)
goto fail;