void intc0_req1_irqdispatch(struct pt_regs *regs) { int irq = 0, i; static unsigned long intc0_req1 = 0; intc0_req1 = au_readl(IC0_REQ1INT); if (!intc0_req1) return; for (i=0; i<32; i++) { if ((intc0_req1 & (1<<i))) { intc0_req1 &= ~(1<<i); #ifdef CONFIG_PM if (i == AU1000_TOY_MATCH2_INT) { mask_and_ack_rise_edge_irq(irq); counter0_irq(irq, NULL, regs); local_enable_irq(irq); } else #endif { do_IRQ(irq, regs); } break; } irq++; } }
void intc0_req1_irqdispatch(struct pt_regs *regs) { int irq = 0; static unsigned long intc0_req1 = 0; intc0_req1 |= au_readl(IC0_REQ1INT); if (!intc0_req1) return; irq = au_ffs(intc0_req1) - 1; intc0_req1 &= ~(1<<irq); #ifdef CONFIG_PM if (irq == AU1000_TOY_MATCH2_INT) { mask_and_ack_rise_edge_irq(irq); counter0_irq(irq, NULL, regs); local_enable_irq(irq); } else #endif { do_IRQ(irq, regs); } }