Commit a0b7b242261c8c1097925663bf44d51c1e357e58

Authored by Michael Schmitz
Committed by Geert Uytterhoeven
1 parent a16f9a42a5

m68k/irq - Use polled IRQ flag for MFP timer cascaded interrupts

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>

Showing 1 changed file with 3 additions and 0 deletions Side-by-side Diff

arch/m68k/atari/ataints.c
... ... @@ -333,6 +333,9 @@
333 333 m68k_setup_irq_controller(&atari_mfptimer_chip, handle_simple_irq,
334 334 IRQ_MFP_TIMER1, 8);
335 335  
  336 + irq_set_status_flags(IRQ_MFP_TIMER1, IRQ_IS_POLLED);
  337 + irq_set_status_flags(IRQ_MFP_TIMER2, IRQ_IS_POLLED);
  338 +
336 339 /* prepare timer D data for use as poll interrupt */
337 340 /* set Timer D data Register - needs to be > 0 */
338 341 st_mfp.tim_dt_d = 254; /* < 100 Hz */