Thomas, On Fri, 25 Jan 2019, Brian Masney wrote: > 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. I guess that's okay. Would quite like a second opinion though. > This change was not tested on any actual hardware, however the same > change was made to spmi-pmic-arb.c and tested on a LG Nexus 5 > (hammerhead) phone. > > Signed-off-by: Brian Masney <masneyb@xxxxxxxxxxxxx> > --- > drivers/mfd/qcom-pm8xxx.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/drivers/mfd/qcom-pm8xxx.c b/drivers/mfd/qcom-pm8xxx.c > index a976890c4019..97b931465601 100644 > --- a/drivers/mfd/qcom-pm8xxx.c > +++ b/drivers/mfd/qcom-pm8xxx.c > @@ -387,6 +387,11 @@ static void pm8xxx_irq_domain_map(struct pm_irq_chip *chip, > irq_hw_number_t hwirq, unsigned int type) > { > irq_flow_handler_t handler; > + unsigned int old_virq; > + > + old_virq = irq_find_mapping(domain, hwirq); > + if (old_virq) > + irq_domain_disassociate(domain, old_virq); > > if (type & IRQ_TYPE_EDGE_BOTH) > handler = handle_edge_irq; -- Lee Jones [李琼斯] Linaro Services Technical Lead Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog