]> err.no Git - linux-2.6/blobdiff - drivers/usb/core/driver.c
USB: remove CONFIG_USB_PERSIST setting
[linux-2.6] / drivers / usb / core / driver.c
index 801b6f142fa7f874650a99c4d28c268c887a3114..ebccdefcc6f24fde54818da6e07045446a157ec2 100644 (file)
@@ -1523,9 +1523,14 @@ static int usb_suspend(struct device *dev, pm_message_t message)
        udev = to_usb_device(dev);
 
        /* If udev is already suspended, we can skip this suspend and
-        * we should also skip the upcoming system resume. */
+        * we should also skip the upcoming system resume.  High-speed
+        * root hubs are an exception; they need to resume whenever the
+        * system wakes up in order for USB-PERSIST port handover to work
+        * properly.
+        */
        if (udev->state == USB_STATE_SUSPENDED) {
-               udev->skip_sys_resume = 1;
+               if (udev->parent || udev->speed != USB_SPEED_HIGH)
+                       udev->skip_sys_resume = 1;
                return 0;
        }