summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Walleij <linus.walleij@linaro.org>2019-06-25 06:36:12 -0400
committerLinus Walleij <linus.walleij@linaro.org>2019-07-03 04:23:24 -0400
commitb25e10f8f9bcec3396d2f4348844cc28f06d772f (patch)
treee53e7308794fd977b43b6b2583e775675e54cd60
parent87b70378f424df65465d5bfba2b8f233ee8b36e7 (diff)
gpio: siox: Pass irqchip when adding gpiochip
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>
-rw-r--r--drivers/gpio/gpio-siox.c16
1 files changed, 7 insertions, 9 deletions
diff --git a/drivers/gpio/gpio-siox.c b/drivers/gpio/gpio-siox.c
index 40067e1535d3..26a0ecd487cb 100644
--- a/drivers/gpio/gpio-siox.c
+++ b/drivers/gpio/gpio-siox.c
@@ -211,6 +211,7 @@ static int gpio_siox_get_direction(struct gpio_chip *chip, unsigned int offset)
211static int gpio_siox_probe(struct siox_device *sdevice) 211static int gpio_siox_probe(struct siox_device *sdevice)
212{ 212{
213 struct gpio_siox_ddata *ddata; 213 struct gpio_siox_ddata *ddata;
214 struct gpio_irq_chip *girq;
214 int ret; 215 int ret;
215 216
216 ddata = devm_kzalloc(&sdevice->dev, sizeof(*ddata), GFP_KERNEL); 217 ddata = devm_kzalloc(&sdevice->dev, sizeof(*ddata), GFP_KERNEL);
@@ -239,18 +240,15 @@ static int gpio_siox_probe(struct siox_device *sdevice)
239 ddata->ichip.irq_unmask = gpio_siox_irq_unmask; 240 ddata->ichip.irq_unmask = gpio_siox_irq_unmask;
240 ddata->ichip.irq_set_type = gpio_siox_irq_set_type; 241 ddata->ichip.irq_set_type = gpio_siox_irq_set_type;
241 242
242 ret = gpiochip_add(&ddata->gchip); 243 girq = &ddata->gchip.irq;
243 if (ret) { 244 girq->chip = &ddata->ichip;
244 dev_err(&sdevice->dev, 245 girq->default_type = IRQ_TYPE_NONE;
245 "Failed to register gpio chip (%d)\n", ret); 246 girq->handler = handle_level_irq;
246 return ret;
247 }
248 247
249 ret = gpiochip_irqchip_add(&ddata->gchip, &ddata->ichip, 248 ret = gpiochip_add(&ddata->gchip);
250 0, handle_level_irq, IRQ_TYPE_NONE);
251 if (ret) 249 if (ret)
252 dev_err(&sdevice->dev, 250 dev_err(&sdevice->dev,
253 "Failed to register irq chip (%d)\n", ret); 251 "Failed to register gpio chip (%d)\n", ret);
254 252
255 return ret; 253 return ret;
256} 254}