Merge tag 'usb-3.3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb
[linux-2.6.git] / drivers / usb / dwc3 / dwc3-pci.c
index c68e427..a9ca9ad 100644 (file)
@@ -61,32 +61,36 @@ static int __devinit dwc3_pci_probe(struct pci_dev *pci,
        struct dwc3_pci         *glue;
        int                     ret = -ENOMEM;
        int                     devid;
+       struct device           *dev = &pci->dev;
 
-       glue = kzalloc(sizeof(*glue), GFP_KERNEL);
+       glue = devm_kzalloc(dev, sizeof(*glue), GFP_KERNEL);
        if (!glue) {
-               dev_err(&pci->dev, "not enough memory\n");
-               goto err0;
+               dev_err(dev, "not enough memory\n");
+               return -ENOMEM;
        }
 
-       glue->dev       = &pci->dev;
+       glue->dev = dev;
 
        ret = pci_enable_device(pci);
        if (ret) {
-               dev_err(&pci->dev, "failed to enable pci device\n");
-               goto err1;
+               dev_err(dev, "failed to enable pci device\n");
+               return -ENODEV;
        }
 
        pci_set_power_state(pci, PCI_D0);
        pci_set_master(pci);
 
        devid = dwc3_get_device_id();
-       if (devid < 0)
-               goto err2;
+       if (devid < 0) {
+               ret = -ENOMEM;
+               goto err1;
+       }
 
        dwc3 = platform_device_alloc("dwc3", devid);
        if (!dwc3) {
-               dev_err(&pci->dev, "couldn't allocate dwc3 device\n");
-               goto err3;
+               dev_err(dev, "couldn't allocate dwc3 device\n");
+               ret = -ENOMEM;
+               goto err1;
        }
 
        memset(res, 0x00, sizeof(struct resource) * ARRAY_SIZE(res));
@@ -102,41 +106,37 @@ static int __devinit dwc3_pci_probe(struct pci_dev *pci,
 
        ret = platform_device_add_resources(dwc3, res, ARRAY_SIZE(res));
        if (ret) {
-               dev_err(&pci->dev, "couldn't add resources to dwc3 device\n");
-               goto err4;
+               dev_err(dev, "couldn't add resources to dwc3 device\n");
+               goto err2;
        }
 
        pci_set_drvdata(pci, glue);
 
-       dma_set_coherent_mask(&dwc3->dev, pci->dev.coherent_dma_mask);
+       dma_set_coherent_mask(&dwc3->dev, dev->coherent_dma_mask);
 
-       dwc3->dev.dma_mask = pci->dev.dma_mask;
-       dwc3->dev.dma_parms = pci->dev.dma_parms;
-       dwc3->dev.parent = &pci->dev;
-       glue->dwc3      = dwc3;
+       dwc3->dev.dma_mask = dev->dma_mask;
+       dwc3->dev.dma_parms = dev->dma_parms;
+       dwc3->dev.parent = dev;
+       glue->dwc3 = dwc3;
 
        ret = platform_device_add(dwc3);
        if (ret) {
-               dev_err(&pci->dev, "failed to register dwc3 device\n");
-               goto err4;
+               dev_err(dev, "failed to register dwc3 device\n");
+               goto err3;
        }
 
        return 0;
 
-err4:
+err3:
        pci_set_drvdata(pci, NULL);
        platform_device_put(dwc3);
 
-err3:
-       dwc3_put_device_id(devid);
-
 err2:
-       pci_disable_device(pci);
+       dwc3_put_device_id(devid);
 
 err1:
-       kfree(glue);
+       pci_disable_device(pci);
 
-err0:
        return ret;
 }
 
@@ -148,7 +148,6 @@ static void __devexit dwc3_pci_remove(struct pci_dev *pci)
        platform_device_unregister(glue->dwc3);
        pci_set_drvdata(pci, NULL);
        pci_disable_device(pci);
-       kfree(glue);
 }
 
 static DEFINE_PCI_DEVICE_TABLE(dwc3_pci_id_table) = {