]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
pinctrl: Bulk conversion to generic_handle_domain_irq()
authorMarc Zyngier <maz@kernel.org>
Tue, 4 May 2021 16:42:18 +0000 (17:42 +0100)
committerMarc Zyngier <maz@kernel.org>
Thu, 12 Aug 2021 10:39:39 +0000 (11:39 +0100)
Wherever possible, replace constructs that match either
generic_handle_irq(irq_find_mapping()) or
generic_handle_irq(irq_linear_revmap()) to a single call to
generic_handle_domain_irq().

Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Marc Zyngier <maz@kernel.org>
28 files changed:
drivers/pinctrl/actions/pinctrl-owl.c
drivers/pinctrl/bcm/pinctrl-bcm2835.c
drivers/pinctrl/bcm/pinctrl-iproc-gpio.c
drivers/pinctrl/bcm/pinctrl-nsp-gpio.c
drivers/pinctrl/intel/pinctrl-baytrail.c
drivers/pinctrl/intel/pinctrl-cherryview.c
drivers/pinctrl/intel/pinctrl-lynxpoint.c
drivers/pinctrl/mediatek/mtk-eint.c
drivers/pinctrl/nomadik/pinctrl-nomadik.c
drivers/pinctrl/nuvoton/pinctrl-npcm7xx.c
drivers/pinctrl/pinctrl-amd.c
drivers/pinctrl/pinctrl-at91.c
drivers/pinctrl/pinctrl-equilibrium.c
drivers/pinctrl/pinctrl-ingenic.c
drivers/pinctrl/pinctrl-microchip-sgpio.c
drivers/pinctrl/pinctrl-ocelot.c
drivers/pinctrl/pinctrl-oxnas.c
drivers/pinctrl/pinctrl-pic32.c
drivers/pinctrl/pinctrl-pistachio.c
drivers/pinctrl/pinctrl-rockchip.c
drivers/pinctrl/pinctrl-single.c
drivers/pinctrl/pinctrl-st.c
drivers/pinctrl/qcom/pinctrl-msm.c
drivers/pinctrl/samsung/pinctrl-exynos.c
drivers/pinctrl/samsung/pinctrl-s3c24xx.c
drivers/pinctrl/samsung/pinctrl-s3c64xx.c
drivers/pinctrl/spear/pinctrl-plgpio.c
drivers/pinctrl/sunxi/pinctrl-sunxi.c

index c8b3e396ea27570f97f6bb8b79f0d193610007cb..781f2200ed5891a2cf1c8115cf7d2d11a5d809eb 100644 (file)
@@ -833,7 +833,7 @@ static void owl_gpio_irq_handler(struct irq_desc *desc)
        unsigned int parent = irq_desc_get_irq(desc);
        const struct owl_gpio_port *port;
        void __iomem *base;
-       unsigned int pin, irq, offset = 0, i;
+       unsigned int pin, offset = 0, i;
        unsigned long pending_irq;
 
        chained_irq_enter(chip, desc);
