Merge branch 'akpm' (patches from Andrew)
[cascardo/linux.git] / drivers / mcb / mcb-pci.c
index 67d5e7d..b15a034 100644 (file)
@@ -35,7 +35,6 @@ static int mcb_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
        struct resource *res;
        struct priv *priv;
        int ret;
-       int num_cells;
        unsigned long flags;
 
        priv = devm_kzalloc(&pdev->dev, sizeof(struct priv), GFP_KERNEL);
@@ -55,19 +54,20 @@ static int mcb_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
                goto out_disable;
        }
 
-       res = request_mem_region(priv->mapbase, CHAM_HEADER_SIZE,
-                                KBUILD_MODNAME);
+       res = devm_request_mem_region(&pdev->dev, priv->mapbase,
+                                     CHAM_HEADER_SIZE,
+                                     KBUILD_MODNAME);
        if (!res) {
                dev_err(&pdev->dev, "Failed to request PCI memory\n");
                ret = -EBUSY;
                goto out_disable;
        }
 
-       priv->base = ioremap(priv->mapbase, CHAM_HEADER_SIZE);
+       priv->base = devm_ioremap(&pdev->dev, priv->mapbase, CHAM_HEADER_SIZE);
        if (!priv->base) {
                dev_err(&pdev->dev, "Cannot ioremap\n");
                ret = -ENOMEM;
-               goto out_release;
+               goto out_disable;
        }
 
        flags = pci_resource_flags(pdev, 0);
@@ -75,7 +75,7 @@ static int mcb_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
                ret = -ENOTSUPP;
                dev_err(&pdev->dev,
                        "IO mapped PCI devices are not supported\n");
-               goto out_iounmap;
+               goto out_disable;
        }
 
        pci_set_drvdata(pdev, priv);
@@ -83,7 +83,7 @@ static int mcb_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
        priv->bus = mcb_alloc_bus(&pdev->dev);
        if (IS_ERR(priv->bus)) {
                ret = PTR_ERR(priv->bus);
-               goto out_iounmap;
+               goto out_disable;
        }
 
        priv->bus->get_irq = mcb_pci_get_irq;
@@ -91,9 +91,8 @@ static int mcb_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
        ret = chameleon_parse_cells(priv->bus, priv->mapbase, priv->base);
        if (ret < 0)
                goto out_mcb_bus;
-       num_cells = ret;
 
-       dev_dbg(&pdev->dev, "Found %d cells\n", num_cells);
+       dev_dbg(&pdev->dev, "Found %d cells\n", ret);
 
        mcb_bus_add_devices(priv->bus);
 
@@ -101,10 +100,6 @@ static int mcb_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
 
 out_mcb_bus:
        mcb_release_bus(priv->bus);
-out_iounmap:
-       iounmap(priv->base);
-out_release:
-       pci_release_region(pdev, 0);
 out_disable:
        pci_disable_device(pdev);
        return ret;
@@ -116,8 +111,6 @@ static void mcb_pci_remove(struct pci_dev *pdev)
 
        mcb_release_bus(priv->bus);
 
-       iounmap(priv->base);
-       release_region(priv->mapbase, CHAM_HEADER_SIZE);
        pci_disable_device(pdev);
 }