Lines Matching +full:irq +full:- +full:start

16 #include <linux/irq.h>
30 .irq = _irq, \
52 .start = 0x1cd41ffc,
59 .name = "rtc-ds1216",
66 .start = 0x18000000,
71 .start = 0x1b000000,
76 .start = 0x1ff00000,
81 .start = 27,
98 .start = 0x19000000,
103 .start = 26,
149 * This contains the irq mask for both 8259A irq controllers,
160 unsigned int mask, irq = d->irq - RM200_I8259A_IRQ_BASE; in sni_rm200_disable_8259A_irq() local
163 mask = 1 << irq; in sni_rm200_disable_8259A_irq()
166 if (irq & 8) in sni_rm200_disable_8259A_irq()
175 unsigned int mask, irq = d->irq - RM200_I8259A_IRQ_BASE; in sni_rm200_enable_8259A_irq() local
178 mask = ~(1 << irq); in sni_rm200_enable_8259A_irq()
181 if (irq & 8) in sni_rm200_enable_8259A_irq()
188 static inline int sni_rm200_i8259A_irq_real(unsigned int irq) in sni_rm200_i8259A_irq_real() argument
191 int irqmask = 1 << irq; in sni_rm200_i8259A_irq_real()
193 if (irq < 8) { in sni_rm200_i8259A_irq_real()
213 unsigned int irqmask, irq = d->irq - RM200_I8259A_IRQ_BASE; in sni_rm200_mask_and_ack_8259A() local
216 irqmask = 1 << irq; in sni_rm200_mask_and_ack_8259A()
219 * Lightweight spurious IRQ detection. We do not want in sni_rm200_mask_and_ack_8259A()
220 * to overdo spurious IRQ handling - it's usually a sign in sni_rm200_mask_and_ack_8259A()
225 * usually resulting from the 8259A-1|2 PICs) occur in sni_rm200_mask_and_ack_8259A()
226 * even if the IRQ is masked in the 8259A. Thus we in sni_rm200_mask_and_ack_8259A()
228 * quite slow i8259A_irq_real() call for every IRQ. in sni_rm200_mask_and_ack_8259A()
238 if (irq & 8) { in sni_rm200_mask_and_ack_8259A()
241 writeb(0x60+(irq & 7), rm200_pic_slave + PIC_CMD); in sni_rm200_mask_and_ack_8259A()
246 writeb(0x60+irq, rm200_pic_master + PIC_CMD); in sni_rm200_mask_and_ack_8259A()
253 * this is the slow path - should happen rarely. in sni_rm200_mask_and_ack_8259A()
255 if (sni_rm200_i8259A_irq_real(irq)) in sni_rm200_mask_and_ack_8259A()
257 * oops, the IRQ _is_ in service according to the in sni_rm200_mask_and_ack_8259A()
258 * 8259A - not spurious, go handle it. in sni_rm200_mask_and_ack_8259A()
265 * At this point we can be sure the IRQ is spurious, in sni_rm200_mask_and_ack_8259A()
266 * let's ACK and report it. [once per IRQ] in sni_rm200_mask_and_ack_8259A()
270 "spurious RM200 8259A interrupt: IRQ%d.\n", irq); in sni_rm200_mask_and_ack_8259A()
275 * Theoretically we do not have to handle this IRQ, in sni_rm200_mask_and_ack_8259A()
284 .name = "RM200-XT-PIC",
297 int irq; in sni_rm200_i8259_irq() local
303 irq = readb(rm200_pic_master + PIC_CMD) & 7; in sni_rm200_i8259_irq()
304 if (irq == PIC_CASCADE_IR) { in sni_rm200_i8259_irq()
310 irq = (readb(rm200_pic_slave + PIC_CMD) & 7) + 8; in sni_rm200_i8259_irq()
313 if (unlikely(irq == 7)) { in sni_rm200_i8259_irq()
323 irq = -1; in sni_rm200_i8259_irq()
328 return likely(irq >= 0) ? irq + RM200_I8259A_IRQ_BASE : irq; in sni_rm200_i8259_irq()
362 .start = 0x16000020,
369 .start = 0x160000a0,
374 /* ISA irq handler */
377 int irq; in sni_rm200_i8259A_irq_handler() local
379 irq = sni_rm200_i8259_irq(); in sni_rm200_i8259A_irq_handler()
380 if (unlikely(irq < 0)) in sni_rm200_i8259A_irq_handler()
383 do_IRQ(irq); in sni_rm200_i8259A_irq_handler()
423 unsigned int mask = 1 << (d->irq - SNI_RM200_INT_START); in enable_rm200_irq()
430 unsigned int mask = 1 << (d->irq - SNI_RM200_INT_START); in disable_rm200_irq()
446 int irq; in sni_rm200_hwint() local
454 irq = ffs(stat & mask & 0x1f); in sni_rm200_hwint()
456 if (likely(irq > 0)) in sni_rm200_hwint()
457 do_IRQ(irq + SNI_RM200_INT_START - 1); in sni_rm200_hwint()