@@ -849,8 +849,7 @@ static void owl_gpio_irq_handler(struct irq_desc *desc)
                pending_irq = readl_relaxed(base + port->intc_pd);
 
                for_each_set_bit(pin, &pending_irq, port->pins) {
-                       irq = irq_find_mapping(domain, offset + pin);
-                       generic_handle_irq(irq);
+                       generic_handle_domain_irq(domain, offset + pin);
 
                        /* clear pending interrupt */
                        owl_gpio_update_reg(base + port->intc_pd, pin, true);
index 2c87af1180c48a2b6d20acae52efbe260189d70e..8b34d2c308c74eb672997638494df27af5d3f040 100644 (file)
@@ -395,8 +395,8 @@ static void bcm2835_gpio_irq_handle_bank(struct bcm2835_pinctrl *pc,
        events &= pc->enabled_irq_map[bank];
        for_each_set_bit(offset, &events, 32) {
                gpio = (32 * bank) + offset;
-               generic_handle_irq(irq_linear_revmap(pc->gpio_chip.irq.domain,
-                                                    gpio));
+               generic_handle_domain_irq(pc->gpio_chip.irq.domain,
+                                         gpio);
        }
 }
 
index dc511b9a6b43f1bb7cb895b8b9a4ad5f7fb0425c..a7a0dd638a26b31792b75e6c070b72d245215b94 100644 (file)
@@ -176,7 +176,6 @@ static void iproc_gpio_irq_handler(struct irq_desc *desc)
 
                for_each_set_bit(bit, &val, NGPIOS_PER_BANK) {
                        unsigned pin = NGPIOS_PER_BANK * i + bit;
-                       int child_irq = irq_find_mapping(gc->irq.domain, pin);
 
                        /*
                         * Clear the interrupt before invoking the
@@ -185,7 +184,7 @@ static void iproc_gpio_irq_handler(struct irq_desc *desc)
                        writel(BIT(bit), chip->base + (i * GPIO_BANK_SIZE) +
                               IPROC_GPIO_INT_CLR_OFFSET);
 
-                       generic_handle_irq(child_irq);
+                       generic_handle_domain_irq(gc->irq.domain, pin);
                }
        }
 
index a00a42a61a90a1c1845bdfcf256fde58dc7b7678..e03142895f61ae7d07421aafbb11fc5d4446d1da 100644 (file)
@@ -155,8 +155,7 @@ static irqreturn_t nsp_gpio_irq_handler(int irq, void *data)
                int_bits = level | event;
 
                for_each_set_bit(bit, &int_bits, gc->ngpio)
-                       generic_handle_irq(
-                               irq_linear_revmap(gc->irq.domain, bit));
+                       generic_handle_domain_irq(gc->irq.domain, bit);
        }
 
        return  int_bits ? IRQ_HANDLED : IRQ_NONE;
index 394a421a19d588893d84223207df734ae53aca7a..8f23d126c6a73154d8440ce00cd91fd47586a1c0 100644 (file)
@@ -1444,7 +1444,6 @@ static void byt_gpio_irq_handler(struct irq_desc *desc)
        u32 base, pin;
        void __iomem *reg;
        unsigned long pending;
-       unsigned int virq;
 
        /* check from GPIO controller which pin triggered the interrupt */
        for (base = 0; base < vg->chip.ngpio; base += 32) {
@@ -1460,10 +1459,8 @@ static void byt_gpio_irq_handler(struct irq_desc *desc)
                raw_spin_lock(&byt_lock);
                pending = readl(reg);
                raw_spin_unlock(&byt_lock);
-               for_each_set_bit(pin, &pending, 32) {
-                       virq = irq_find_mapping(vg->chip.irq.domain, base + pin);
-                       generic_handle_irq(virq);
-               }
+               for_each_set_bit(pin, &pending, 32)
+                       generic_handle_domain_irq(vg->chip.irq.domain, base + pin);
        }
        chip->irq_eoi(data);
 }
index 2ed17cdf946d1277c1ad58b17c2663edb1c73679..980099028cf8a14fd37b19cb87b2c36f1caaea3d 100644 (file)
@@ -1409,11 +1409,10 @@ static void chv_gpio_irq_handler(struct irq_desc *desc)
        raw_spin_unlock_irqrestore(&chv_lock, flags);
 
        for_each_set_bit(intr_line, &pending, community->nirqs) {
-               unsigned int irq, offset;
+               unsigned int offset;
 
                offset = cctx->intr_lines[intr_line];
-               irq = irq_find_mapping(gc->irq.domain, offset);
-               generic_handle_irq(irq);
+               generic_handle_domain_irq(gc->irq.domain, offset);
        }
 
        chained_irq_exit(chip, desc);
index 0a48ca46ab59757bfcb795dfdc7571e12c66a785..561fa322b0b477e66ffaa1a25333f46f8e68384f 100644 (file)
@@ -653,12 +653,8 @@ static void lp_gpio_irq_handler(struct irq_desc *desc)
                /* Only interrupts that are enabled */
                pending = ioread32(reg) & ioread32(ena);
 
-               for_each_set_bit(pin, &pending, 32) {
-                       unsigned int irq;
-
-                       irq = irq_find_mapping(lg->chip.irq.domain, base + pin);
-                       generic_handle_irq(irq);
-               }
+               for_each_set_bit(pin, &pending, 32)
+                       generic_handle_domain_irq(lg->chip.irq.domain, base + pin);
        }
        chip->irq_eoi(data);
 }
