Commit 0661cb2a authored by Marc Zyngier's avatar Marc Zyngier
Browse files

mips: 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().

Acked-by: default avatarThomas Bogendoerfer <tsbogend@alpha.franken.de>
Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
parent c9604ddd
Loading
Loading
Loading
Loading
+7 −7
Original line number Diff line number Diff line
@@ -69,24 +69,24 @@ static void ar2315_misc_irq_handler(struct irq_desc *desc)
{
	u32 pending = ar2315_rst_reg_read(AR2315_ISR) &
		      ar2315_rst_reg_read(AR2315_IMR);
	unsigned nr, misc_irq = 0;
	unsigned nr;
	int ret = 0;

	if (pending) {
		struct irq_domain *domain = irq_desc_get_handler_data(desc);

		nr = __ffs(pending);
		misc_irq = irq_find_mapping(domain, nr);
	}

	if (misc_irq) {
		if (nr == AR2315_MISC_IRQ_GPIO)
			ar2315_rst_reg_write(AR2315_ISR, AR2315_ISR_GPIO);
		else if (nr == AR2315_MISC_IRQ_WATCHDOG)
			ar2315_rst_reg_write(AR2315_ISR, AR2315_ISR_WD);
		generic_handle_irq(misc_irq);
	} else {
		spurious_interrupt();

		ret = generic_handle_domain_irq(domain, nr);
	}

	if (!pending || ret)
		spurious_interrupt();
}

static void ar2315_misc_irq_unmask(struct irq_data *d)
+6 −7
Original line number Diff line number Diff line
@@ -73,22 +73,21 @@ static void ar5312_misc_irq_handler(struct irq_desc *desc)
{
	u32 pending = ar5312_rst_reg_read(AR5312_ISR) &
		      ar5312_rst_reg_read(AR5312_IMR);
	unsigned nr, misc_irq = 0;
	unsigned nr;
	int ret = 0;

	if (pending) {
		struct irq_domain *domain = irq_desc_get_handler_data(desc);

		nr = __ffs(pending);
		misc_irq = irq_find_mapping(domain, nr);
	}

	if (misc_irq) {
		generic_handle_irq(misc_irq);
		ret = generic_handle_domain_irq(domain, nr);
		if (nr == AR5312_MISC_IRQ_TIMER)
			ar5312_rst_reg_read(AR5312_TIMER);
	} else {
		spurious_interrupt();
	}

	if (!pending || ret)
		spurious_interrupt();
}

/* Enable the specified AR5312_MISC_IRQ interrupt */
+1 −1
Original line number Diff line number Diff line
@@ -300,7 +300,7 @@ static void ltq_hw_irq_handler(struct irq_desc *desc)
	 */
	irq = __fls(irq);
	hwirq = irq + MIPS_CPU_IRQ_CASCADE + (INT_NUM_IM_OFFSET * module);
	generic_handle_irq(irq_linear_revmap(ltq_domain, hwirq));
	generic_handle_domain_irq(ltq_domain, hwirq);

	/* if this is a EBU irq, we need to ack it or get a deadlock */
	if (irq == LTQ_ICU_EBU_IRQ && !module && LTQ_EBU_PCC_ISTAT != 0)
+3 −5
Original line number Diff line number Diff line
@@ -337,14 +337,12 @@ static void ar2315_pci_irq_handler(struct irq_desc *desc)
	struct ar2315_pci_ctrl *apc = irq_desc_get_handler_data(desc);
	u32 pending = ar2315_pci_reg_read(apc, AR2315_PCI_ISR) &
		      ar2315_pci_reg_read(apc, AR2315_PCI_IMR);
	unsigned pci_irq = 0;
	int ret = 0;

	if (pending)
		pci_irq = irq_find_mapping(apc->domain, __ffs(pending));
		ret = generic_handle_domain_irq(apc->domain, __ffs(pending));

	if (pci_irq)
		generic_handle_irq(pci_irq);
	else
	if (!pending || ret)
		spurious_interrupt();
}

+2 −3
Original line number Diff line number Diff line
@@ -140,10 +140,9 @@ static void rt3883_pci_irq_handler(struct irq_desc *desc)
	}

	while (pending) {
		unsigned irq, bit = __ffs(pending);
		unsigned bit = __ffs(pending);

		irq = irq_find_mapping(rpc->irq_domain, bit);
		generic_handle_irq(irq);
		generic_handle_domain_irq(rpc->irq_domain, bit);

		pending &= ~BIT(bit);
	}
Loading