• Anton Vorontsov's avatar
    [POWERPC] QEIC: Implement pluggable handlers, fix MPIC cascading · cccd2102
    Anton Vorontsov authored
    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: default avatarAnton Vorontsov <avorontsov@ru.mvista.com>
    Acked-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
    Signed-off-by: default avatarKumar Gala <galak@kernel.crashing.org>
    cccd2102
qe_ic.h 4.03 KB