• Thomas Petazzoni's avatar
    gpio: mvebu: use chained_irq_{enter,exit} for GIC compatibility · 01ca59f1
    Thomas Petazzoni authored
    On currently supported SoCs, the GPIO block used on Marvell EBU SoCs
    is always connected to the Marvell MPIC. However, we are going to
    introduce the support for newer Marvell EBU SoCs that use the
    Cortex-A9 core, and therefore use the GIC as their main interrupt
    controller, to which the GPIO block controlled by the gpio-mvebu
    driver is connected.
    
    The GIC interrupt controller driver uses the fasteoi flow handler. In
    order to ensure that the eoi hook of the GIC driver gets called, the
    GPIO driver should call chained_irq_enter() and chained_irq_exit() in
    its handler. Without this, the first GPIO interrupt locks up the
    system because it doesn't get acked at the GIC level.
    
    This change is similar to for example commit
    0d978eb7 ("gpio: davinci: use
    chained_irq_enter/chained_irq_exit API").
    Signed-off-by: default avatarThomas Petazzoni <thomas.petazzoni@free-electrons.com>
    Acked-by: default avatarJason Cooper <jason@lakedaemon.net>
    Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
    01ca59f1
gpio-mvebu.c 20.9 KB