m68k/irq - Use polled IRQ flag for MFP timer cascaded interrupts
authorMichael Schmitz <schmitzmic@gmail.com>
Sat, 11 Jan 2014 00:58:55 +0000 (13:58 +1300)
committerGeert Uytterhoeven <geert@linux-m68k.org>
Mon, 13 Jan 2014 08:29:10 +0000 (09:29 +0100)
Some Atari hardware has no capacity to raise interrupts (e.g.
network or USB adapter hardware attached via ROM port). The driver
interrupt routine is called from a timer interrupt (timer D) in
these cases, using chained device specific pseudo interrupts
(IRQ_MFP_TIMER1 ff.)

These interrupts will more often than not, return IRQ_NONE as
there is not always work for the device handler when called.
Too many unhandled interrupts will result in the interrupt
being disabled by the stuck interrupt watchdog.

As preferred option to flag interrupts as needing exclusion
from the watchdog mechanism, tglx added the IRQ_IS_POLLED flag
for use in such a case. Currently, two interrupts need to use
this flag. Add more users as needed.

Signed-off-by: Michael Schmitz <schmitz@debian.org>
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
arch/m68k/atari/ataints.c

index 20cde4e9fc772ed2aef86c0da2edc2facb9e1e38..3e73a63c066f8a480ae543035c26cd5265f797ae 100644 (file)
@@ -333,6 +333,9 @@ void __init atari_init_IRQ(void)
        m68k_setup_irq_controller(&atari_mfptimer_chip, handle_simple_irq,
                                  IRQ_MFP_TIMER1, 8);
 
+       irq_set_status_flags(IRQ_MFP_TIMER1, IRQ_IS_POLLED);
+       irq_set_status_flags(IRQ_MFP_TIMER2, IRQ_IS_POLLED);
+
        /* prepare timer D data for use as poll interrupt */
        /* set Timer D data Register - needs to be > 0 */
        st_mfp.tim_dt_d = 254;  /* < 100 Hz */