USB: re-enable interface after driver unbinds
[deliverable/linux.git] / drivers / usb / core / driver.c
index 41c06025506ee8e19647b6d65e3f3be9e0ea41c8..98760553bc95f84b098e4b39999c1163122c3344 100644 (file)
@@ -295,9 +295,12 @@ static int usb_unbind_interface(struct device *dev)
         * altsetting means creating new endpoint device entries).
         * When either of these happens, defer the Set-Interface.
         */
-       if (intf->cur_altsetting->desc.bAlternateSetting == 0)
-               ;       /* Already in altsetting 0 so skip Set-Interface */
-       else if (!error && intf->dev.power.status == DPM_ON)
+       if (intf->cur_altsetting->desc.bAlternateSetting == 0) {
+               /* Already in altsetting 0 so skip Set-Interface.
+                * Just re-enable it without affecting the endpoint toggles.
+                */
+               usb_enable_interface(udev, intf, false);
+       } else if (!error && intf->dev.power.status == DPM_ON)
                usb_set_interface(udev, intf->altsetting[0].
                                desc.bInterfaceNumber, 0);
        else
This page took 0.023726 seconds and 5 git commands to generate.