index 3b9b5dbd7968c12bafe80243e98f8e3947e80158..f7b54a55176418ed51204bb02feda27550de7aa7 100644 (file)
@@ -319,7 +319,7 @@ static void mtk_eint_irq_handler(struct irq_desc *desc)
        struct irq_chip *chip = irq_desc_get_chip(desc);
        struct mtk_eint *eint = irq_desc_get_handler_data(desc);
        unsigned int status, eint_num;
-       int offset, mask_offset, index, virq;
+       int offset, mask_offset, index;
        void __iomem *reg =  mtk_eint_get_offset(eint, 0, eint->regs->stat);
        int dual_edge, start_level, curr_level;
 
@@ -331,7 +331,6 @@ static void mtk_eint_irq_handler(struct irq_desc *desc)
                        offset = __ffs(status);
                        mask_offset = eint_num >> 5;
                        index = eint_num + offset;
-                       virq = irq_find_mapping(eint->domain, index);
                        status &= ~BIT(offset);
 
                        /*
@@ -361,7 +360,7 @@ static void mtk_eint_irq_handler(struct irq_desc *desc)
                                                                 index);
                        }
 
-                       generic_handle_irq(virq);
+                       generic_handle_domain_irq(eint->domain, index);
 
                        if (dual_edge) {
                                curr_level = mtk_eint_flip_edge(eint, index);
index abfe11c7b49fb039ba050a070d35097705f527f3..39828e9c3120ab0c85bd32f0b80b85127fdba6b1 100644 (file)
@@ -815,7 +815,7 @@ static void nmk_gpio_irq_handler(struct irq_desc *desc)
        while (status) {
                int bit = __ffs(status);
 
-               generic_handle_irq(irq_find_mapping(chip->irq.domain, bit));
+               generic_handle_domain_irq(chip->irq.domain, bit);
                status &= ~BIT(bit);
        }
 
index bb1ea47ec4c600eecfd26ba0d5a75902a3dfca39..4d81908d6725d576069ce04316b82ed95b619aae 100644 (file)
@@ -231,7 +231,7 @@ static void npcmgpio_irq_handler(struct irq_desc *desc)
 
        sts &= en;
        for_each_set_bit(bit, (const void *)&sts, NPCM7XX_GPIO_PER_BANK)
-               generic_handle_irq(irq_linear_revmap(gc->irq.domain, bit));
+               generic_handle_domain_irq(gc->irq.domain, bit);
        chained_irq_exit(chip, desc);
 }
 
index a76be6cc26ee13fcea0ddebea5e2629d5b7aad74..11625ed1c6c55464322e5ee4433d03c3452994d4 100644 (file)
@@ -621,14 +621,12 @@ static irqreturn_t amd_gpio_irq_handler(int irq, void *dev_id)
                        if (!(regval & PIN_IRQ_PENDING) ||
                            !(regval & BIT(INTERRUPT_MASK_OFF)))
                                continue;
-                       irq = irq_find_mapping(gc->irq.domain, irqnr + i);
-                       if (irq != 0)
-                               generic_handle_irq(irq);
+                       generic_handle_domain_irq(gc->irq.domain, irqnr + i);
 
                        /* Clear interrupt.
                         * We must read the pin register again, in case the
                         * value was changed while executing
-                        * generic_handle_irq() above.
+                        * generic_handle_domain_irq() above.
                         * If we didn't find a mapping for the interrupt,
                         * disable it in order to avoid a system hang caused
                         * by an interrupt storm.
index 72e6df7abe8c0ab4bc8783f3c25be71080043208..6022496bb6a98854be2d194fd6454f36543d2f25 100644 (file)
@@ -1712,10 +1712,8 @@ static void gpio_irq_handler(struct irq_desc *desc)
                        continue;
                }
 
-               for_each_set_bit(n, &isr, BITS_PER_LONG) {
-                       generic_handle_irq(irq_find_mapping(
-                                          gpio_chip->irq.domain, n));
-               }
+               for_each_set_bit(n, &isr, BITS_PER_LONG)
+                       generic_handle_domain_irq(gpio_chip->irq.domain, n);
        }
        chained_irq_exit(chip, desc);
        /* now it may re-trigger */
