summaryrefslogtreecommitdiffstats
path: root/drivers/irqchip/irq-xilinx-intc.c
diff options
context:
space:
mode:
authorMarc Zyngier <maz@kernel.org>2021-05-04 18:42:18 +0200
committerMarc Zyngier <maz@kernel.org>2021-06-10 14:09:19 +0200
commit046a6ee2343bb26d85a9973a39ccdb9764236fa4 (patch)
tree3b0c0f7ffe6a7f8376395c5d84cf340a052bfa07 /drivers/irqchip/irq-xilinx-intc.c
parentgenirq: Move non-irqdomain handle_domain_irq() handling into ARM's handle_IRQ() (diff)
downloadlinux-046a6ee2343bb26d85a9973a39ccdb9764236fa4.tar.xz
linux-046a6ee2343bb26d85a9973a39ccdb9764236fa4.zip
irqchip: Bulk conversion to generic_handle_domain_irq()
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(). Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be> Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com> Signed-off-by: Marc Zyngier <maz@kernel.org>
Diffstat (limited to 'drivers/irqchip/irq-xilinx-intc.c')
-rw-r--r--drivers/irqchip/irq-xilinx-intc.c23
1 files changed, 5 insertions, 18 deletions
diff --git a/drivers/irqchip/irq-xilinx-intc.c b/drivers/irqchip/irq-xilinx-intc.c
index 8cd1bfc73057..356a59755d63 100644
--- a/drivers/irqchip/irq-xilinx-intc.c
+++ b/drivers/irqchip/irq-xilinx-intc.c
@@ -110,20 +110,6 @@ static struct irq_chip intc_dev = {
.irq_mask_ack = intc_mask_ack,
};
-static unsigned int xintc_get_irq_local(struct xintc_irq_chip *irqc)
-{
- unsigned int irq = 0;
- u32 hwirq;
-
- hwirq = xintc_read(irqc, IVR);
- if (hwirq != -1U)
- irq = irq_find_mapping(irqc->root_domain, hwirq);
-
- pr_debug("irq-xilinx: hwirq=%d, irq=%d\n", hwirq, irq);
-
- return irq;
-}
-
unsigned int xintc_get_irq(void)
{
unsigned int irq = -1;
@@ -164,15 +150,16 @@ static void xil_intc_irq_handler(struct irq_desc *desc)
{
struct irq_chip *chip = irq_desc_get_chip(desc);
struct xintc_irq_chip *irqc;
- u32 pending;
irqc = irq_data_get_irq_handler_data(&desc->irq_data);
chained_irq_enter(chip, desc);
do {
- pending = xintc_get_irq_local(irqc);
- if (pending == 0)
+ u32 hwirq = xintc_read(irqc, IVR);
+
+ if (hwirq == -1U)
break;
- generic_handle_irq(pending);
+
+ generic_handle_domain_irq(irqc->root_domain, hwirq);
} while (true);
chained_irq_exit(chip, desc);
}