]> git.baikalelectronics.ru Git - kernel.git/commit
[POWERPC] QEIC: Implement pluggable handlers, fix MPIC cascading
authorAnton Vorontsov <avorontsov@ru.mvista.com>
Fri, 5 Oct 2007 17:47:29 +0000 (21:47 +0400)
committerKumar Gala <galak@kernel.crashing.org>
Mon, 8 Oct 2007 13:38:57 +0000 (08:38 -0500)
commitfd07664f136719c0b541e29e39ccb1179e6d249f
tree75bd9835a6cb7677ddcab7c5091d7ca4e370b345
parenta0d12e35da1ecffd8641d62e964396b18cf2db33
[POWERPC] QEIC: Implement pluggable handlers, fix MPIC cascading

set_irq_chained_handler overwrites MPIC's handle_irq function
(handle_fasteoi_irq) thus MPIC never gets eoi event from the
cascaded IRQ. This situation hangs MPIC on MPC8568E.

To solve this problem efficiently, QEIC needs pluggable handlers,
specific to the underlaying interrupt controller.

Patch extends qe_ic_init() function to accept low and high interrupt
handlers. To avoid #ifdefs, stack of interrupt handlers specified in
the header file and functions are marked 'static inline', thus
handlers are compiled-in only if actually used (in the board file).
Another option would be to lookup for parent controller and
automatically detect handlers (will waste text size because of
never used handlers, so this option abolished).

qe_ic_init() also changed in regard to support multiplexed high/low
lines as found in MPC8568E-MDS, plus qe_ic_cascade_muxed_mpic()
handler implemented appropriately.

Signed-off-by: Anton Vorontsov <avorontsov@ru.mvista.com>
Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
arch/powerpc/platforms/83xx/mpc832x_mds.c
arch/powerpc/platforms/83xx/mpc832x_rdb.c
arch/powerpc/platforms/83xx/mpc836x_mds.c
arch/powerpc/platforms/85xx/mpc85xx_mds.c
arch/powerpc/sysdev/qe_lib/qe_ic.c
include/asm-powerpc/qe_ic.h