diff options
author | Thierry Reding <thierry.reding@avionic-design.de> | 2013-01-21 05:09:01 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2013-01-22 14:41:56 -0500 |
commit | 641d03422a59b1e790b7edabb16bc62da71130c3 (patch) | |
tree | 664b32773f331f9d0b60bd0feaae831791c1d3ff /drivers | |
parent | c7c9e1c372452688f0ef2af794789bbd00f9fa51 (diff) |
gpio: Convert to devm_ioremap_resource()
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>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/gpio/gpio-mvebu.c | 16 | ||||
-rw-r--r-- | drivers/gpio/gpio-mxs.c | 9 | ||||
-rw-r--r-- | drivers/gpio/gpio-spear-spics.c | 8 | ||||
-rw-r--r-- | drivers/gpio/gpio-stp-xway.c | 9 | ||||
-rw-r--r-- | drivers/gpio/gpio-tegra.c | 9 |
5 files changed, 25 insertions, 26 deletions
diff --git a/drivers/gpio/gpio-mvebu.c b/drivers/gpio/gpio-mvebu.c index 7d9bd94be8d2..bf6c7c989aee 100644 --- a/drivers/gpio/gpio-mvebu.c +++ b/drivers/gpio/gpio-mvebu.c | |||
@@ -33,6 +33,7 @@ | |||
33 | * interrupts. | 33 | * interrupts. |
34 | */ | 34 | */ |
35 | 35 | ||
36 | #include <linux/err.h> | ||
36 | #include <linux/module.h> | 37 | #include <linux/module.h> |
37 | #include <linux/gpio.h> | 38 | #include <linux/gpio.h> |
38 | #include <linux/irq.h> | 39 | #include <linux/irq.h> |
@@ -544,11 +545,10 @@ static int mvebu_gpio_probe(struct platform_device *pdev) | |||
544 | mvchip->chip.of_node = np; | 545 | mvchip->chip.of_node = np; |
545 | 546 | ||
546 | spin_lock_init(&mvchip->lock); | 547 | spin_lock_init(&mvchip->lock); |
547 | mvchip->membase = devm_request_and_ioremap(&pdev->dev, res); | 548 | mvchip->membase = devm_ioremap_resource(&pdev->dev, res); |
548 | if (! mvchip->membase) { | 549 | if (IS_ERR(mvchip->membase)) { |
549 | dev_err(&pdev->dev, "Cannot ioremap\n"); | ||
550 | kfree(mvchip->chip.label); | 550 | kfree(mvchip->chip.label); |
551 | return -ENOMEM; | 551 | return PTR_ERR(mvchip->membase); |
552 | } | 552 | } |
553 | 553 | ||
554 | /* The Armada XP has a second range of registers for the | 554 | /* The Armada XP has a second range of registers for the |
@@ -561,11 +561,11 @@ static int mvebu_gpio_probe(struct platform_device *pdev) | |||
561 | return -ENODEV; | 561 | return -ENODEV; |
562 | } | 562 | } |
563 | 563 | ||
564 | mvchip->percpu_membase = devm_request_and_ioremap(&pdev->dev, res); | 564 | mvchip->percpu_membase = devm_ioremap_resource(&pdev->dev, |
565 | if (! mvchip->percpu_membase) { | 565 | res); |
566 | dev_err(&pdev->dev, "Cannot ioremap\n"); | 566 | if (IS_ERR(mvchip->percpu_membase)) { |
567 | kfree(mvchip->chip.label); | 567 | kfree(mvchip->chip.label); |
568 | return -ENOMEM; | 568 | return PTR_ERR(mvchip->percpu_membase); |
569 | } | 569 | } |
570 | } | 570 | } |
571 | 571 | ||
diff --git a/drivers/gpio/gpio-mxs.c b/drivers/gpio/gpio-mxs.c index fa2a63cad32e..45d97c46831a 100644 --- a/drivers/gpio/gpio-mxs.c +++ b/drivers/gpio/gpio-mxs.c | |||
@@ -20,6 +20,7 @@ | |||
20 | * MA 02110-1301, USA. | 20 | * MA 02110-1301, USA. |
21 | */ | 21 | */ |
22 | 22 | ||
23 | #include <linux/err.h> | ||
23 | #include <linux/init.h> | 24 | #include <linux/init.h> |
24 | #include <linux/interrupt.h> | 25 | #include <linux/interrupt.h> |
25 | #include <linux/io.h> | 26 | #include <linux/io.h> |
@@ -253,12 +254,14 @@ static int mxs_gpio_probe(struct platform_device *pdev) | |||
253 | parent = of_get_parent(np); | 254 | parent = of_get_parent(np); |
254 | base = of_iomap(parent, 0); | 255 | base = of_iomap(parent, 0); |
255 | of_node_put(parent); | 256 | of_node_put(parent); |
257 | if (!base) | ||
258 | return -EADDRNOTAVAIL; | ||
256 | } else { | 259 | } else { |
257 | iores = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 260 | iores = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
258 | base = devm_request_and_ioremap(&pdev->dev, iores); | 261 | base = devm_ioremap_resource(&pdev->dev, iores); |
262 | if (IS_ERR(base)) | ||
263 | return PTR_ERR(base); | ||
259 | } | 264 | } |
260 | if (!base) | ||
261 | return -EADDRNOTAVAIL; | ||
262 | } | 265 | } |
263 | port->base = base; | 266 | port->base = base; |
264 | 267 | ||
diff --git a/drivers/gpio/gpio-spear-spics.c b/drivers/gpio/gpio-spear-spics.c index 5f45fc4ed5d1..7a4bf7c0d98f 100644 --- a/drivers/gpio/gpio-spear-spics.c +++ b/drivers/gpio/gpio-spear-spics.c | |||
@@ -140,11 +140,9 @@ static int spics_gpio_probe(struct platform_device *pdev) | |||
140 | return -ENOMEM; | 140 | return -ENOMEM; |
141 | } | 141 | } |
142 | 142 | ||
143 | spics->base = devm_request_and_ioremap(&pdev->dev, res); | 143 | spics->base = devm_ioremap_resource(&pdev->dev, res); |
144 | if (!spics->base) { | 144 | if (IS_ERR(spics->base)) |
145 | dev_err(&pdev->dev, "request and ioremap fail\n"); | 145 | return PTR_ERR(spics->base); |
146 | return -ENOMEM; | ||
147 | } | ||
148 | 146 | ||
149 | if (of_property_read_u32(np, "st-spics,peripcfg-reg", | 147 | if (of_property_read_u32(np, "st-spics,peripcfg-reg", |
150 | &spics->perip_cfg)) | 148 | &spics->perip_cfg)) |
diff --git a/drivers/gpio/gpio-stp-xway.c b/drivers/gpio/gpio-stp-xway.c index 85841ee70b17..c20e05151212 100644 --- a/drivers/gpio/gpio-stp-xway.c +++ b/drivers/gpio/gpio-stp-xway.c | |||
@@ -214,11 +214,10 @@ static int xway_stp_probe(struct platform_device *pdev) | |||
214 | if (!chip) | 214 | if (!chip) |
215 | return -ENOMEM; | 215 | return -ENOMEM; |
216 | 216 | ||
217 | chip->virt = devm_request_and_ioremap(&pdev->dev, res); | 217 | chip->virt = devm_ioremap_resource(&pdev->dev, res); |
218 | if (!chip->virt) { | 218 | if (IS_ERR(chip->virt)) |
219 | dev_err(&pdev->dev, "failed to remap STP memory\n"); | 219 | return PTR_ERR(chip->virt); |
220 | return -ENOMEM; | 220 | |
221 | } | ||
222 | chip->gc.dev = &pdev->dev; | 221 | chip->gc.dev = &pdev->dev; |
223 | chip->gc.label = "stp-xway"; | 222 | chip->gc.label = "stp-xway"; |
224 | chip->gc.direction_output = xway_stp_dir_out; | 223 | chip->gc.direction_output = xway_stp_dir_out; |
diff --git a/drivers/gpio/gpio-tegra.c b/drivers/gpio/gpio-tegra.c index 63cb643d4b5a..414ad912232f 100644 --- a/drivers/gpio/gpio-tegra.c +++ b/drivers/gpio/gpio-tegra.c | |||
@@ -17,6 +17,7 @@ | |||
17 | * | 17 | * |
18 | */ | 18 | */ |
19 | 19 | ||
20 | #include <linux/err.h> | ||
20 | #include <linux/init.h> | 21 | #include <linux/init.h> |
21 | #include <linux/irq.h> | 22 | #include <linux/irq.h> |
22 | #include <linux/interrupt.h> | 23 | #include <linux/interrupt.h> |
@@ -450,11 +451,9 @@ static int tegra_gpio_probe(struct platform_device *pdev) | |||
450 | return -ENODEV; | 451 | return -ENODEV; |
451 | } | 452 | } |
452 | 453 | ||
453 | regs = devm_request_and_ioremap(&pdev->dev, res); | 454 | regs = devm_ioremap_resource(&pdev->dev, res); |
454 | if (!regs) { | 455 | if (IS_ERR(regs)) |
455 | dev_err(&pdev->dev, "Couldn't ioremap regs\n"); | 456 | return PTR_ERR(regs); |
456 | return -ENODEV; | ||
457 | } | ||
458 | 457 | ||
459 | for (i = 0; i < tegra_gpio_bank_count; i++) { | 458 | for (i = 0; i < tegra_gpio_bank_count; i++) { |
460 | for (j = 0; j < 4; j++) { | 459 | for (j = 0; j < 4; j++) { |