staging: mt7621-gpio: avoid to set up irqs if not defined in dts
If there is no interrupt defined in the dts 'irq_of_parse_and_map' returns 0 and we should't set up interrupts for each gpio chip in that case. Signed-off-by: Sergio Paracuellos <sergio.paracuellos@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
bfb623c5b0
commit
e4550f6e9a
@ -237,30 +237,32 @@ mediatek_gpio_bank_probe(struct platform_device *pdev, struct device_node *bank)
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* Manually request the irq here instead of passing a flow-handler
|
||||
* to gpiochip_set_chained_irqchip, because the irq is shared.
|
||||
*/
|
||||
ret = devm_request_irq(&pdev->dev, gpio->gpio_irq,
|
||||
mediatek_gpio_irq_handler, IRQF_SHARED,
|
||||
"mt7621", &rg->chip);
|
||||
if (gpio->gpio_irq) {
|
||||
/*
|
||||
* Manually request the irq here instead of passing a flow-handler
|
||||
* to gpiochip_set_chained_irqchip, because the irq is shared.
|
||||
*/
|
||||
ret = devm_request_irq(&pdev->dev, gpio->gpio_irq,
|
||||
mediatek_gpio_irq_handler, IRQF_SHARED,
|
||||
"mt7621", &rg->chip);
|
||||
|
||||
if (ret) {
|
||||
dev_err(&pdev->dev, "Error requesting IRQ %d: %d\n",
|
||||
gpio->gpio_irq, ret);
|
||||
return ret;
|
||||
if (ret) {
|
||||
dev_err(&pdev->dev, "Error requesting IRQ %d: %d\n",
|
||||
gpio->gpio_irq, ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = gpiochip_irqchip_add(&rg->chip, &mediatek_gpio_irq_chip,
|
||||
0, handle_simple_irq, IRQ_TYPE_NONE);
|
||||
if (ret) {
|
||||
dev_err(&pdev->dev, "failed to add gpiochip_irqchip\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
gpiochip_set_chained_irqchip(&rg->chip, &mediatek_gpio_irq_chip,
|
||||
gpio->gpio_irq, NULL);
|
||||
}
|
||||
|
||||
ret = gpiochip_irqchip_add(&rg->chip, &mediatek_gpio_irq_chip,
|
||||
0, handle_simple_irq, IRQ_TYPE_NONE);
|
||||
if (ret) {
|
||||
dev_err(&pdev->dev, "failed to add gpiochip_irqchip\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
gpiochip_set_chained_irqchip(&rg->chip, &mediatek_gpio_irq_chip,
|
||||
gpio->gpio_irq, NULL);
|
||||
|
||||
/* set polarity to low for all gpios */
|
||||
mtk_gpio_w32(rg, GPIO_REG_POL, 0);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user