~ubuntu-branches/ubuntu/precise/linux-ti-omap4/precise

« back to all changes in this revision

Viewing changes to kernel/irq/resend.c

  • Committer: Bazaar Package Importer
  • Author(s): Paolo Pisati
  • Date: 2011-06-29 15:23:51 UTC
  • mfrom: (26.1.1 natty-proposed)
  • Revision ID: james.westby@ubuntu.com-20110629152351-xs96tm303d95rpbk
Tags: 3.0.0-1200.2
* Rebased against 3.0.0-6.7
* BSP from TI based on 3.0.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
55
55
 */
56
56
void check_irq_resend(struct irq_desc *desc, unsigned int irq)
57
57
{
58
 
        unsigned int status = desc->status;
59
 
 
60
 
        /*
61
 
         * Make sure the interrupt is enabled, before resending it:
62
 
         */
63
 
        desc->irq_data.chip->irq_enable(&desc->irq_data);
64
 
 
65
58
        /*
66
59
         * We do not resend level type interrupts. Level type
67
60
         * interrupts are resent by hardware when they are still
68
61
         * active.
69
62
         */
70
 
        if ((status & (IRQ_LEVEL | IRQ_PENDING | IRQ_REPLAY)) == IRQ_PENDING) {
71
 
                desc->status = (status & ~IRQ_PENDING) | IRQ_REPLAY;
 
63
        if (irq_settings_is_level(desc))
 
64
                return;
 
65
        if (desc->istate & IRQS_REPLAY)
 
66
                return;
 
67
        if (desc->istate & IRQS_PENDING) {
 
68
                desc->istate &= ~IRQS_PENDING;
 
69
                desc->istate |= IRQS_REPLAY;
72
70
 
73
71
                if (!desc->irq_data.chip->irq_retrigger ||
74
72
                    !desc->irq_data.chip->irq_retrigger(&desc->irq_data)) {