• Brian Masney's avatar
    spmi: pmic-arb: disassociate old virq if hwirq mapping already exists · 682aefaa
    Brian Masney authored
    Check to see if the hwirq is already associated with another virq on
    this IRQ domain. If so, then disassociate it before associating the
    hwirq with the new virq.
    
    This is a temporary hack that is needed in order to not break git
    bisect for existing boards. The next patch in this series converts
    spmi-gpio to be a hierarchical IRQ chip, then there are several patches
    to update all of the device tree files, and finally this patch will be
    reverted within the same patch series.
    
    IRQs for spmi-gpio are all initially setup without an IRQ hierarchy
    on pmic-arb when mfd/qcom-spmi-pmic.c is probed (via the
    devm_of_platform_populate call) due to the interrupts property in
    device tree. Once spmi-gpio is converted to be a hierarchical IRQ chip
    in the next patch, existing users of gpio[d]_to_irq() will call
    pmic_gpio_to_irq(), and that will use the new IRQ chip code in
    spmi-gpio that sets up the IRQ in an IRQ hierarchy. The hwirq is now
    associated with two Linux virqs and interrupts will not work as
    expected. This patch corrects that issue.
    
    Driver was tested using gpio-keys and iadc/vadc on the LG Nexus 5
    (hammerhead) phone.
    Signed-off-by: default avatarBrian Masney <masneyb@onstation.org>
    Reviewed-by: default avatarStephen Boyd <sboyd@kernel.org>
    Acked-by: default avatarBjorn Andersson <bjorn.andersson@linaro.org>
    Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
    682aefaa
spmi-pmic-arb.c 37 KB