pinctrl: amd: Use irqchip template
authorLinus Walleij <linus.walleij@linaro.org>
Wed, 22 Jul 2020 10:15:45 +0000 (12:15 +0200)
committerLinus Walleij <linus.walleij@linaro.org>
Mon, 3 Aug 2020 23:29:10 +0000 (01:29 +0200)
This makes the driver use the irqchip template to assign
properties to the gpio_irq_chip instead of using the
explicit call to gpiochip_irqchip_add().

The irqchip is instead added while adding the gpiochip.

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Cc: Shyam Sundar S K <Shyam-sundar.S-k@amd.com>
Cc: Sandeep Singh <sandeep.singh@amd.com>
Link: https://lore.kernel.org/r/20200722101545.144373-1-linus.walleij@linaro.org
drivers/pinctrl/pinctrl-amd.c

index ccf6120..9a760f5 100644 (file)
@@ -846,6 +846,7 @@ static int amd_gpio_probe(struct platform_device *pdev)
        int irq_base;
        struct resource *res;
        struct amd_gpio *gpio_dev;
+       struct gpio_irq_chip *girq;
 
        gpio_dev = devm_kzalloc(&pdev->dev,
                                sizeof(struct amd_gpio), GFP_KERNEL);
@@ -907,6 +908,15 @@ static int amd_gpio_probe(struct platform_device *pdev)
                return PTR_ERR(gpio_dev->pctrl);
        }
 
+       girq = &gpio_dev->gc.irq;
+       girq->chip = &amd_gpio_irqchip;
+       /* This will let us handle the parent IRQ in the driver */
+       girq->parent_handler = NULL;
+       girq->num_parents = 0;
+       girq->parents = NULL;
+       girq->default_type = IRQ_TYPE_NONE;
+       girq->handler = handle_simple_irq;
+
        ret = gpiochip_add_data(&gpio_dev->gc, gpio_dev);
        if (ret)
                return ret;
@@ -918,17 +928,6 @@ static int amd_gpio_probe(struct platform_device *pdev)
                goto out2;
        }
 
-       ret = gpiochip_irqchip_add(&gpio_dev->gc,
-                               &amd_gpio_irqchip,
-                               0,
-                               handle_simple_irq,
-                               IRQ_TYPE_NONE);
-       if (ret) {
-               dev_err(&pdev->dev, "could not add irqchip\n");
-               ret = -ENODEV;
-               goto out2;
-       }
-
        ret = devm_request_irq(&pdev->dev, irq_base, amd_gpio_irq_handler,
                               IRQF_SHARED, KBUILD_MODNAME, gpio_dev);
        if (ret)