resend.c (2a0d6fb335d4428285dab2d254911748e6040807) | resend.c (876dbd4cc1b35c1a4cb96a2be1d43ea0eabce3b4) |
---|---|
1/* 2 * linux/kernel/irq/resend.c 3 * 4 * Copyright (C) 1992, 1998-2006 Linus Torvalds, Ingo Molnar 5 * Copyright (C) 2005-2006, Thomas Gleixner 6 * 7 * This file contains the IRQ-resend code 8 * --- 46 unchanged lines hidden (view full) --- 55 */ 56void check_irq_resend(struct irq_desc *desc, unsigned int irq) 57{ 58 /* 59 * We do not resend level type interrupts. Level type 60 * interrupts are resent by hardware when they are still 61 * active. 62 */ | 1/* 2 * linux/kernel/irq/resend.c 3 * 4 * Copyright (C) 1992, 1998-2006 Linus Torvalds, Ingo Molnar 5 * Copyright (C) 2005-2006, Thomas Gleixner 6 * 7 * This file contains the IRQ-resend code 8 * --- 46 unchanged lines hidden (view full) --- 55 */ 56void check_irq_resend(struct irq_desc *desc, unsigned int irq) 57{ 58 /* 59 * We do not resend level type interrupts. Level type 60 * interrupts are resent by hardware when they are still 61 * active. 62 */ |
63 if (desc->status & IRQ_LEVEL) | 63 if (irq_settings_is_level(desc)) |
64 return; 65 if (desc->istate & IRQS_REPLAY) 66 return; 67 if (desc->istate & IRQS_PENDING) { 68 irq_compat_clr_pending(desc); 69 desc->istate &= ~IRQS_PENDING; 70 desc->istate |= IRQS_REPLAY; 71 72 if (!desc->irq_data.chip->irq_retrigger || 73 !desc->irq_data.chip->irq_retrigger(&desc->irq_data)) { 74#ifdef CONFIG_HARDIRQS_SW_RESEND 75 /* Set it pending and activate the softirq: */ 76 set_bit(irq, irqs_resend); 77 tasklet_schedule(&resend_tasklet); 78#endif 79 } 80 } 81} | 64 return; 65 if (desc->istate & IRQS_REPLAY) 66 return; 67 if (desc->istate & IRQS_PENDING) { 68 irq_compat_clr_pending(desc); 69 desc->istate &= ~IRQS_PENDING; 70 desc->istate |= IRQS_REPLAY; 71 72 if (!desc->irq_data.chip->irq_retrigger || 73 !desc->irq_data.chip->irq_retrigger(&desc->irq_data)) { 74#ifdef CONFIG_HARDIRQS_SW_RESEND 75 /* Set it pending and activate the softirq: */ 76 set_bit(irq, irqs_resend); 77 tasklet_schedule(&resend_tasklet); 78#endif 79 } 80 } 81} |