• James Hogan's avatar
    MIPS: cevt-r4k: Drop GIC special case · ae58d882
    James Hogan authored
    The cevt-r4k driver used to call into the GIC driver to find whether the
    timer was pending, but only with External Interrupt Controller (EIC)
    mode, where the Cause.IP bits can't be used as they encode the interrupt
    priority level (Cause.RIPL) instead.
    
    However commit e9de688d ("irqchip: mips-gic: Support local
    interrupts") changed the condition from cpu_has_veic to gic_present.
    This fails on cores such as P5600 which have a GIC but the local
    interrupts aren't routable by the GIC, causing c0_compare_int_usable()
    to consider the interrupt unusable so r4k_clockevent_init() fails.
    
    The previous behaviour, added in commit 98b67c37 ("MIPS: Add EIC
    support for GIC."), wasn't really correct either as far as I can tell,
    since P5600 apparently supports EIC mode too, and in any case the use of
    Cause.TI with r2 should have been sufficient anyway since commit
    010c108d ("MIPS: PowerTV: Fix support for timer interrupts with > 64
    external IRQs").
    
    Therefore drop the call into the gic driver altogether, and add a
    comment in c0_compare_int_pending() to clarify that Cause.TI does get
    checked since MIPS r2.
    Signed-off-by: default avatarJames Hogan <james.hogan@imgtec.com>
    Fixes: e9de688d ("irqchip: mips-gic: Support local interrupts")
    Reviewed-by: default avatarAndrew Bresticker <abrestic@chromium.org>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: Steven J. Hill <steven.hill@imgtec.com>
    Cc: Qais Yousef <qais.yousef@imgtec.com>
    Cc: Jason Cooper <jason@lakedaemon.net>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/9077/Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
    ae58d882
irq-mips-gic.c 19.1 KB