gpio: vr41xx: Use devm_platform_ioremap_resource()
authorEnrico Weigelt, metux IT consult <info@metux.net>
Mon, 17 Jun 2019 16:49:20 +0000 (18:49 +0200)
committerLinus Walleij <linus.walleij@linaro.org>
Thu, 27 Jun 2019 14:56:51 +0000 (15:56 +0100)
Use the new helper that wraps the calls to platform_get_resource()
and devm_ioremap_resource() together.

this driver deserves a bit more cleanup, to get rid of the global
variable giu_base, which makes it single-instance-only.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/gpio/gpio-vr41xx.c

index b13a49c..98cd715 100644 (file)
@@ -467,10 +467,9 @@ static struct gpio_chip vr41xx_gpio_chip = {
 
 static int giu_probe(struct platform_device *pdev)
 {
-       struct resource *res;
        unsigned int trigger, i, pin;
        struct irq_chip *chip;
-       int irq, ret;
+       int irq;
 
        switch (pdev->id) {
        case GPIO_50PINS_PULLUPDOWN:
@@ -489,21 +488,14 @@ static int giu_probe(struct platform_device *pdev)
                return -ENODEV;
        }
 
-       res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       if (!res)
-               return -EBUSY;
-
-       giu_base = ioremap(res->start, resource_size(res));
-       if (!giu_base)
-               return -ENOMEM;
+       giu_base = devm_platform_ioremap_resource(pdev, 0);
+       if (IS_ERR(giu_base))
+               return PTR_ERR(giu_base);
 
        vr41xx_gpio_chip.parent = &pdev->dev;
 
-       ret = gpiochip_add_data(&vr41xx_gpio_chip, NULL);
-       if (!ret) {
-               iounmap(giu_base);
+       if (gpiochip_add_data(&vr41xx_gpio_chip, NULL))
                return -ENODEV;
-       }
 
        giu_write(GIUINTENL, 0);
        giu_write(GIUINTENH, 0);
@@ -534,7 +526,6 @@ static int giu_probe(struct platform_device *pdev)
 static int giu_remove(struct platform_device *pdev)
 {
        if (giu_base) {
-               iounmap(giu_base);
                giu_base = NULL;
        }