]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/usb/chipidea/ci13xxx_pci.c
Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux
[karo-tx-linux.git] / drivers / usb / chipidea / ci13xxx_pci.c
index e3dab27f5c751c621eb08d34dbc4da0d86d940fc..918e14971f2bc6db65d507a1086c80adfe018969 100644 (file)
 /******************************************************************************
  * PCI block
  *****************************************************************************/
-struct ci13xxx_udc_driver pci_driver = {
+struct ci13xxx_platform_data pci_platdata = {
        .name           = UDC_DRIVER_NAME,
        .capoffset      = DEF_CAPOFFSET,
 };
 
-struct ci13xxx_udc_driver langwell_pci_driver = {
+struct ci13xxx_platform_data langwell_pci_platdata = {
        .name           = UDC_DRIVER_NAME,
        .capoffset      = 0,
 };
 
-struct ci13xxx_udc_driver penwell_pci_driver = {
+struct ci13xxx_platform_data penwell_pci_platdata = {
        .name           = UDC_DRIVER_NAME,
        .capoffset      = 0,
        .power_budget   = 200,
@@ -51,12 +51,12 @@ struct ci13xxx_udc_driver penwell_pci_driver = {
 static int __devinit ci13xxx_pci_probe(struct pci_dev *pdev,
                                       const struct pci_device_id *id)
 {
-       struct ci13xxx_udc_driver *driver = (void *)id->driver_data;
+       struct ci13xxx_platform_data *platdata = (void *)id->driver_data;
        struct platform_device *plat_ci;
        struct resource res[3];
        int retval = 0, nres = 2;
 
-       if (!driver) {
+       if (!platdata) {
                dev_err(&pdev->dev, "device doesn't provide driver data\n");
                return -ENODEV;
        }
@@ -75,13 +75,6 @@ static int __devinit ci13xxx_pci_probe(struct pci_dev *pdev,
        pci_set_master(pdev);
        pci_try_set_mwi(pdev);
 
-       plat_ci = platform_device_alloc("ci_hdrc", -1);
-       if (!plat_ci) {
-               dev_err(&pdev->dev, "can't allocate ci_hdrc platform device\n");
-               retval = -ENOMEM;
-               goto disable_device;
-       }
-
        memset(res, 0, sizeof(res));
        res[0].start    = pci_resource_start(pdev, 0);
        res[0].end      = pci_resource_end(pdev, 0);
@@ -89,32 +82,17 @@ static int __devinit ci13xxx_pci_probe(struct pci_dev *pdev,
        res[1].start    = pdev->irq;
        res[1].flags    = IORESOURCE_IRQ;
 
-       retval = platform_device_add_resources(plat_ci, res, nres);
-       if (retval) {
-               dev_err(&pdev->dev, "can't add resources to platform device\n");
-               goto put_platform;
+       plat_ci = ci13xxx_add_device(&pdev->dev, res, nres, platdata);
+       if (IS_ERR(plat_ci)) {
+               dev_err(&pdev->dev, "ci13xxx_add_device failed!\n");
+               retval = PTR_ERR(plat_ci);
+               goto disable_device;
        }
 
-       retval = platform_device_add_data(plat_ci, driver, sizeof(*driver));
-       if (retval)
-               goto put_platform;
-
-       dma_set_coherent_mask(&plat_ci->dev, pdev->dev.coherent_dma_mask);
-       plat_ci->dev.dma_mask = pdev->dev.dma_mask;
-       plat_ci->dev.dma_parms = pdev->dev.dma_parms;
-       plat_ci->dev.parent = &pdev->dev;
-
        pci_set_drvdata(pdev, plat_ci);
 
-       retval = platform_device_add(plat_ci);
-       if (retval)
-               goto put_platform;
-
        return 0;
 
- put_platform:
-       pci_set_drvdata(pdev, NULL);
-       platform_device_put(plat_ci);
  disable_device:
        pci_disable_device(pdev);
  done:
@@ -133,7 +111,7 @@ static void __devexit ci13xxx_pci_remove(struct pci_dev *pdev)
 {
        struct platform_device *plat_ci = pci_get_drvdata(pdev);
 
-       platform_device_unregister(plat_ci);
+       ci13xxx_remove_device(plat_ci);
        pci_set_drvdata(pdev, NULL);
        pci_disable_device(pdev);
 }
@@ -147,19 +125,19 @@ static void __devexit ci13xxx_pci_remove(struct pci_dev *pdev)
 static DEFINE_PCI_DEVICE_TABLE(ci13xxx_pci_id_table) = {
        {
                PCI_DEVICE(0x153F, 0x1004),
-               .driver_data = (kernel_ulong_t)&pci_driver,
+               .driver_data = (kernel_ulong_t)&pci_platdata,
        },
        {
                PCI_DEVICE(0x153F, 0x1006),
-               .driver_data = (kernel_ulong_t)&pci_driver,
+               .driver_data = (kernel_ulong_t)&pci_platdata,
        },
        {
                PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x0811),
-               .driver_data = (kernel_ulong_t)&langwell_pci_driver,
+               .driver_data = (kernel_ulong_t)&langwell_pci_platdata,
        },
        {
                PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x0829),
-               .driver_data = (kernel_ulong_t)&penwell_pci_driver,
+               .driver_data = (kernel_ulong_t)&penwell_pci_platdata,
        },
        { 0, 0, 0, 0, 0, 0, 0 /* end: all zeroes */ }
 };