Thread (12 messages) 12 messages, 5 authors, 2021-02-06

Re: [PATCH v4 2/2] counter: add IRQ or GPIO based pulse counter

From: Linus Walleij <hidden>
Date: 2021-01-28 08:25:41
Also in: linux-iio, lkml

Hi Oleksij,

thanks for your patch!

On Tue, Jan 26, 2021 at 2:15 PM Oleksij Rempel [off-list ref] wrote:
+       priv->irq = platform_get_irq(pdev,  0);
+       if (priv->irq < 0) {
+               dev_err(dev, "failed to map GPIO to IRQ: %d\n", priv->irq);
+               return priv->irq;
+       }
+
+       priv->gpio = devm_gpiod_get_optional(dev, NULL, GPIOD_IN);
+       if (IS_ERR(priv->gpio))
+               return dev_err_probe(dev, PTR_ERR(priv->gpio), "failed to get gpio\n");
I would attempt to get the IRQ from the GPIO if not defined explicitly
in the device tree.

priv->gpio = devm_gpiod_get_optional(...)
if (priv->gpio) {
    /* Attempt to look up IRQ */
    irq = gpiod_to_irq(priv->irq);
}
priv->irq = platfform_get_irq(...)
if (priv->irq < 0 && irq > 0) {
    /* Use the GPIO-related IRQ */
    priv->irq = irq;
} else if (priv->irq < 0) {
   /* Error */
}

This way the example in the device tree binding which only defines
a GPIO and no interrupt will work if the GPIO chip provides an
IRQ mapping.

Yours.
Linus Walleij
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help