Skip to content

Commit 0ce242a

Browse files
committed
pinctrl: qcom: Pass irqchip when adding gpiochip
We need to convert all old gpio irqchips to pass the irqchip setup along when adding the gpio_chip. For chained irqchips this is a pretty straight-forward conversion. Cc: Thierry Reding <[email protected]> Reviewed-by: Bjorn Andersson <[email protected]> Co-developed-by: Lina Iyer <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Linus Walleij <[email protected]>
1 parent b3a2b13 commit 0ce242a

File tree

1 file changed

+13
-14
lines changed

1 file changed

+13
-14
lines changed

drivers/pinctrl/qcom/pinctrl-msm.c

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1002,6 +1002,7 @@ static bool msm_gpio_needs_valid_mask(struct msm_pinctrl *pctrl)
10021002
static int msm_gpio_init(struct msm_pinctrl *pctrl)
10031003
{
10041004
struct gpio_chip *chip;
1005+
struct gpio_irq_chip *girq;
10051006
int ret;
10061007
unsigned ngpio = pctrl->soc->ngpios;
10071008

@@ -1027,6 +1028,18 @@ static int msm_gpio_init(struct msm_pinctrl *pctrl)
10271028
pctrl->irq_chip.irq_request_resources = msm_gpio_irq_reqres;
10281029
pctrl->irq_chip.irq_release_resources = msm_gpio_irq_relres;
10291030

1031+
girq = &chip->irq;
1032+
girq->chip = &pctrl->irq_chip;
1033+
girq->parent_handler = msm_gpio_irq_handler;
1034+
girq->num_parents = 1;
1035+
girq->parents = devm_kcalloc(pctrl->dev, 1, sizeof(*girq->parents),
1036+
GFP_KERNEL);
1037+
if (!girq->parents)
1038+
return -ENOMEM;
1039+
girq->default_type = IRQ_TYPE_NONE;
1040+
girq->handler = handle_bad_irq;
1041+
girq->parents[0] = pctrl->irq;
1042+
10301043
ret = gpiochip_add_data(&pctrl->chip, pctrl);
10311044
if (ret) {
10321045
dev_err(pctrl->dev, "Failed register gpiochip\n");
@@ -1053,20 +1066,6 @@ static int msm_gpio_init(struct msm_pinctrl *pctrl)
10531066
}
10541067
}
10551068

1056-
ret = gpiochip_irqchip_add(chip,
1057-
&pctrl->irq_chip,
1058-
0,
1059-
handle_edge_irq,
1060-
IRQ_TYPE_NONE);
1061-
if (ret) {
1062-
dev_err(pctrl->dev, "Failed to add irqchip to gpiochip\n");
1063-
gpiochip_remove(&pctrl->chip);
1064-
return -ENOSYS;
1065-
}
1066-
1067-
gpiochip_set_chained_irqchip(chip, &pctrl->irq_chip, pctrl->irq,
1068-
msm_gpio_irq_handler);
1069-
10701069
return 0;
10711070
}
10721071

0 commit comments

Comments
 (0)