usb:gadget: fix some trival issues
authorjzhuan5 <jin.can.zhuang@intel.com>
Thu, 15 Mar 2012 18:43:07 +0000 (14:43 -0400)
committerbuildbot <buildbot@intel.com>
Thu, 29 Mar 2012 14:11:30 +0000 (07:11 -0700)
BZ: 27844

1. clean up PM callbacks and function calls
2. remove redundant mtp code
3. fix the issue that some _ep or _req are used before being checked

Change-Id: Id39876d798a20edd3ceaa0ad9bf85ba1e2fdbe2c
Signed-off-by: jzhuan5 <jin.can.zhuang@intel.com>
Reviewed-on: http://android.intel.com:8080/39512
Reviewed-by: Wang, Feng A <feng.a.wang@intel.com>
Reviewed-by: Tang, Richard <richard.tang@intel.com>
Reviewed-by: Gross, Mark <mark.gross@intel.com>
Reviewed-by: Saripalli, Ramakrishna <ramakrishna.saripalli@intel.com>
Reviewed-by: Meng, Zhe <zhe.meng@intel.com>
Tested-by: Meng, Zhe <zhe.meng@intel.com>
Reviewed-by: buildbot <buildbot@intel.com>
Tested-by: buildbot <buildbot@intel.com>
drivers/usb/gadget/f_mtp.c
drivers/usb/gadget/langwell_udc.c

