Lines Matching full:irq

48 void irq_install_handler(int irq, interrupt_handler_t *handler, void *arg)  in irq_install_handler()  argument
52 if (irq < 0 || irq >= SYS_NUM_IRQS) { in irq_install_handler()
53 printf("irq_install_handler: bad irq number %d\n", irq); in irq_install_handler()
57 if (irq_handlers[irq].handler != NULL) in irq_install_handler()
60 (ulong) irq_handlers[irq].handler); in irq_install_handler()
64 irq_handlers[irq].handler = handler; in irq_install_handler()
65 irq_handlers[irq].arg = arg; in irq_install_handler()
66 irq_handlers[irq].count = 0; in irq_install_handler()
68 unmask_irq(irq); in irq_install_handler()
76 void irq_free_handler(int irq) in irq_free_handler() argument
80 if (irq < 0 || irq >= SYS_NUM_IRQS) { in irq_free_handler()
81 printf("irq_free_handler: bad irq number %d\n", irq); in irq_free_handler()
87 mask_irq(irq); in irq_free_handler()
89 irq_handlers[irq].handler = NULL; in irq_free_handler()
90 irq_handlers[irq].arg = NULL; in irq_free_handler()
100 int irq = hw_irq - 0x20; in do_irq() local
102 if (irq < 0 || irq >= SYS_NUM_IRQS) { in do_irq()
103 printf("do_irq: bad irq number %d\n", irq); in do_irq()
107 if (irq_handlers[irq].handler) { in do_irq()
108 mask_irq(irq); in do_irq()
110 irq_handlers[irq].handler(irq_handlers[irq].arg); in do_irq()
111 irq_handlers[irq].count++; in do_irq()
113 unmask_irq(irq); in do_irq()
114 specific_eoi(irq); in do_irq()
117 if ((irq & 7) != 7) { in do_irq()
119 spurious_irq = irq; in do_irq()
129 int irq; in do_irqinfo() local
131 printf("Spurious IRQ: %u, last unknown IRQ: %d\n", in do_irqinfo()
137 for (irq = 0; irq < SYS_NUM_IRQS; irq++) { in do_irqinfo()
138 if (irq_handlers[irq].handler != NULL) { in do_irqinfo()
140 irq, in do_irqinfo()
141 (ulong)irq_handlers[irq].handler, in do_irqinfo()
142 (ulong)irq_handlers[irq].arg, in do_irqinfo()
143 irq_handlers[irq].count); in do_irqinfo()