]> git.baikalelectronics.ru Git - kernel.git/commit
mfd: pm8xxx: disassociate old virq if hwirq mapping already exists
authorBrian Masney <masneyb@onstation.org>
Fri, 8 Feb 2019 02:16:25 +0000 (21:16 -0500)
committerLinus Walleij <linus.walleij@linaro.org>
Wed, 13 Feb 2019 08:24:44 +0000 (09:24 +0100)
commite540e972ddfa28b4c07cf53e1a6f85c767a115fc
tree92cb0d35569fb945f0790d22e578df0fb59988f0
parent5e7f8d8c9ebc56e8de88ce11881e0d77abe4cc5c
mfd: pm8xxx: disassociate old virq if hwirq mapping already exists

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
ssbi-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 ssbi-gpio are all initially setup without an IRQ hierarchy
this driver is probed due to the interrupts property in device tree.
Once ssbi-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 ssbi-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.

This change was tested on an APQ8060 DragonBoard.

Signed-off-by: Brian Masney <masneyb@onstation.org>
Tested-by: Linus Walleij <linus.walleij@linaro.org>
Acked-by: Lee Jones <lee.jones@linaro.org>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/mfd/qcom-pm8xxx.c