mirror of
https://github.com/torvalds/linux
synced 2024-09-06 09:51:23 +00:00
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: Thomas Bogendoerfer <tsbogend@alpha.franken.de> Signed-off-by: Marc Zyngier <maz@kernel.org>
This commit is contained in:
parent
c9604ddd8a
commit
0661cb2af0
|
@ -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)
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -100,7 +100,7 @@ static void ralink_intc_irq_handler(struct irq_desc *desc)
|
|||
|
||||
if (pending) {
|
||||
struct irq_domain *domain = irq_desc_get_handler_data(desc);
|
||||
generic_handle_irq(irq_find_mapping(domain, __ffs(pending)));
|
||||
generic_handle_domain_irq(domain, __ffs(pending));
|
||||
} else {
|
||||
spurious_interrupt();
|
||||
}
|
||||
|
|
|
@ -190,7 +190,7 @@ static void ip27_do_irq_mask0(struct irq_desc *desc)
|
|||
unsigned long *mask = per_cpu(irq_enable_mask, cpu);
|
||||
struct irq_domain *domain;
|
||||
u64 pend0;
|
||||
int irq;
|
||||
int ret;
|
||||
|
||||
/* copied from Irix intpend0() */
|
||||
pend0 = LOCAL_HUB_L(PI_INT_PEND0);
|
||||
|
@ -216,10 +216,8 @@ static void ip27_do_irq_mask0(struct irq_desc *desc)
|
|||
#endif
|
||||
{
|
||||
domain = irq_desc_get_handler_data(desc);
|
||||
irq = irq_linear_revmap(domain, __ffs(pend0));
|
||||
if (irq)
|
||||
generic_handle_irq(irq);
|
||||
else
|
||||
ret = generic_handle_domain_irq(domain, __ffs(pend0));
|
||||
if (ret)
|
||||
spurious_interrupt();
|
||||
}
|
||||
|
||||
|
@ -232,7 +230,7 @@ static void ip27_do_irq_mask1(struct irq_desc *desc)
|
|||
unsigned long *mask = per_cpu(irq_enable_mask, cpu);
|
||||
struct irq_domain *domain;
|
||||
u64 pend1;
|
||||
int irq;
|
||||
int ret;
|
||||
|
||||
/* copied from Irix intpend0() */
|
||||
pend1 = LOCAL_HUB_L(PI_INT_PEND1);
|
||||
|
@ -242,10 +240,8 @@ static void ip27_do_irq_mask1(struct irq_desc *desc)
|
|||
return;
|
||||
|
||||
domain = irq_desc_get_handler_data(desc);
|
||||
irq = irq_linear_revmap(domain, __ffs(pend1) + 64);
|
||||
if (irq)
|
||||
generic_handle_irq(irq);
|
||||
else
|
||||
ret = generic_handle_domain_irq(domain, __ffs(pend1) + 64);
|
||||
if (ret)
|
||||
spurious_interrupt();
|
||||
|
||||
LOCAL_HUB_L(PI_INT_PEND1);
|
||||
|
|
|
@ -99,7 +99,7 @@ static void ip30_normal_irq(struct irq_desc *desc)
|
|||
int cpu = smp_processor_id();
|
||||
struct irq_domain *domain;
|
||||
u64 pend, mask;
|
||||
int irq;
|
||||
int ret;
|
||||
|
||||
pend = heart_read(&heart_regs->isr);
|
||||
mask = (heart_read(&heart_regs->imr[cpu]) &
|
||||
|
@ -130,10 +130,8 @@ static void ip30_normal_irq(struct irq_desc *desc)
|
|||
#endif
|
||||
{
|
||||
domain = irq_desc_get_handler_data(desc);
|
||||
irq = irq_linear_revmap(domain, __ffs(pend));
|
||||
if (irq)
|
||||
generic_handle_irq(irq);
|
||||
else
|
||||
ret = generic_handle_domain_irq(domain, __ffs(pend));
|
||||
if (ret)
|
||||
spurious_interrupt();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue