]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/usb/core/hub.c
USB: revert "don't use reset-resume if drivers don't support it"
[linux-2.6-omap-h63xx.git] / drivers / usb / core / hub.c
index d741b9457427303687a92333fb43dd64a952a87d..976da1c4919b984b3cf223b625e6fd3bfea5a5ba 100644 (file)
@@ -644,48 +644,6 @@ static void hub_stop(struct usb_hub *hub)
 
 #ifdef CONFIG_PM
 
-/* Try to identify which devices need USB-PERSIST handling */
-static int persistent_device(struct usb_device *udev)
-{
-       int i;
-       int retval;
-       struct usb_host_config *actconfig;
-
-       /* Explicitly not marked persistent? */
-       if (!udev->persist_enabled)
-               return 0;
-
-       /* No active config? */
-       actconfig = udev->actconfig;
-       if (!actconfig)
-               return 0;
-
-       /* FIXME! We should check whether it's open here or not! */
-
-       /*
-        * Check that all the interface drivers have a
-        * 'reset_resume' entrypoint
-        */
-       retval = 0;
-       for (i = 0; i < actconfig->desc.bNumInterfaces; i++) {
-               struct usb_interface *intf;
-               struct usb_driver *driver;
-
-               intf = actconfig->interface[i];
-               if (!intf->dev.driver)
-                       continue;
-               driver = to_usb_driver(intf->dev.driver);
-               if (!driver->reset_resume)
-                       return 0;
-               /*
-                * We have at least one driver, and that one
-                * has a reset_resume method.
-                */
-               retval = 1;
-       }
-       return retval;
-}
-
 static void hub_restart(struct usb_hub *hub, int type)
 {
        struct usb_device *hdev = hub->hdev;
@@ -731,8 +689,8 @@ static void hub_restart(struct usb_hub *hub, int type)
                 * turn off the various status changes to prevent
                 * khubd from disconnecting it later.
                 */
-               if (status == 0 && !(portstatus & USB_PORT_STAT_ENABLE) &&
-                               persistent_device(udev)) {
+               if (udev->persist_enabled && status == 0 &&
+                               !(portstatus & USB_PORT_STAT_ENABLE)) {
                        if (portchange & USB_PORT_STAT_C_ENABLE)
                                clear_port_feature(hub->hdev, port1,
                                                USB_PORT_FEAT_C_ENABLE);