/* * hwint 3 should deal with the PCI A - D interrupts, */ void pciasic_hwint3(struct pt_regs *regs) { u8 pend = *(volatile char *)PCIMT_CSITPEND; int irq; pend &= (IT_INTA | IT_INTB | IT_INTC | IT_INTD); clear_c0_status(IE_IRQ3); irq = PCIMT_IRQ_INT2 + ls1bit8(pend); do_IRQ(irq, regs); set_c0_status(IE_IRQ3); }
/* * Interrupt handler for interrupts coming from the FPGA chip. */ void ll_uart_irq(struct pt_regs *regs) { unsigned int irq_src, irq_mask; /* read the interrupt status registers */ irq_src = OCELOT_FPGA_READ(UART_INTSTAT); irq_mask = OCELOT_FPGA_READ(UART_INTMASK); /* mask for just the interrupts we want */ irq_src &= ~irq_mask; do_IRQ(ls1bit8(irq_src) + 74, regs); }
/* * Interrupt handler for interrupts coming from the FPGA chip. * It could be built in ethernet ports etc... */ void ll_cpci_irq(void) { unsigned int irq_src, irq_mask; /* read the interrupt status registers */ irq_src = OCELOT_FPGA_READ(INTSTAT); irq_mask = OCELOT_FPGA_READ(INTMASK); /* mask for just the interrupts we want */ irq_src &= ~irq_mask; do_IRQ(ls1bit8(irq_src) + CPCI_IRQ_BASE); }