void __init ixdp2351_init_irq(void) { int irq; /* Mask all interrupts from CPLD, disable simulation */ *IXDP2351_CPLD_INTA_MASK_SET_REG = (u16) -1; *IXDP2351_CPLD_INTB_MASK_SET_REG = (u16) -1; *IXDP2351_CPLD_INTA_SIM_REG = 0; *IXDP2351_CPLD_INTB_SIM_REG = 0; ixp23xx_init_irq(); for (irq = IXP23XX_MACH_IRQ(IXDP2351_INTA_IRQ_BASE); irq < IXP23XX_MACH_IRQ(IXDP2351_INTA_IRQ_BASE + IXDP2351_INTA_IRQ_NUM); irq++) { if (IXDP2351_INTA_IRQ_MASK(irq) & IXDP2351_INTA_IRQ_VALID) { set_irq_flags(irq, IRQF_VALID); set_irq_handler(irq, handle_level_irq); set_irq_chip(irq, &ixdp2351_inta_chip); } } for (irq = IXP23XX_MACH_IRQ(IXDP2351_INTB_IRQ_BASE); irq < IXP23XX_MACH_IRQ(IXDP2351_INTB_IRQ_BASE + IXDP2351_INTB_IRQ_NUM); irq++) { if (IXDP2351_INTB_IRQ_MASK(irq) & IXDP2351_INTB_IRQ_VALID) { set_irq_flags(irq, IRQF_VALID); set_irq_handler(irq, handle_level_irq); set_irq_chip(irq, &ixdp2351_intb_chip); } } set_irq_chained_handler(IRQ_IXP23XX_INTA, ixdp2351_inta_handler); set_irq_chained_handler(IRQ_IXP23XX_INTB, ixdp2351_intb_handler); }
void __init ixdp2351_init_irq(void) { int irq; /* */ *IXDP2351_CPLD_INTA_MASK_SET_REG = (u16) -1; *IXDP2351_CPLD_INTB_MASK_SET_REG = (u16) -1; *IXDP2351_CPLD_INTA_SIM_REG = 0; *IXDP2351_CPLD_INTB_SIM_REG = 0; ixp23xx_init_irq(); for (irq = IXP23XX_MACH_IRQ(IXDP2351_INTA_IRQ_BASE); irq < IXP23XX_MACH_IRQ(IXDP2351_INTA_IRQ_BASE + IXDP2351_INTA_IRQ_NUM); irq++) { if (IXDP2351_INTA_IRQ_MASK(irq) & IXDP2351_INTA_IRQ_VALID) { set_irq_flags(irq, IRQF_VALID); irq_set_chip_and_handler(irq, &ixdp2351_inta_chip, handle_level_irq); } } for (irq = IXP23XX_MACH_IRQ(IXDP2351_INTB_IRQ_BASE); irq < IXP23XX_MACH_IRQ(IXDP2351_INTB_IRQ_BASE + IXDP2351_INTB_IRQ_NUM); irq++) { if (IXDP2351_INTB_IRQ_MASK(irq) & IXDP2351_INTB_IRQ_VALID) { set_irq_flags(irq, IRQF_VALID); irq_set_chip_and_handler(irq, &ixdp2351_intb_chip, handle_level_irq); } } irq_set_chained_handler(IRQ_IXP23XX_INTA, ixdp2351_inta_handler); irq_set_chained_handler(IRQ_IXP23XX_INTB, ixdp2351_intb_handler); }
static void ixdp2351_inta_unmask(unsigned int irq) { *IXDP2351_CPLD_INTA_MASK_CLR_REG = IXDP2351_INTA_IRQ_MASK(irq); }
static void ixdp2351_inta_unmask(struct irq_data *d) { *IXDP2351_CPLD_INTA_MASK_CLR_REG = IXDP2351_INTA_IRQ_MASK(d->irq); }