index 38cc20fa9d5af5020fa3844afe560e81cea1c6d2..fb713f9c53d0e4f35b227d7e082b649c49529ec6 100644 (file)
@@ -155,7 +155,7 @@ static void eqbr_irq_handler(struct irq_desc *desc)
        pins = readl(gctrl->membase + GPIO_IRNCR);
 
        for_each_set_bit(offset, &pins, gc->ngpio)
-               generic_handle_irq(irq_find_mapping(gc->irq.domain, offset));
+               generic_handle_domain_irq(gc->irq.domain, offset);
 
        chained_irq_exit(ic, desc);
 }
index 983ba9865f772482f781aa6063716060b314c19b..ce9cc719c3954b2b9a17296b25fa842c2c8d9cc3 100644 (file)
@@ -3080,7 +3080,7 @@ static void ingenic_gpio_irq_handler(struct irq_desc *desc)
                flag = ingenic_gpio_read_reg(jzgc, JZ4730_GPIO_GPFR);
 
        for_each_set_bit(i, &flag, 32)
-               generic_handle_irq(irq_linear_revmap(gc->irq.domain, i));
+               generic_handle_domain_irq(gc->irq.domain, i);
        chained_irq_exit(irq_chip, desc);
 }
 
index 165cb7a597155fb7fad7cb11bf522875926981ee..072bccdea2a5db1a62ff73987da35441b8985d44 100644 (file)
@@ -673,7 +673,7 @@ static void sgpio_irq_handler(struct irq_desc *desc)
 
                for_each_set_bit(port, &val, SGPIO_BITS_PER_WORD) {
                        gpio = sgpio_addr_to_pin(priv, port, bit);
-                       generic_handle_irq(irq_linear_revmap(chip->irq.domain, gpio));
+                       generic_handle_domain_irq(chip->irq.domain, gpio);
                }
 
                chained_irq_exit(parent_chip, desc);
index e470c16718dea20a4b64fe48a07c22e193f66447..0a36ec8775a38711662e1ef120dc4cb4b51e91c2 100644 (file)
@@ -1290,8 +1290,7 @@ static void ocelot_irq_handler(struct irq_desc *desc)
 
                for_each_set_bit(irq, &irqs,
                                 min(32U, info->desc->npins - 32 * i))
-                       generic_handle_irq(irq_linear_revmap(chip->irq.domain,
-                                                            irq + 32 * i));
+                       generic_handle_domain_irq(chip->irq.domain, irq + 32 * i);
 
                chained_irq_exit(parent_chip, desc);
        }
index 5a312279b3c78e6bc354bff35af52d0c4bcd8963..cebd810bd6d1f09a33299fe7b20dd2407bda7c65 100644 (file)
@@ -1055,7 +1055,7 @@ static void oxnas_gpio_irq_handler(struct irq_desc *desc)
        stat = readl(bank->reg_base + IRQ_PENDING);
 
        for_each_set_bit(pin, &stat, BITS_PER_LONG)
-               generic_handle_irq(irq_linear_revmap(gc->irq.domain, pin));
+               generic_handle_domain_irq(gc->irq.domain, pin);
 
        chained_irq_exit(chip, desc);
 }
index a6e2a4a4ca9529510f158b131af77d2a87e38fba..748dabd8db6e820ca92fcc126c46c8a790bd5928 100644 (file)
@@ -2101,7 +2101,7 @@ static void pic32_gpio_irq_handler(struct irq_desc *desc)
        pending = pic32_gpio_get_pending(gc, stat);
 
        for_each_set_bit(pin, &pending, BITS_PER_LONG)
-               generic_handle_irq(irq_linear_revmap(gc->irq.domain, pin));
+               generic_handle_domain_irq(gc->irq.domain, pin);
 
        chained_irq_exit(chip, desc);
 }
