gpio: mxs: use devres for irq generic chip
authorBartosz Golaszewski <brgl@bgdev.pl>
Wed, 9 Aug 2017 12:25:07 +0000 (14:25 +0200)
committerLinus Walleij <linus.walleij@linaro.org>
Sun, 20 Aug 2017 22:10:00 +0000 (00:10 +0200)
Use resource managed variants of irq_alloc_generic_chip() and
irq_setup_generic_chip().

Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/gpio/gpio-mxs.c

index 1599278..435def2 100644 (file)
@@ -66,6 +66,7 @@ struct mxs_gpio_port {
        int irq;
        struct irq_domain *domain;
        struct gpio_chip gc;
+       struct device *dev;
        enum mxs_gpio_id devid;
        u32 both_edges;
 };
@@ -209,9 +210,10 @@ static int mxs_gpio_init_gc(struct mxs_gpio_port *port, int irq_base)
 {
        struct irq_chip_generic *gc;
        struct irq_chip_type *ct;
+       int rv;
 
-       gc = irq_alloc_generic_chip("gpio-mxs", 2, irq_base,
-                                   port->base, handle_level_irq);
+       gc = devm_irq_alloc_generic_chip(port->dev, "gpio-mxs", 2, irq_base,
+                                        port->base, handle_level_irq);
        if (!gc)
                return -ENOMEM;
 
@@ -242,10 +244,11 @@ static int mxs_gpio_init_gc(struct mxs_gpio_port *port, int irq_base)
        ct->regs.disable = PINCTRL_IRQEN(port) + MXS_CLR;
        ct->handler = handle_level_irq;
 
-       irq_setup_generic_chip(gc, IRQ_MSK(32), IRQ_GC_INIT_NESTED_LOCK,
-                              IRQ_NOREQUEST, 0);
+       rv = devm_irq_setup_generic_chip(port->dev, gc, IRQ_MSK(32),
+                                        IRQ_GC_INIT_NESTED_LOCK,
+                                        IRQ_NOREQUEST, 0);
 
-       return 0;
+       return rv;
 }
 
 static int mxs_gpio_to_irq(struct gpio_chip *gc, unsigned offset)
@@ -304,6 +307,7 @@ static int mxs_gpio_probe(struct platform_device *pdev)
        if (port->id < 0)
                return port->id;
        port->devid = (enum mxs_gpio_id) of_id->data;
+       port->dev = &pdev->dev;
        port->irq = platform_get_irq(pdev, 0);
        if (port->irq < 0)
                return port->irq;