Browse Source

gpio: mxc: use devres for irq generic chip

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>
Bartosz Golaszewski 8 years ago
parent
commit
db5270acaa
1 changed files with 10 additions and 5 deletions
  1. 10 5
      drivers/gpio/gpio-mxc.c

+ 10 - 5
drivers/gpio/gpio-mxc.c

@@ -66,6 +66,7 @@ struct mxc_gpio_port {
 	int irq_high;
 	int irq_high;
 	struct irq_domain *domain;
 	struct irq_domain *domain;
 	struct gpio_chip gc;
 	struct gpio_chip gc;
+	struct device *dev;
 	u32 both_edges;
 	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_generic *gc;
 	struct irq_chip_type *ct;
 	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)
 	if (!gc)
 		return -ENOMEM;
 		return -ENOMEM;
 	gc->private = port;
 	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.ack = GPIO_ISR;
 	ct->regs.mask = GPIO_IMR;
 	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)
 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)
 	if (!port)
 		return -ENOMEM;
 		return -ENOMEM;
 
 
+	port->dev = &pdev->dev;
+
 	iores = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 	iores = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 	port->base = devm_ioremap_resource(&pdev->dev, iores);
 	port->base = devm_ioremap_resource(&pdev->dev, iores);
 	if (IS_ERR(port->base))
 	if (IS_ERR(port->base))