From 5cc6a7c4545ca64e6dd1cc9cd111692b62512262 Mon Sep 17 00:00:00 2001 From: David Collins Date: Mon, 9 Dec 2019 16:17:19 -0800 Subject: [PATCH] pinctrl: qcom: spmi-gpio: define an irqchip for each pinctrl device Generate a new irqchip struct for each pinctrl device that is registered to avoid sharing the same irqchip between devices. This corrects the following error which is printed when registering more than one pinctrl-spmi-gpio device: "detected irqchip that is shared with multiple gpiochips: please fix the driver." Change-Id: I80ce67fc674b96f4386499f547395ceed7480583 Signed-off-by: David Collins --- drivers/pinctrl/qcom/pinctrl-spmi-gpio.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/pinctrl/qcom/pinctrl-spmi-gpio.c b/drivers/pinctrl/qcom/pinctrl-spmi-gpio.c index 4485eebd8d3a..8dcae171a8aa 100644 --- a/drivers/pinctrl/qcom/pinctrl-spmi-gpio.c +++ b/drivers/pinctrl/qcom/pinctrl-spmi-gpio.c @@ -1083,7 +1083,12 @@ static int pmic_gpio_probe(struct platform_device *pdev) return -ENXIO; girq = &state->chip.irq; - girq->chip = &pmic_gpio_irq_chip; + + girq->chip = devm_kmemdup(dev, &pmic_gpio_irq_chip, + sizeof(pmic_gpio_irq_chip), GFP_KERNEL); + if (!girq->chip) + return -ENOMEM; + girq->default_type = IRQ_TYPE_NONE; girq->handler = handle_level_irq; girq->fwnode = of_node_to_fwnode(state->dev->of_node);