From 641d03422a59b1e790b7edabb16bc62da71130c3 Mon Sep 17 00:00:00 2001 From: Thierry Reding Date: Mon, 21 Jan 2013 11:09:01 +0100 Subject: 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 Cc: Grant Likely Cc: Linus Walleij Acked-by: Viresh Kumar Tested-by: Gregory CLEMENT Acked-by: Gregory CLEMENT Signed-off-by: Greg Kroah-Hartman --- drivers/gpio/gpio-mvebu.c | 16 ++++++++-------- drivers/gpio/gpio-mxs.c | 9 ++++++--- drivers/gpio/gpio-spear-spics.c | 8 +++----- drivers/gpio/gpio-stp-xway.c | 9 ++++----- 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 @@ * interrupts. */ +#include #include #include #include @@ -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); } } 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 @@ * MA 02110-1301, USA. */ +#include #include #include #include @@ -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; 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) 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)) 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) 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; 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 @@ * */ +#include #include #include #include @@ -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++) { -- cgit v1.2.3