]> git.karo-electronics.de Git - karo-tx-linux.git/commit
MIPS: DECstation I/O ASIC DMA interrupt classes
authorMaciej W. Rozycki <macro@linux-mips.org>
Sun, 22 Sep 2013 20:55:19 +0000 (21:55 +0100)
committerRalf Baechle <ralf@linux-mips.org>
Tue, 15 Oct 2013 12:41:19 +0000 (14:41 +0200)
commit5f15fb1ccd95e614d0a57f067dc5b9a1e454e8a4
tree434dadbafcef1a4cac3f49d241eda021ccb3fa01
parentce16b3ae2b8c7bef2c8f41d6433817c4bed21c18
MIPS: DECstation I/O ASIC DMA interrupt classes

This change complements commits d0da7c002f7b2a93582187a9e3f73891a01d8ee4
[MIPS: DEC: Convert to new irq_chip functions] and
5359b938c088423a28c41499f183cd10824c1816 [MIPS: DECstation I/O ASIC DMA
interrupt handling fix] and implements automatic handling of the two
classes of DMA interrupts the I/O ASIC implements, informational and
errors.

Informational DMA interrupts do not stop the transfer and use the
`handle_edge_irq' handler that clears the request right away so that
another request may be recorded while the previous is being handled.

DMA error interrupts stop the transfer and require a corrective action
before DMA can be reenabled.  Therefore they use the `handle_fasteoi_irq'
handler that only clears the request on the way out.  Because MIPS
processor interrupt inputs, one of which the I/O ASIC's interrupt
controller is cascaded to, are level-triggered it is recommended that
error DMA interrupt action handlers are registered with the IRQF_ONESHOT
flag set so that they are run with the interrupt line masked.

This change removes the export of clear_ioasic_dma_irq that now does not
have to be called by device drivers to clear interrupts explicitly
anymore.  Originally these interrupts were cleared in the .end handler of
the `irq_chip' structure, before it was removed.

Signed-off-by: Maciej W. Rozycki <macro@linux-mips.org>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/5874/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
arch/mips/dec/ioasic-irq.c
arch/mips/include/asm/dec/ioasic.h
drivers/net/ethernet/amd/declance.c