Message ID | 20220824010605.14256-1-jeffy.chen@rock-chips.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v2] gpio/rockchip: Convert to generic_handle_domain_irq() | expand |
On Wed, Aug 24, 2022 at 3:13 AM Jeffy Chen <jeffy.chen@rock-chips.com> wrote: > Follow commit dbd1c54fc820 ("gpio: Bulk conversion to > generic_handle_domain_irq()"). > > Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com> > --- > > Changes in v2: > Use for_each_set_bit(). Pretty straight-forward! Reviewed-by: Linus Walleij <linus.walleij@linaro.org> I think we have a few drivers that could be simplified the same way... Yours, Linus Walleij
On Wed, Aug 24, 2022 at 3:13 AM Jeffy Chen <jeffy.chen@rock-chips.com> wrote: > > Follow commit dbd1c54fc820 ("gpio: Bulk conversion to > generic_handle_domain_irq()"). > > Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com> > --- Applied, thanks! Bart
diff --git a/drivers/gpio/gpio-rockchip.c b/drivers/gpio/gpio-rockchip.c index e342a6dc4c6c..03b05a56a66f 100644 --- a/drivers/gpio/gpio-rockchip.c +++ b/drivers/gpio/gpio-rockchip.c @@ -324,26 +324,15 @@ static void rockchip_irq_demux(struct irq_desc *desc) { struct irq_chip *chip = irq_desc_get_chip(desc); struct rockchip_pin_bank *bank = irq_desc_get_handler_data(desc); - u32 pend; + unsigned long pending; + unsigned int irq; dev_dbg(bank->dev, "got irq for bank %s\n", bank->name); chained_irq_enter(chip, desc); - pend = readl_relaxed(bank->reg_base + bank->gpio_regs->int_status); - - while (pend) { - unsigned int irq, virq; - - irq = __ffs(pend); - pend &= ~BIT(irq); - virq = irq_find_mapping(bank->domain, irq); - - if (!virq) { - dev_err(bank->dev, "unmapped irq %d\n", irq); - continue; - } - + pending = readl_relaxed(bank->reg_base + bank->gpio_regs->int_status); + for_each_set_bit(irq, &pending, 32) { dev_dbg(bank->dev, "handling irq %d\n", irq); /* @@ -377,7 +366,7 @@ static void rockchip_irq_demux(struct irq_desc *desc) } while ((data & BIT(irq)) != (data_old & BIT(irq))); } - generic_handle_irq(virq); + generic_handle_domain_irq(bank->domain, irq); } chained_irq_exit(chip, desc);
Follow commit dbd1c54fc820 ("gpio: Bulk conversion to generic_handle_domain_irq()"). Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com> --- Changes in v2: Use for_each_set_bit(). drivers/gpio/gpio-rockchip.c | 21 +++++---------------- 1 file changed, 5 insertions(+), 16 deletions(-)