index ec761ba2a2da82132983f1a62ad360aaac477f79..8d271c6b0ca4103bc325440f6a86b95ae9bb654b 100644 (file)
@@ -1306,7 +1306,7 @@ static void pistachio_gpio_irq_handler(struct irq_desc *desc)
        pending = gpio_readl(bank, GPIO_INTERRUPT_STATUS) &
                gpio_readl(bank, GPIO_INTERRUPT_EN);
        for_each_set_bit(pin, &pending, 16)
-               generic_handle_irq(irq_linear_revmap(gc->irq.domain, pin));
+               generic_handle_domain_irq(gc->irq.domain, pin);
        chained_irq_exit(chip, desc);
 }
 
index 067fc4208de4f73e907aa7ea8c5efcd50d32d3c2..d67aa53d0dce1282818a913fd09ccdeb51864d39 100644 (file)
@@ -2951,18 +2951,11 @@ static void rockchip_irq_demux(struct irq_desc *desc)
        pend = readl_relaxed(bank->reg_base + GPIO_INT_STATUS);
 
        while (pend) {
-               unsigned int irq, virq;
+               unsigned int irq;
+               int ret;
 
                irq = __ffs(pend);
                pend &= ~BIT(irq);
-               virq = irq_find_mapping(bank->domain, irq);
-
-               if (!virq) {
-                       dev_err(bank->drvdata->dev, "unmapped irq %d\n", irq);
-                       continue;
-               }
-
-               dev_dbg(bank->drvdata->dev, "handling irq %d\n", irq);
 
                /*
                 * Triggering IRQ on both rising and falling edge
@@ -2993,7 +2986,9 @@ static void rockchip_irq_demux(struct irq_desc *desc)
                        } while ((data & BIT(irq)) != (data_old & BIT(irq)));
                }
 
-               generic_handle_irq(virq);
+               ret = generic_handle_domain_irq(bank->domain, irq);
+               if (unlikely(ret))
+                       dev_err_ratelimited(bank->drvdata->dev, "unmapped irq %d\n", irq);
        }
 
        chained_irq_exit(chip, desc);
index e3aa64798f7d3905f4c594ff125b415f0679c04d..aa6e72214609a2dd499cbedebac5b24b0cc60406 100644 (file)
@@ -1491,8 +1491,8 @@ static int pcs_irq_handle(struct pcs_soc_data *pcs_soc)
                mask = pcs->read(pcswi->reg);
                raw_spin_unlock(&pcs->lock);
                if (mask & pcs_soc->irq_status_mask) {
-                       generic_handle_irq(irq_find_mapping(pcs->domain,
-                                                           pcswi->hwirq));
+                       generic_handle_domain_irq(pcs->domain,
+                                                 pcswi->hwirq);
                        count++;
                }
        }
index 43d9e6c7fd81f6177b7d0df0db5deac41896b568..fa3edb4b898a38c1aafee505f9c27a809554f301 100644 (file)
@@ -1420,7 +1420,7 @@ static void __gpio_irq_handler(struct st_gpio_bank *bank)
                                        continue;
                        }
 
-                       generic_handle_irq(irq_find_mapping(bank->gpio_chip.irq.domain, n));
+                       generic_handle_domain_irq(bank->gpio_chip.irq.domain, n);
                }
        }
 }
index d70caecd21d25af56c54cd71be10221a36d98fd7..8476a8ac44518d3d6b033ecc32ae6c856ebf8a00 100644 (file)
@@ -1177,7 +1177,6 @@ static void msm_gpio_irq_handler(struct irq_desc *desc)
        const struct msm_pingroup *g;
        struct msm_pinctrl *pctrl = gpiochip_get_data(gc);
        struct irq_chip *chip = irq_desc_get_chip(desc);
-       int irq_pin;
        int handled = 0;
        u32 val;
        int i;
@@ -1192,8 +1191,7 @@ static void msm_gpio_irq_handler(struct irq_desc *desc)
                g = &pctrl->soc->groups[i];
                val = msm_readl_intr_status(pctrl, g);
                if (val & BIT(g->intr_status_bit)) {
-                       irq_pin = irq_find_mapping(gc->irq.domain, i);
-                       generic_handle_irq(irq_pin);
+                       generic_handle_domain_irq(gc->irq.domain, i);
                        handled++;
                }
        }
index 2b99f4130e1e53968a52401a93f0fdfaeb172867..0489c899b401cf0b8ecd2b8023692d42142565df 100644 (file)
@@ -246,7 +246,8 @@ static irqreturn_t exynos_eint_gpio_irq(int irq, void *data)
 {
        struct samsung_pinctrl_drv_data *d = data;
        struct samsung_pin_bank *bank = d->pin_banks;
-       unsigned int svc, group, pin, virq;
+       unsigned int svc, group, pin;
+       int ret;
 
        svc = readl(bank->eint_base + EXYNOS_SVC_OFFSET);
        group = EXYNOS_SVC_GROUP(svc);
@@ -256,10 +257,10 @@ static irqreturn_t exynos_eint_gpio_irq(int irq, void *data)
                return IRQ_HANDLED;
        bank += (group - 1);
 
-       virq = irq_linear_revmap(bank->irq_domain, pin);
-       if (!virq)
+       ret = generic_handle_domain_irq(bank->irq_domain, pin);
+       if (ret)
                return IRQ_NONE;
-       generic_handle_irq(virq);
+
        return IRQ_HANDLED;
 }
 
@@ -473,12 +474,10 @@ static void exynos_irq_eint0_15(struct irq_desc *desc)
        struct exynos_weint_data *eintd = irq_desc_get_handler_data(desc);
        struct samsung_pin_bank *bank = eintd->bank;
        struct irq_chip *chip = irq_desc_get_chip(desc);
-       int eint_irq;
 
        chained_irq_enter(chip, desc);
 
-       eint_irq = irq_linear_revmap(bank->irq_domain, eintd->irq);
-       generic_handle_irq(eint_irq);
+       generic_handle_domain_irq(bank->irq_domain, eintd->irq);
 
        chained_irq_exit(chip, desc);
 }
@@ -490,7 +489,7 @@ static inline void exynos_irq_demux_eint(unsigned int pend,
 
        while (pend) {
                irq = fls(pend) - 1;
-               generic_handle_irq(irq_find_mapping(domain, irq));
+               generic_handle_domain_irq(domain, irq);
                pend &= ~(1 << irq);
        }
 }
index 00d77d6946b53d55b9900a1739db59203ed87111..ac1eba30cf40f7b2660d1deb68e971fe2679ea3a 100644 (file)
@@ -234,14 +234,12 @@ static void s3c2410_demux_eint0_3(struct irq_desc *desc)
 {
        struct irq_data *data = irq_desc_get_irq_data(desc);
        struct s3c24xx_eint_data *eint_data = irq_desc_get_handler_data(desc);
-       unsigned int virq;
+       int ret;
 
        /* the first 4 eints have a simple 1 to 1 mapping */
-       virq = irq_linear_revmap(eint_data->domains[data->hwirq], data->hwirq);
+       ret = generic_handle_domain_irq(eint_data->domains[data->hwirq], data->hwirq);
        /* Something must be really wrong if an unmapped EINT is unmasked */
-       BUG_ON(!virq);
-
-       generic_handle_irq(virq);
+       BUG_ON(ret);
 }
 
 /* Handling of EINTs 0-3 on S3C2412 and S3C2413 */
