gpio: Convert to devm_ioremap_resource()
authorThierry Reding <thierry.reding@avionic-design.de>
Mon, 21 Jan 2013 10:09:01 +0000 (11:09 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 22 Jan 2013 19:41:56 +0000 (11:41 -0800)
Convert all uses of devm_request_and_ioremap() to the newly introduced
devm_ioremap_resource() which provides more consistent error handling.

devm_ioremap_resource() provides its own error messages so all explicit
error messages can be removed from the failure code paths.

Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
Cc: Grant Likely <grant.likely@secretlab.ca>
Cc: Linus Walleij <linus.walleij@linaro.org>
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Tested-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
Acked-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/gpio/gpio-mvebu.c
drivers/gpio/gpio-mxs.c
drivers/gpio/gpio-spear-spics.c
drivers/gpio/gpio-stp-xway.c
drivers/gpio/gpio-tegra.c

index 7d9bd94be8d2a2108b66ac9575071e5751c06c79..bf6c7c989aeead6eaf1b5f491b0db32d64b3cf8f 100644 (file)
@@ -33,6 +33,7 @@
  *   interrupts.
  */
 
+#include <linux/err.h>
 #include <linux/module.h>
 #include <linux/gpio.h>
 #include <linux/irq.h>
@@ -544,11 +545,10 @@ static int mvebu_gpio_probe(struct platform_device *pdev)
        mvchip->chip.of_node = np;
 
        spin_lock_init(&mvchip->lock);
-       mvchip->membase = devm_request_and_ioremap(&pdev->dev, res);
-       if (! mvchip->membase) {
-               dev_err(&pdev->dev, "Cannot ioremap\n");
+       mvchip->membase = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(mvchip->membase)) {
                kfree(mvchip->chip.label);
-               return -ENOMEM;
+               return PTR_ERR(mvchip->membase);
        }
 
        /* The Armada XP has a second range of registers for the
@@ -561,11 +561,11 @@ static int mvebu_gpio_probe(struct platform_device *pdev)
                        return -ENODEV;
                }
 
-               mvchip->percpu_membase = devm_request_and_ioremap(&pdev->dev, res);
-               if (! mvchip->percpu_membase) {
-                       dev_err(&pdev->dev, "Cannot ioremap\n");
+               mvchip->percpu_membase = devm_ioremap_resource(&pdev->dev,
+                                                              res);
+               if (IS_ERR(mvchip->percpu_membase)) {
                        kfree(mvchip->chip.label);
-                       return -ENOMEM;
+                       return PTR_ERR(mvchip->percpu_membase);
                }
        }
 
index fa2a63cad32ebada0f73d7281351a1f7171fe957..45d97c46831a328b9fe3d8c68f778e2e6de37b36 100644 (file)
@@ -20,6 +20,7 @@
  * MA  02110-1301, USA.
  */
 
+#include <linux/err.h>
 #include <linux/init.h>
 #include <linux/interrupt.h>
 #include <linux/io.h>
@@ -253,12 +254,14 @@ static int mxs_gpio_probe(struct platform_device *pdev)
                        parent = of_get_parent(np);
                        base = of_iomap(parent, 0);
                        of_node_put(parent);
+                       if (!base)
+                               return -EADDRNOTAVAIL;
                } else {
                        iores = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-                       base = devm_request_and_ioremap(&pdev->dev, iores);
+                       base = devm_ioremap_resource(&pdev->dev, iores);
+                       if (IS_ERR(base))
+                               return PTR_ERR(base);
                }
-               if (!base)
-                       return -EADDRNOTAVAIL;
        }
        port->base = base;
 
index 5f45fc4ed5d12ef1a86a4e6d0a3f276f6149eb5d..7a4bf7c0d98f266197f3d06fa069564f2028cbeb 100644 (file)
@@ -140,11 +140,9 @@ static int spics_gpio_probe(struct platform_device *pdev)
                return -ENOMEM;
        }
 
-       spics->base = devm_request_and_ioremap(&pdev->dev, res);
-       if (!spics->base) {
-               dev_err(&pdev->dev, "request and ioremap fail\n");
-               return -ENOMEM;
-       }
+       spics->base = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(spics->base))
+               return PTR_ERR(spics->base);
 
        if (of_property_read_u32(np, "st-spics,peripcfg-reg",
                                &spics->perip_cfg))
index 85841ee70b17fc4dab51fc4ebc2d9886e5584de0..c20e05151212990321ef4e0ac11e5b079a553030 100644 (file)
@@ -214,11 +214,10 @@ static int xway_stp_probe(struct platform_device *pdev)
        if (!chip)
                return -ENOMEM;
 
-       chip->virt = devm_request_and_ioremap(&pdev->dev, res);
-       if (!chip->virt) {
-               dev_err(&pdev->dev, "failed to remap STP memory\n");
-               return -ENOMEM;
-       }
+       chip->virt = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(chip->virt))
+               return PTR_ERR(chip->virt);
+       
        chip->gc.dev = &pdev->dev;
        chip->gc.label = "stp-xway";
        chip->gc.direction_output = xway_stp_dir_out;
index 63cb643d4b5aef31a9ab2fc29ec0f0569531620a..414ad912232f9ecc1558c42e865d289920375dfc 100644 (file)
@@ -17,6 +17,7 @@
  *
  */
 
+#include <linux/err.h>
 #include <linux/init.h>
 #include <linux/irq.h>
 #include <linux/interrupt.h>
@@ -450,11 +451,9 @@ static int tegra_gpio_probe(struct platform_device *pdev)
                return -ENODEV;
        }
 
-       regs = devm_request_and_ioremap(&pdev->dev, res);
-       if (!regs) {
-               dev_err(&pdev->dev, "Couldn't ioremap regs\n");
-               return -ENODEV;
-       }
+       regs = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(regs))
+               return PTR_ERR(regs);
 
        for (i = 0; i < tegra_gpio_bank_count; i++) {
                for (j = 0; j < 4; j++) {
This page took 0.029199 seconds and 5 git commands to generate.