[2/4] gpio: Drop parent irq assignment during cascade setup
diff mbox series

Message ID 20181008163216.97436-3-swboyd@chromium.org
State New
Headers show
Series
  • gpio chip cascade fixes
Related show

Commit Message

Stephen Boyd Oct. 8, 2018, 4:32 p.m. UTC
We want to set the irq parent for interrupts that we're setting up to be
cascaded from another interrupt controller, but we may or may not have
already mapped the gpiochip irqs into the kernel's virtual irq number
space at this point. If we have mapped irqs before calling here, then
we've gone through gpiochip_irq_map() and called irq_set_parent()
already. If we haven't mapped irqs, then the gpiochip is dynamically
mapping irqs and we can rely on gpiochip_irq_map() or the gpio driver's
irqdomain ops to setup the irq parent properly.

Either way, setting the parent here when cascading the gpiochip doesn't
make much sense because it should be done at irq mapping time. In the
dynamic mapping case, this code is mapping virq 0 to some parent virq in
a loop. While that's benign, let's drop this code to simplify.

Cc: Evan Green <evgreen@chromium.org>
Cc: Thierry Reding <treding@nvidia.com>
Cc: Grygorii Strashko <grygorii.strashko@ti.com>
Signed-off-by: Stephen Boyd <swboyd@chromium.org>
---
 drivers/gpio/gpiolib.c | 10 ----------
 1 file changed, 10 deletions(-)

Comments

Linus Walleij Oct. 16, 2018, 7:28 a.m. UTC | #1
On Mon, Oct 8, 2018 at 6:32 PM Stephen Boyd <swboyd@chromium.org> wrote:

> We want to set the irq parent for interrupts that we're setting up to be
> cascaded from another interrupt controller, but we may or may not have
> already mapped the gpiochip irqs into the kernel's virtual irq number
> space at this point. If we have mapped irqs before calling here, then
> we've gone through gpiochip_irq_map() and called irq_set_parent()
> already. If we haven't mapped irqs, then the gpiochip is dynamically
> mapping irqs and we can rely on gpiochip_irq_map() or the gpio driver's
> irqdomain ops to setup the irq parent properly.
>
> Either way, setting the parent here when cascading the gpiochip doesn't
> make much sense because it should be done at irq mapping time. In the
> dynamic mapping case, this code is mapping virq 0 to some parent virq in
> a loop. While that's benign, let's drop this code to simplify.
>
> Cc: Evan Green <evgreen@chromium.org>
> Cc: Thierry Reding <treding@nvidia.com>
> Cc: Grygorii Strashko <grygorii.strashko@ti.com>
> Signed-off-by: Stephen Boyd <swboyd@chromium.org>

Yep this is some leftover from the past.

Patch applied!

Yours,
Linus Walleij

Patch
diff mbox series

diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
index d9d823e3761b..8fccfcf559ee 100644
--- a/drivers/gpio/gpiolib.c
+++ b/drivers/gpio/gpiolib.c
@@ -1663,8 +1663,6 @@  static void gpiochip_set_cascaded_irqchip(struct gpio_chip *gpiochip,
 					  unsigned int parent_irq,
 					  irq_flow_handler_t parent_handler)
 {
-	unsigned int offset;
-
 	if (!gpiochip->irq.domain) {
 		chip_err(gpiochip, "called %s before setting up irqchip\n",
 			 __func__);
@@ -1688,14 +1686,6 @@  static void gpiochip_set_cascaded_irqchip(struct gpio_chip *gpiochip,
 		gpiochip->irq.parents = &gpiochip->irq.parent_irq;
 		gpiochip->irq.num_parents = 1;
 	}
-
-	/* Set the parent IRQ for all affected IRQs */
-	for (offset = 0; offset < gpiochip->ngpio; offset++) {
-		if (!gpiochip_irqchip_irq_valid(gpiochip, offset))
-			continue;
-		irq_set_parent(irq_find_mapping(gpiochip->irq.domain, offset),
-			       parent_irq);
-	}
 }
 
 /**