@@ -290,16 +288,14 @@ static void s3c2412_demux_eint0_3(struct irq_desc *desc)
        struct s3c24xx_eint_data *eint_data = irq_desc_get_handler_data(desc);
        struct irq_data *data = irq_desc_get_irq_data(desc);
        struct irq_chip *chip = irq_data_get_irq_chip(data);
-       unsigned int virq;
+       int ret;
 
        chained_irq_enter(chip, desc);
 
        /* the first 4 eints have a simple 1 to 1 mapping */
-       virq = irq_linear_revmap(eint_data->domains[data->hwirq], data->hwirq);
+       ret = generic_handle_domain_irq(eint_data->domains[data->hwirq], data->hwirq);
        /* Something must be really wrong if an unmapped EINT is unmasked */
-       BUG_ON(!virq);
-
-       generic_handle_irq(virq);
+       BUG_ON(ret);
 
        chained_irq_exit(chip, desc);
 }
@@ -364,15 +360,14 @@ static inline void s3c24xx_demux_eint(struct irq_desc *desc,
        pend &= range;
 
        while (pend) {
-               unsigned int virq, irq;
+               unsigned int irq;
+               int ret;
 
                irq = __ffs(pend);
                pend &= ~(1 << irq);
-               virq = irq_linear_revmap(data->domains[irq], irq - offset);
+               ret = generic_handle_domain_irq(data->domains[irq], irq - offset);
                /* Something is really wrong if an unmapped EINT is unmasked */
-               BUG_ON(!virq);
-
-               generic_handle_irq(virq);
+               BUG_ON(ret);
        }
 
        chained_irq_exit(chip, desc);
index 53e2a6412add449dee34d00957370dbb49280bb7..c5f95a1071ae00355c42716757e53c99a45f76ca 100644 (file)
@@ -414,7 +414,7 @@ static void s3c64xx_eint_gpio_irq(struct irq_desc *desc)
                unsigned int svc;
                unsigned int group;
                unsigned int pin;
-               unsigned int virq;
+               int ret;
 
                svc = readl(drvdata->virt_base + SERVICE_REG);
                group = SVC_GROUP(svc);
@@ -431,14 +431,12 @@ static void s3c64xx_eint_gpio_irq(struct irq_desc *desc)
                                pin -= 8;
                }
 
