Lines Matching full:irq
18 #include <linux/irq.h>
48 unsigned int irq = data->irq; in q40_irq_startup() local
51 switch (irq) { in q40_irq_startup()
54 pr_warn("%s: ISA IRQ %d not implemented by HW\n", __func__, in q40_irq_startup()
55 irq); in q40_irq_startup()
81 * the q40 IRQ handling routines.
98 master_outb(1, EXT_ENABLE_REG); /* ISA IRQ 5-15 */ in q40_init_IRQ()
100 /* make sure keyboard IRQ is disabled */ in q40_init_IRQ()
133 static irqreturn_t q40_timer_int(int irq, void *dev_id) in q40_timer_int() argument
169 * tables to translate bits into IRQ numbers
174 struct IRQ_TABLE{ unsigned mask; int irq ;}; member
182 { .mask = Q40_IRQ3_MASK, .irq = 3 }, /* ser 1 */
183 { .mask = Q40_IRQ4_MASK, .irq = 4 }, /* ser 2 */
184 { .mask = Q40_IRQ14_MASK, .irq = 14 }, /* IDE 1 */
185 { .mask = Q40_IRQ15_MASK, .irq = 15 }, /* IDE 2 */
186 { .mask = Q40_IRQ6_MASK, .irq = 6 }, /* floppy, handled elsewhere */
187 { .mask = Q40_IRQ7_MASK, .irq = 7 }, /* par */
188 { .mask = Q40_IRQ5_MASK, .irq = 5 },
189 { .mask = Q40_IRQ10_MASK, .irq = 10 },
206 static int mext_disabled; /* ext irq disabled by master chip? */
211 static void q40_irq_handler(unsigned int irq, struct pt_regs *fp) in q40_irq_handler() argument
225 switch (irq) { in q40_irq_handler()
239 irq = eirqs[i].irq; in q40_irq_handler()
241 * There is a little mess wrt which IRQ really caused this irq request. The in q40_irq_handler()
246 if (irq > 4 && irq <= 15 && mext_disabled) { in q40_irq_handler()
250 if (q40_state[irq] & IRQ_INPROGRESS) { in q40_irq_handler()
251 /* some handlers do local_irq_enable() for irq latency reasons, */ in q40_irq_handler()
252 /* however reentering an active irq handler is not permitted */ in q40_irq_handler()
256 disable_irq(irq); in q40_irq_handler()
259 /*pr_warn("IRQ_INPROGRESS detected for irq %d, disabling - %s disabled\n", in q40_irq_handler()
260 irq, disabled ? "already" : "not yet"); */ in q40_irq_handler()
266 q40_state[irq] |= IRQ_INPROGRESS; in q40_irq_handler()
267 do_IRQ(irq, fp); in q40_irq_handler()
268 q40_state[irq] &= ~IRQ_INPROGRESS; in q40_irq_handler()
272 /* getting another chance to disable the IRQ */ in q40_irq_handler()
276 if (irq > 4) { in q40_irq_handler()
278 enable_irq(irq); in q40_irq_handler()
282 /*pr_info("reenabling irq %d\n", irq); */ in q40_irq_handler()
297 /* should test whether keyboard irq is really enabled, doing it in defhand */ in q40_irq_handler()
306 unsigned int irq = data->irq; in q40_irq_enable() local
308 if (irq >= 5 && irq <= 15) { in q40_irq_enable()
320 unsigned int irq = data->irq; in q40_irq_disable() local
327 if (irq >= 5 && irq <= 15) { in q40_irq_disable()