Hello,

Does this such patch make sense ? When a device is disconnected ,
it seems that the driver is the one who disable the device's endpoints
no ?

diff --git a/drivers/usb/gadget/net2280.c b/drivers/usb/gadget/net2280.c
index 0b92934..ef67ebc 100644
--- a/drivers/usb/gadget/net2280.c
+++ b/drivers/usb/gadget/net2280.c
@@ -2054,26 +2054,26 @@ EXPORT_SYMBOL (usb_gadget_register_drive
 static void
 stop_activity (struct net2280 *dev, struct usb_gadget_driver *driver)
 {
-       int                     i;
-
        /* don't disconnect if it's not connected */
        if (dev->gadget.speed == USB_SPEED_UNKNOWN)
                driver = NULL;

-       /* stop hardware; prevent new request submissions;
-        * and kill any outstanding requests.
-        */
-       usb_reset (dev);
-       for (i = 0; i < 7; i++)
-               nuke (&dev->ep [i]);
+       /* stop hardware; prevent new request submissions; */
+       usb_reset(dev);

        /* report disconnect; the driver is already quiesced */
+       spin_unlock (&dev->lock);
        if (driver) {
-               spin_unlock (&dev->lock);
-               driver->disconnect (&dev->gadget);
-               spin_lock (&dev->lock);
+               /* let the drivers disable its eps */
+               driver->disconnect(&dev->gadget);
+       } else {
+               int i;
+               /* ...or do it by ourself */
+               for (i = 0; i < 7; i++)
+                       net2280_disable(&dev->ep[i].ep);
        }
-
+       spin_lock (&dev->lock);
+
        usb_reinit (dev);
 }





_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to