Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

gpio: max732x: Use irqchip template

This makes the driver use the irqchip template to assign
properties to the gpio_irq_chip instead of using the
explicit calls to gpiochip_irqchip_add_nested() and
gpiochip_set_nested_irqchip(). The irqchip is instead
added while adding the gpiochip.

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Tested-by: Sam Protsenko <semen.protsenko@linaro.org>
Reviewed-by: Sam Protsenko <semen.protsenko@linaro.org>
Cc: Sam Protsenko <semen.protsenko@linaro.org>
Link: https://lore.kernel.org/r/20200726221259.133536-1-linus.walleij@linaro.org

+15 -15
+15 -15
drivers/gpio/gpio-max732x.c
··· 503 503 504 504 if (((pdata && pdata->irq_base) || client->irq) 505 505 && has_irq != INT_NONE) { 506 + struct gpio_irq_chip *girq; 507 + 506 508 if (pdata) 507 509 irq_base = pdata->irq_base; 508 510 chip->irq_features = has_irq; ··· 519 517 client->irq); 520 518 return ret; 521 519 } 522 - ret = gpiochip_irqchip_add_nested(&chip->gpio_chip, 523 - &max732x_irq_chip, 524 - irq_base, 525 - handle_simple_irq, 526 - IRQ_TYPE_NONE); 527 - if (ret) { 528 - dev_err(&client->dev, 529 - "could not connect irqchip to gpiochip\n"); 530 - return ret; 531 - } 532 - gpiochip_set_nested_irqchip(&chip->gpio_chip, 533 - &max732x_irq_chip, 534 - client->irq); 520 + 521 + girq = &chip->gpio_chip.irq; 522 + girq->chip = &max732x_irq_chip; 523 + /* This will let us handle the parent IRQ in the driver */ 524 + girq->parent_handler = NULL; 525 + girq->num_parents = 0; 526 + girq->parents = NULL; 527 + girq->default_type = IRQ_TYPE_NONE; 528 + girq->handler = handle_simple_irq; 529 + girq->threaded = true; 530 + girq->first = irq_base; /* FIXME: get rid of this */ 535 531 } 536 532 537 533 return 0; ··· 695 695 return ret; 696 696 } 697 697 698 - ret = devm_gpiochip_add_data(&client->dev, &chip->gpio_chip, chip); 698 + ret = max732x_irq_setup(chip, id); 699 699 if (ret) 700 700 return ret; 701 701 702 - ret = max732x_irq_setup(chip, id); 702 + ret = devm_gpiochip_add_data(&client->dev, &chip->gpio_chip, chip); 703 703 if (ret) 704 704 return ret; 705 705