/* * Level triggered interrupts on GPIO lines can only be cleared when the * interrupt condition disappears. */ static void ixp23xx_irq_level_unmask(unsigned int irq) { volatile unsigned long *intr_reg; ixp23xx_irq_ack(irq); if (irq >= 56) irq += 8; intr_reg = IXP23XX_INTR_EN1 + (irq / 32); *intr_reg |= (1 << (irq % 32)); }
/* * Level triggered interrupts on GPIO lines can only be cleared when the * interrupt condition disappears. */ static void ixp23xx_irq_level_unmask(struct irq_data *d) { volatile unsigned long *intr_reg; unsigned int irq = d->irq; ixp23xx_irq_ack(d); if (irq >= 56) irq += 8; intr_reg = IXP23XX_INTR_EN1 + (irq / 32); *intr_reg |= (1 << (irq % 32)); }