Merge remote-tracking branch 'asoc/fix/cs42l52' into asoc-linus
[firefly-linux-kernel-4.4.55.git] / drivers / usb / gadget / pch_udc.c
index a787a8ef672b0fc60f0969075dda6eaa3d4f7e0c..24174e1d15642be63c652340c80e81dc61d1bb15 100644 (file)
@@ -358,7 +358,6 @@ struct pch_udc_dev {
                        prot_stall:1,
                        irq_registered:1,
                        mem_region:1,
-                       registered:1,
                        suspended:1,
                        connected:1,
                        vbus_session:1,
@@ -1441,6 +1440,8 @@ static void pch_vbus_gpio_free(struct pch_udc_dev *dev)
  */
 static void complete_req(struct pch_udc_ep *ep, struct pch_udc_request *req,
                                                                 int status)
+       __releases(&dev->lock)
+       __acquires(&dev->lock)
 {
        struct pch_udc_dev      *dev;
        unsigned halted = ep->halted;
@@ -2382,6 +2383,8 @@ static void pch_udc_svc_control_in(struct pch_udc_dev *dev)
  * @dev:       Reference to the device structure
  */
 static void pch_udc_svc_control_out(struct pch_udc_dev *dev)
+       __releases(&dev->lock)
+       __acquires(&dev->lock)
 {
        u32     stat;
        int setup_supported;
@@ -2989,7 +2992,6 @@ static int pch_udc_start(struct usb_gadget *g,
 
        driver->driver.bus = NULL;
        dev->driver = driver;
-       dev->gadget.dev.driver = &driver->driver;
 
        /* get ready for ep0 traffic */
        pch_udc_setup_ep0(dev);
@@ -3010,7 +3012,6 @@ static int pch_udc_stop(struct usb_gadget *g,
        pch_udc_disable_interrupts(dev, UDC_DEVINT_MSK);
 
        /* Assures that there are no pending requests with this driver */
-       dev->gadget.dev.driver = NULL;
        dev->driver = NULL;
        dev->connected = 0;
 
@@ -3078,8 +3079,6 @@ static void pch_udc_remove(struct pci_dev *pdev)
                                   pci_resource_len(pdev, PCH_UDC_PCI_BAR));
        if (dev->active)
                pci_disable_device(pdev);
-       if (dev->registered)
-               device_unregister(&dev->gadget.dev);
        kfree(dev);
        pci_set_drvdata(pdev, NULL);
 }
@@ -3196,21 +3195,13 @@ static int pch_udc_probe(struct pci_dev *pdev,
        if (retval)
                goto finished;
 
-       dev_set_name(&dev->gadget.dev, "gadget");
-       dev->gadget.dev.parent = &pdev->dev;
-       dev->gadget.dev.dma_mask = pdev->dev.dma_mask;
-       dev->gadget.dev.release = gadget_release;
        dev->gadget.name = KBUILD_MODNAME;
        dev->gadget.max_speed = USB_SPEED_HIGH;
 
-       retval = device_register(&dev->gadget.dev);
-       if (retval)
-               goto finished;
-       dev->registered = 1;
-
        /* Put the device in disconnected state till a driver is bound */
        pch_udc_set_disconnect(dev);
-       retval = usb_add_gadget_udc(&pdev->dev, &dev->gadget);
+       retval = usb_add_gadget_udc_release(&pdev->dev, &dev->gadget,
+                       gadget_release);
        if (retval)
                goto finished;
        return 0;