]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/staging/xillybus/xillybus_pcie.c
Merge tag 'microblaze-3.16-rc1' of git://git.monstr.eu/linux-2.6-microblaze into...
[karo-tx-linux.git] / drivers / staging / xillybus / xillybus_pcie.c
index 51426d80ca7b85f13dc50f2df182a7c89ce9d7d4..a4fe51c90e92f3858b333b45899d837e92821f34 100644 (file)
@@ -141,38 +141,32 @@ static int xilly_probe(struct pci_dev *pdev,
 
        pci_set_drvdata(pdev, endpoint);
 
-       rc = pci_enable_device(pdev);
-
-       /* L0s has caused packet drops. No power saving, thank you. */
-
-       pci_disable_link_state(pdev, PCIE_LINK_STATE_L0S);
+       rc = pcim_enable_device(pdev);
 
        if (rc) {
                dev_err(endpoint->dev,
-                       "pci_enable_device() failed. Aborting.\n");
-               goto no_enable;
+                       "pcim_enable_device() failed. Aborting.\n");
+               return rc;
        }
 
+       /* L0s has caused packet drops. No power saving, thank you. */
+
+       pci_disable_link_state(pdev, PCIE_LINK_STATE_L0S);
+
        if (!(pci_resource_flags(pdev, 0) & IORESOURCE_MEM)) {
                dev_err(endpoint->dev,
                        "Incorrect BAR configuration. Aborting.\n");
-               rc = -ENODEV;
-               goto bad_bar;
+               return -ENODEV;
        }
 
-       rc = pci_request_regions(pdev, xillyname);
+       rc = pcim_iomap_regions(pdev, 0x01, xillyname);
        if (rc) {
                dev_err(endpoint->dev,
-                       "pci_request_regions() failed. Aborting.\n");
-               goto failed_request_regions;
+                       "pcim_iomap_regions() failed. Aborting.\n");
+               return rc;
        }
 
-       endpoint->registers = pci_iomap(pdev, 0, 128);
-       if (!endpoint->registers) {
-               dev_err(endpoint->dev, "Failed to map BAR 0. Aborting.\n");
-               rc = -EIO;
-               goto failed_iomap0;
-       }
+       endpoint->registers = pcim_iomap_table(pdev)[0];
 
        pci_set_master(pdev);
 
@@ -180,16 +174,15 @@ static int xilly_probe(struct pci_dev *pdev,
        if (pci_enable_msi(pdev)) {
                dev_err(endpoint->dev,
                        "Failed to enable MSI interrupts. Aborting.\n");
-               rc = -ENODEV;
-               goto failed_enable_msi;
+               return -ENODEV;
        }
-       rc = request_irq(pdev->irq, xillybus_isr, 0, xillyname, endpoint);
+       rc = devm_request_irq(&pdev->dev, pdev->irq, xillybus_isr, 0,
+                             xillyname, endpoint);
 
        if (rc) {
                dev_err(endpoint->dev,
                        "Failed to register MSI handler. Aborting.\n");
-               rc = -ENODEV;
-               goto failed_register_msi;
+               return -ENODEV;
        }
 
        /*
@@ -203,8 +196,7 @@ static int xilly_probe(struct pci_dev *pdev,
                endpoint->dma_using_dac = 0;
        else {
                dev_err(endpoint->dev, "Failed to set DMA mask. Aborting.\n");
-               rc = -ENODEV;
-               goto failed_dmamask;
+               return -ENODEV;
        }
 
        rc = xillybus_endpoint_discovery(endpoint);
@@ -212,22 +204,8 @@ static int xilly_probe(struct pci_dev *pdev,
        if (!rc)
                return 0;
 
-failed_dmamask:
-       free_irq(pdev->irq, endpoint);
-failed_register_msi:
-       pci_disable_msi(pdev);
-failed_enable_msi:
-       /* pci_clear_master(pdev); Nobody else seems to do this */
-       pci_iounmap(pdev, endpoint->registers);
-failed_iomap0:
-       pci_release_regions(pdev);
-failed_request_regions:
-bad_bar:
-       pci_disable_device(pdev);
-no_enable:
        xillybus_do_cleanup(&endpoint->cleanup, endpoint);
 
-       kfree(endpoint);
        return rc;
 }
 
@@ -237,16 +215,7 @@ static void xilly_remove(struct pci_dev *pdev)
 
        xillybus_endpoint_remove(endpoint);
 
-       free_irq(pdev->irq, endpoint);
-
-       pci_disable_msi(pdev);
-       pci_iounmap(pdev, endpoint->registers);
-       pci_release_regions(pdev);
-       pci_disable_device(pdev);
-
        xillybus_do_cleanup(&endpoint->cleanup, endpoint);
-
-       kfree(endpoint);
 }
 
 MODULE_DEVICE_TABLE(pci, xillyids);