-               virq = irq_linear_revmap(data->domains[group], pin);
+               ret = generic_handle_domain_irq(data->domains[group], pin);
                /*
                 * Something must be really wrong if an unmapped EINT
                 * was unmasked...
                 */
-               BUG_ON(!virq);
-
-               generic_handle_irq(virq);
+               BUG_ON(ret);
        } while (1);
 
        chained_irq_exit(chip, desc);
@@ -607,18 +605,17 @@ static inline void s3c64xx_irq_demux_eint(struct irq_desc *desc, u32 range)
        pend &= range;
 
        while (pend) {
-               unsigned int virq, irq;
+               unsigned int irq;
+               int ret;
 
                irq = fls(pend) - 1;
                pend &= ~(1 << irq);
-               virq = irq_linear_revmap(data->domains[irq], data->pins[irq]);
+               ret = generic_handle_domain_irq(data->domains[irq], data->pins[irq]);
                /*
                 * Something must be really wrong if an unmapped EINT
                 * was unmasked...
                 */
-               BUG_ON(!virq);
-
-               generic_handle_irq(virq);
+               BUG_ON(ret);
        }
 
        chained_irq_exit(chip, desc);
index 1ebbc49b16f1daea1de65a09ca85bc2f695fa3ee..43bb334af1e1729cfa273ac0fc7a50dce61e3a35 100644 (file)
@@ -400,8 +400,7 @@ static void plgpio_irq_handler(struct irq_desc *desc)
 
                        /* get correct irq line number */
                        pin = i * MAX_GPIO_PER_REG + pin;
-                       generic_handle_irq(
-                               irq_find_mapping(gc->irq.domain, pin));
+                       generic_handle_domain_irq(gc->irq.domain, pin);
                }
        }
        chained_irq_exit(irqchip, desc);
index dc8d39ae045b22b5b7b50c5ec379b7f418d231e3..baa4058e024ef9f7433c25e8e21f41b679fab292 100644 (file)
@@ -1149,11 +1149,9 @@ static void sunxi_pinctrl_irq_handler(struct irq_desc *desc)
        if (val) {
                int irqoffset;
 
-               for_each_set_bit(irqoffset, &val, IRQ_PER_BANK) {
-                       int pin_irq = irq_find_mapping(pctl->domain,
-                                                      bank * IRQ_PER_BANK + irqoffset);
-                       generic_handle_irq(pin_irq);
-               }
+               for_each_set_bit(irqoffset, &val, IRQ_PER_BANK)
+                       generic_handle_domain_irq(pctl->domain,
+                                                 bank * IRQ_PER_BANK + irqoffset);
        }
 
        chained_irq_exit(chip, desc);