index 049b0f0..c177c51 100644 (file)
@@ -410,15 +410,6 @@ static int mtp_create_bulk_endpoints(struct mtp_dev *dev,
        ep->driver_data = dev;          /* claim the endpoint */
        dev->ep_out = ep;
 
-       ep = usb_ep_autoconfig(cdev->gadget, out_desc);
-       if (!ep) {
-               DBG(cdev, "usb_ep_autoconfig for ep_out failed\n");
-               return -ENODEV;
-       }
-       DBG(cdev, "usb_ep_autoconfig for mtp ep_out got %s\n", ep->name);
-       ep->driver_data = dev;          /* claim the endpoint */
-       dev->ep_out = ep;
-
        ep = usb_ep_autoconfig(cdev->gadget, intr_desc);
        if (!ep) {
                DBG(cdev, "usb_ep_autoconfig for ep_intr failed\n");
@@ -1074,11 +1065,6 @@ static int mtp_ctrlrequest(struct usb_composite_dev *cdev,
        return value;
 }
 
-static int
-mtp_handle_setup(struct usb_function *f, const struct usb_ctrlrequest *ctrl)
-{
-       return mtp_ctrlrequest(f->config->cdev, ctrl);
-}
 
 static int
 mtp_function_bind(struct usb_configuration *c, struct usb_function *f)
@@ -1215,7 +1201,6 @@ static int mtp_bind_config(struct usb_configuration *c, bool ptp_config)
        dev->function.unbind = mtp_function_unbind;
        dev->function.set_alt = mtp_function_set_alt;
        dev->function.disable = mtp_function_disable;
-       dev->function.setup = mtp_handle_setup;
 
        return usb_add_function(c, &dev->function);
 }
index 01a6c53..96ec0e8 100644 (file)
@@ -387,12 +387,14 @@ static int langwell_ep_enable(struct usb_ep *_ep,
        int                     i, retval = 0;
        unsigned char           zlt, ios = 0, mult = 0;
 
+       if (!_ep || !desc)
+               return -EINVAL;
+
        ep = container_of(_ep, struct langwell_ep, ep);
        dev = ep->dev;
        dev_vdbg(&dev->pdev->dev, "---> %s()\n", __func__);
 
-       if (!_ep || !desc || ep->desc
-                       || desc->bDescriptorType != USB_DT_ENDPOINT)
+       if (ep->desc || desc->bDescriptorType != USB_DT_ENDPOINT)
                return -EINVAL;
 
        if (!dev->driver || dev->gadget.speed == USB_SPEED_UNKNOWN)
@@ -609,20 +611,20 @@ static int langwell_ep_disable(struct usb_ep *_ep)
        int                     ep_num;
        u32                     endptctrl;
 
+       if (!_ep)
+               return -EINVAL;
+
        ep = container_of(_ep, struct langwell_ep, ep);
        dev = ep->dev;
        dev_vdbg(&dev->pdev->dev, "---> %s()\n", __func__);
 
-       if (!_ep || !ep->desc)
+       if (!ep->desc)
                return -EINVAL;
 
-       pm_runtime_get(&dev->pdev->dev);
-
        spin_lock_irqsave(&dev->lock, flags);
 
        if (!ep->desc) {
                spin_unlock_irqrestore(&dev->lock, flags);
-               pm_runtime_put(&dev->pdev->dev);
                dev_err(&dev->pdev->dev, "ep has already disabled\n");
                return -EINVAL;
        }
@@ -644,8 +646,6 @@ static int langwell_ep_disable(struct usb_ep *_ep)
 
        spin_unlock_irqrestore(&dev->lock, flags);
 
-       pm_runtime_put(&dev->pdev->dev);
-
        dev_dbg(&dev->pdev->dev, "disabled %s\n", _ep->name);
        dev_vdbg(&dev->pdev->dev, "<--- %s()\n", __func__);
 
@@ -689,13 +689,13 @@ static void langwell_free_request(struct usb_ep *_ep,
        struct langwell_udc     *dev;
        struct langwell_request *req = NULL;
 
+       if (!_ep || !_req)
+               return;
+
        ep = container_of(_ep, struct langwell_ep, ep);
        dev = ep->dev;
        dev_vdbg(&dev->pdev->dev, "---> %s()\n", __func__);
 
-       if (!_ep || !_req)
-               return;
-
        req = container_of(_req, struct langwell_request, req);
        WARN_ON(!list_empty(&req->queue));
 
@@ -908,18 +908,17 @@ static int langwell_ep_queue(struct usb_ep *_ep, struct usb_request *_req,
        unsigned long           flags;
        int                     is_iso = 0, zlflag = 0, in = 0;
 
+       if (unlikely(!_ep || !_req))
+               return -EINVAL;
        /* always require a cpu-view buffer */
        req = container_of(_req, struct langwell_request, req);
        ep = container_of(_ep, struct langwell_ep, ep);
 
-       if (!_req || !_req->complete || !_req->buf
+       if (!_req->complete || !_req->buf
                        || !list_empty(&req->queue)) {
                return -EINVAL;
        }
 
-       if (unlikely(!_ep || !ep->desc))
-               return -EINVAL;
-
        dev = ep->dev;
        req->ep = ep;
        dev_vdbg(&dev->pdev->dev, "---> %s()\n", __func__);
@@ -1034,18 +1033,19 @@ static int langwell_ep_dequeue(struct usb_ep *_ep, struct usb_request *_req)
        int                     stopped, ep_num, retval = 0;
        u32                     endptctrl;
 
+       if (!_ep || !_req)
+               return -EINVAL;
+
        ep = container_of(_ep, struct langwell_ep, ep);
        dev = ep->dev;
        dev_vdbg(&dev->pdev->dev, "---> %s()\n", __func__);
 
-       if (!_ep || !ep->desc || !_req)
+       if (!ep->desc)
                return -EINVAL;
 
        if (!dev->driver)
                return -ESHUTDOWN;
 
-       pm_runtime_get_sync(&dev->pdev->dev);
-
        spin_lock_irqsave(&dev->lock, flags);
        stopped = ep->stopped;
 
@@ -1116,8 +1116,6 @@ done:
        ep->stopped = stopped;
        spin_unlock_irqrestore(&dev->lock, flags);
 
-       pm_runtime_put_sync(&dev->pdev->dev);
-
        dev_vdbg(&dev->pdev->dev, "<--- %s()\n", __func__);
        return retval;
 }
@@ -1168,18 +1166,18 @@ static int _langwell_ep_set_halt(struct usb_ep *_ep, int value, int chq)
        unsigned long           flags;
        int                     retval = 0;
 
+       if (!_ep)
+               return -EINVAL;
+
        ep = container_of(_ep, struct langwell_ep, ep);
        dev = ep->dev;
-
        dev_vdbg(&dev->pdev->dev, "---> %s()\n", __func__);
 
-
        if (!dev->driver || dev->gadget.speed == USB_SPEED_UNKNOWN)
                return -ESHUTDOWN;
 
-
        spin_lock_irqsave(&dev->lock, flags);
-       if (!_ep || !ep->desc) {
+       if (!ep->desc) {
                retval = -EINVAL;
                goto done;
        }
@@ -1226,12 +1224,14 @@ static int langwell_ep_set_wedge(struct usb_ep *_ep)
        struct langwell_ep      *ep;
        struct langwell_udc     *dev;
 
+       if (!_ep)
+               return -EINVAL;
+
        ep = container_of(_ep, struct langwell_ep, ep);
        dev = ep->dev;
-
        dev_vdbg(&dev->pdev->dev, "---> %s()\n", __func__);
 
-       if (!_ep || !ep->desc)
+       if (!ep->desc)
                return -EINVAL;
 
        dev_vdbg(&dev->pdev->dev, "<--- %s()\n", __func__);
@@ -1297,13 +1297,16 @@ static void langwell_ep_fifo_flush(struct usb_ep *_ep)
        u32                     flush_bit;
        unsigned long           timeout;
 
+       if (!_ep)
+               return;
+
        ep = container_of(_ep, struct langwell_ep, ep);
        dev = ep->dev;
 
        dev_vdbg(&dev->pdev->dev, "---> %s()\n", __func__);
 
-       if (!_ep || !ep->desc) {
-               dev_vdbg(&dev->pdev->dev, "ep or ep->desc is NULL\n");
+       if (!ep->desc) {
+               dev_vdbg(&dev->pdev->dev, "ep->desc is NULL\n");
                dev_vdbg(&dev->pdev->dev, "<--- %s()\n", __func__);
                return;
        }
@@ -1423,14 +1426,11 @@ static int langwell_wakeup(struct usb_gadget *_gadget)
                return -ENOTSUPP;
        }
 
-       pm_runtime_get_sync(&dev->pdev->dev);
-
        spin_lock_irqsave(&dev->lock, flags);
 
        portsc1 = readl(&dev->op_regs->portsc1);
        if (!(portsc1 & PORTS_SUSP)) {
                spin_unlock_irqrestore(&dev->lock, flags);
-               pm_runtime_put(&dev->pdev->dev);
                return 0;
        }
 
@@ -1440,15 +1440,11 @@ static int langwell_wakeup(struct usb_gadget *_gadget)
        else
                dev_info(&dev->pdev->dev, "device remote wakeup\n");
 
-       /* exit PHY low power suspend */
-       langwell_phy_low_power(dev, 0);
-
        /* force port resume */
        portsc1 |= PORTS_FPR;
        writel(portsc1, &dev->op_regs->portsc1);
 
        spin_unlock_irqrestore(&dev->lock, flags);
-       pm_runtime_put(&dev->pdev->dev);
 
        dev_vdbg(&dev->pdev->dev, "<--- %s()\n", __func__);
        return 0;
@@ -1532,10 +1528,6 @@ static int langwell_pullup(struct usb_gadget *_gadget, int is_on)
                return -ENODEV;
        }
 
-       pm_runtime_get_sync(&dev->pdev->dev);
-       /* PHY should exit low power before set USBCMD Run/Stop */
-       langwell_phy_low_power(dev, 0);
-
        spin_lock_irqsave(&dev->lock, flags);
        dev->softconnected = (is_on != 0);
 
@@ -1550,8 +1542,6 @@ static int langwell_pullup(struct usb_gadget *_gadget, int is_on)
        }
        spin_unlock_irqrestore(&dev->lock, flags);
 
-       pm_runtime_put(&dev->pdev->dev);
-
        dev_vdbg(&dev->pdev->dev, "<--- %s()\n", __func__);
        return 0;
 }
@@ -3157,9 +3147,6 @@ static void handle_bus_resume(struct langwell_udc *dev)
        dev->usb_state = dev->resume_state;
        dev->resume_state = 0;
 
-       /* exit PHY low power suspend */
-       langwell_phy_low_power(dev, 0);
-
        langwell_udc_notify_otg(MID_OTG_NOTIFY_CRESUME);
 
        /* report resume to the driver */
@@ -3869,65 +3856,6 @@ static int langwell_udc_resume(struct pci_dev *pdev)
        return 0;
 }
 
-#ifdef CONFIG_PM_RUNTIME
-/* device controller runtime suspend */
-static int langwell_udc_runtime_suspend(struct device *device)
-{
-       struct langwell_udc     *dev = the_controller;
-       struct pci_dev          *pdev;
-
-       dev_dbg(&dev->pdev->dev, "---> %s()\n", __func__);
-
-       pdev = to_pci_dev(device);
-
-       /* save PCI state */
-       pci_save_state(pdev);
-
-       /* disable PCI device */
-       pci_disable_device(pdev);
-
-       /* set device power state */
-       pci_set_power_state(pdev, PCI_D3hot);
-
-       dev->vbus_active = 0;
-
-       dev_dbg(&dev->pdev->dev, "<--- %s()\n", __func__);
-       return 0;
-}
-
-
-/* device controller runtime resume */
-static int langwell_udc_runtime_resume(struct device *device)
-{
-       struct langwell_udc     *dev = the_controller;
-       struct pci_dev          *pdev;
-
-       dev_dbg(&dev->pdev->dev, "---> %s()\n", __func__);
-
-       pdev = to_pci_dev(device);
-
-       /* set device D0 power state */
-       pci_set_power_state(pdev, PCI_D0);
-
-       /* restore PCI state */
-       pci_restore_state(pdev);
-
-       /* enable PCI device */
-       if (pci_enable_device(pdev) < 0)
-               return -ENODEV;
-
-       dev->vbus_active = 1;
-
-       dev_dbg(&dev->pdev->dev, "<--- %s()\n", __func__);
-       return 0;
-}
-
-#else
-
-#define langwell_udc_runtime_suspend NULL
-#define langwell_udc_runtime_resume NULL
-
-#endif
 
 
 /* pci driver shutdown */
@@ -3975,15 +3903,8 @@ static const struct pci_device_id pci_ids[] = { {
 
 MODULE_DEVICE_TABLE(pci, pci_ids);
 
-static const struct dev_pm_ops langwell_udc_pm_ops = {
-       .runtime_suspend = langwell_udc_runtime_suspend,
-       .runtime_resume = langwell_udc_runtime_resume,
-};
 
 static struct pci_driver langwell_pci_driver = {
-       .driver =       {
-               .pm = &langwell_udc_pm_ops,
-       },
        .name =         (char *) driver_name,
        .id_table =     pci_ids,
 
@@ -4007,7 +3928,7 @@ static int intel_mid_start_peripheral(struct intel_mid_otg_xceiv *iotg)
        dev_dbg(&dev->pdev->dev, "---> %s()\n", __func__);
 
        wake_lock(&dev->wake_lock);
-       pm_runtime_get(&dev->pdev->dev);
+       pm_runtime_get_sync(&dev->pdev->dev);
 
        /* exit PHY low power suspend */
        langwell_phy_low_power(dev, 0);