Lines Matching +full:intc +full:- +full:nr +full:- +full:irqs
6 * Yasushi SHOJI <yashi@atmark-techno.com>
8 * SPDX-License-Identifier: GPL-2.0+
39 microblaze_intc_t *intc; variable
53 mask = intc->ier; in enable_one_interrupt()
54 intc->ier = (mask | offset); in enable_one_interrupt()
56 debug("Enable one interrupt irq %x - mask %x,ier %x\n", offset, mask, in enable_one_interrupt()
57 intc->ier); in enable_one_interrupt()
58 debug("INTC isr %x, ier %x, iar %x, mer %x\n", intc->isr, intc->ier, in enable_one_interrupt()
59 intc->iar, intc->mer); in enable_one_interrupt()
68 mask = intc->ier; in disable_one_interrupt()
69 intc->ier = (mask & ~offset); in disable_one_interrupt()
71 debug("Disable one interrupt irq %x - mask %x,ier %x\n", irq, mask, in disable_one_interrupt()
72 intc->ier); in disable_one_interrupt()
73 debug("INTC isr %x, ier %x, iar %x, mer %x\n", intc->isr, intc->ier, in disable_one_interrupt()
74 intc->iar, intc->mer); in disable_one_interrupt()
84 return -1; in install_interrupt_handler()
88 act->handler = hdlr; in install_interrupt_handler()
89 act->arg = arg; in install_interrupt_handler()
90 act->count = 0; in install_interrupt_handler()
96 act->handler = (interrupt_handler_t *)def_hdlr; in install_interrupt_handler()
97 act->arg = (void *)irq; in install_interrupt_handler()
102 /* initialization interrupt controller - hardware */
105 intc->mer = 0; in intc_init()
106 intc->ier = 0; in intc_init()
107 intc->iar = 0xFFFFFFFF; in intc_init()
108 /* XIntc_Start - hw_interrupt enable and all interrupt enable */ in intc_init()
109 intc->mer = 0x3; in intc_init()
111 debug("INTC isr %x, ier %x, iar %x, mer %x\n", intc->isr, intc->ier, in intc_init()
112 intc->iar, intc->mer); in intc_init()
118 const void *blob = gd->fdt_blob; in interrupt_init()
121 debug("INTC: Initialization\n"); in interrupt_init()
124 "xlnx,xps-intc-1.00.a"); in interrupt_init()
125 if (node != -1) { in interrupt_init()
128 return -1; in interrupt_init()
130 debug("INTC: Base addr %lx\n", base); in interrupt_init()
131 intc = (microblaze_intc_t *)base; in interrupt_init()
132 irq_no = fdtdec_get_int(blob, node, "xlnx,num-intr-inputs", 0); in interrupt_init()
133 debug("INTC: IRQ NO %x\n", irq_no); in interrupt_init()
142 return -1; in interrupt_init()
151 /* initialize intc controller */ in interrupt_init()
162 int irqs = intc->ivr; /* find active interrupt */ in interrupt_handler() local
165 struct irq_action *act = vecs + irqs; in interrupt_handler()
167 debug("INTC isr %x, ier %x, iar %x, mer %x\n", intc->isr, intc->ier, in interrupt_handler()
168 intc->iar, intc->mer); in interrupt_handler()
172 debug("Interrupt handler on %x line, r14 %x\n", irqs, value); in interrupt_handler()
175 (u32)act->handler, act->count, (u32)act->arg); in interrupt_handler()
176 act->handler(act->arg); in interrupt_handler()
177 act->count++; in interrupt_handler()
179 intc->iar = mask << irqs; in interrupt_handler()
181 debug("Dump INTC reg, isr %x, ier %x, iar %x, mer %x\n", intc->isr, in interrupt_handler()
182 intc->ier, intc->iar, intc->mer); in interrupt_handler()
186 debug("Interrupt handler on %x line, r14 %x\n", irqs, value); in interrupt_handler()
196 puts("\nInterrupt-Information:\n\n" in do_irqinfo()
197 "Nr Routine Arg Count\n" in do_irqinfo()
198 "-----------------------------\n"); in do_irqinfo()
201 if (act->handler != (interrupt_handler_t *)def_hdlr) { in do_irqinfo()
203 (int)act->handler, (int)act->arg, in do_irqinfo()
204 act->count); in do_irqinfo()