USB: cp210x: add IDs for CEL USB sticks and MeshWorks devices
[pandora-kernel.git] / drivers / usb / chipidea / udc.c
index 0444d3f..4fe18ce 100644 (file)
@@ -692,10 +692,8 @@ __acquires(ci->lock)
        int retval;
 
        spin_unlock(&ci->lock);
-       if (ci->gadget.speed != USB_SPEED_UNKNOWN) {
-               if (ci->driver)
-                       ci->driver->disconnect(&ci->gadget);
-       }
+       if (ci->gadget.speed != USB_SPEED_UNKNOWN)
+               usb_gadget_udc_reset(&ci->gadget, ci->driver);
 
        retval = _gadget_stop_activity(&ci->gadget);
        if (retval)
@@ -709,8 +707,6 @@ __acquires(ci->lock)
        if (ci->status == NULL)
                retval = -ENOMEM;
 
-       usb_gadget_set_state(&ci->gadget, USB_STATE_DEFAULT);
-
 done:
        spin_lock(&ci->lock);
 
@@ -1475,7 +1471,7 @@ static int ci_udc_vbus_session(struct usb_gadget *_gadget, int is_active)
        if (gadget_ready) {
                if (is_active) {
                        pm_runtime_get_sync(&_gadget->dev);
-                       hw_device_reset(ci, USBMODE_CM_DC);
+                       hw_device_reset(ci);
                        hw_device_state(ci, ci->ep0out->qh.dma);
                        usb_gadget_set_state(_gadget, USB_STATE_POWERED);
                } else {
@@ -1519,8 +1515,8 @@ static int ci_udc_vbus_draw(struct usb_gadget *_gadget, unsigned ma)
 {
        struct ci_hdrc *ci = container_of(_gadget, struct ci_hdrc, gadget);
 
-       if (ci->transceiver)
-               return usb_phy_set_power(ci->transceiver, ma);
+       if (ci->usb_phy)
+               return usb_phy_set_power(ci->usb_phy, ma);
        return -ENOTSUPP;
 }
 
@@ -1544,8 +1540,7 @@ static int ci_udc_pullup(struct usb_gadget *_gadget, int is_on)
 
 static int ci_udc_start(struct usb_gadget *gadget,
                         struct usb_gadget_driver *driver);
-static int ci_udc_stop(struct usb_gadget *gadget,
-                       struct usb_gadget_driver *driver);
+static int ci_udc_stop(struct usb_gadget *gadget);
 /**
  * Device operations part of the API to the USB controller hardware,
  * which don't involve endpoints (or i/o)
@@ -1665,7 +1660,7 @@ static int ci_udc_start(struct usb_gadget *gadget,
        pm_runtime_get_sync(&ci->gadget.dev);
        if (ci->vbus_active) {
                spin_lock_irqsave(&ci->lock, flags);
-               hw_device_reset(ci, USBMODE_CM_DC);
+               hw_device_reset(ci);
        } else {
                pm_runtime_put_sync(&ci->gadget.dev);
                return retval;
@@ -1682,8 +1677,7 @@ static int ci_udc_start(struct usb_gadget *gadget,
 /**
  * ci_udc_stop: unregister a gadget driver
  */
-static int ci_udc_stop(struct usb_gadget *gadget,
-                       struct usb_gadget_driver *driver)
+static int ci_udc_stop(struct usb_gadget *gadget)
 {
        struct ci_hdrc *ci = container_of(gadget, struct ci_hdrc, gadget);
        unsigned long flags;