gpio/rockchip: Convert to generic_handle_domain_irq()
authorJeffy Chen <jeffy.chen@rock-chips.com>
Wed, 24 Aug 2022 01:06:05 +0000 (09:06 +0800)
committerBartosz Golaszewski <brgl@bgdev.pl>
Wed, 31 Aug 2022 12:37:34 +0000 (14:37 +0200)
Follow commit dbd1c54fc820 ("gpio: Bulk conversion to
generic_handle_domain_irq()").

Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl>
drivers/gpio/gpio-rockchip.c

index f91e876fd9690cef5aa83775a2504402e6cfb42f..ebb50c25a461c54b0422cbdecca9f779c4d107e5 100644 (file)
@@ -325,26 +325,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);
 
                /*
@@ -378,7 +367,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);