]> Pileus Git - ~andy/linux/blobdiff - drivers/usb/dwc3/dwc3-pci.c
Merge branch 'drm-intel-fixes' of git://people.freedesktop.org/~danvet/drm-intel...
[~andy/linux] / drivers / usb / dwc3 / dwc3-pci.c
index 64e1f7c67b08ed374f36428868ad29fd42557bd9..a9ca9adba391aeb1ee1b5c32c9f2cbf0359a5547 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) = {
@@ -171,14 +170,4 @@ MODULE_AUTHOR("Felipe Balbi <balbi@ti.com>");
 MODULE_LICENSE("Dual BSD/GPL");
 MODULE_DESCRIPTION("DesignWare USB3 PCI Glue Layer");
 
-static int __devinit dwc3_pci_init(void)
-{
-       return pci_register_driver(&dwc3_pci_driver);
-}
-module_init(dwc3_pci_init);
-
-static void __exit dwc3_pci_exit(void)
-{
-       pci_unregister_driver(&dwc3_pci_driver);
-}
-module_exit(dwc3_pci_exit);
+module_pci_driver(dwc3_pci_driver);