gpio: mxc: use devres for irq generic chip
authorBartosz Golaszewski <brgl@bgdev.pl>
Wed, 9 Aug 2017 12:25:06 +0000 (14:25 +0200)
committerLinus Walleij <linus.walleij@linaro.org>
Sun, 20 Aug 2017 22:09:33 +0000 (00:09 +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-mxc.c

index 619fe7ad3ceca45ac8bbc4bc2bc95d4629a67ada..5245a2fe62aeebe6fdd0d4f68ccaea2c22b6ddcc 100644 (file)
@@ -66,6 +66,7 @@ struct mxc_gpio_port {
        int irq_high;
        struct irq_domain *domain;
        struct gpio_chip gc;
+       struct device *dev;
        u32 both_edges;
 };
 
@@ -345,9 +346,10 @@ static int mxc_gpio_init_gc(struct mxc_gpio_port *port, int irq_base)
 {
        struct irq_chip_generic *gc;
        struct irq_chip_type *ct;
+       int rv;
 
-       gc = irq_alloc_generic_chip("gpio-mxc", 1, irq_base,
-                                   port->base, handle_level_irq);
+       gc = devm_irq_alloc_generic_chip(port->dev, "gpio-mxc", 1, irq_base,
+                                        port->base, handle_level_irq);
        if (!gc)
                return -ENOMEM;
        gc->private = port;
@@ -362,10 +364,11 @@ static int mxc_gpio_init_gc(struct mxc_gpio_port *port, int irq_base)
        ct->regs.ack = GPIO_ISR;
        ct->regs.mask = GPIO_IMR;
 
-       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 void mxc_gpio_get_hw(struct platform_device *pdev)
@@ -419,6 +422,8 @@ static int mxc_gpio_probe(struct platform_device *pdev)
        if (!port)
                return -ENOMEM;
 
+       port->dev = &pdev->dev;
+
        iores = platform_get_resource(pdev, IORESOURCE_MEM, 0);
        port->base = devm_ioremap_resource(&pdev->dev, iores);
        if (IS_ERR(port->base))