gpio: siox: Pass irqchip when adding gpiochip
authorLinus Walleij <linus.walleij@linaro.org>
Tue, 25 Jun 2019 10:36:12 +0000 (12:36 +0200)
committerLinus Walleij <linus.walleij@linaro.org>
Wed, 3 Jul 2019 08:23:24 +0000 (10:23 +0200)
We need to convert all old gpio irqchips to pass the irqchip
setup along when adding the gpio_chip.

For chained irqchips this is a pretty straight-forward
conversion.

Cc: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Cc: Thierry Reding <treding@nvidia.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/gpio/gpio-siox.c

index 40067e1535d345d2577d14813248221757d89a82..26a0ecd487cb7e1623db76c12cf76538b72523cd 100644 (file)
@@ -211,6 +211,7 @@ static int gpio_siox_get_direction(struct gpio_chip *chip, unsigned int offset)
 static int gpio_siox_probe(struct siox_device *sdevice)
 {
        struct gpio_siox_ddata *ddata;
+       struct gpio_irq_chip *girq;
        int ret;
 
        ddata = devm_kzalloc(&sdevice->dev, sizeof(*ddata), GFP_KERNEL);
@@ -239,18 +240,15 @@ static int gpio_siox_probe(struct siox_device *sdevice)
        ddata->ichip.irq_unmask = gpio_siox_irq_unmask;
        ddata->ichip.irq_set_type = gpio_siox_irq_set_type;
 
-       ret = gpiochip_add(&ddata->gchip);
-       if (ret) {
-               dev_err(&sdevice->dev,
-                       "Failed to register gpio chip (%d)\n", ret);
-               return ret;
-       }
+       girq = &ddata->gchip.irq;
+       girq->chip = &ddata->ichip;
+       girq->default_type = IRQ_TYPE_NONE;
+       girq->handler = handle_level_irq;
 
-       ret = gpiochip_irqchip_add(&ddata->gchip, &ddata->ichip,
-                                  0, handle_level_irq, IRQ_TYPE_NONE);
+       ret = gpiochip_add(&ddata->gchip);
        if (ret)
                dev_err(&sdevice->dev,
-                       "Failed to register irq chip (%d)\n", ret);
+                       "Failed to register gpio chip (%d)\n", ret);
 
        return ret;
 }