Thread (28 messages) 28 messages, 4 authors, 2016-11-04

Re: [PATCH 4/9] pinctrl: meson: allow gpio to request irq

From: Linus Walleij <hidden>
Date: 2016-10-20 19:21:09
Also in: linux-amlogic, linux-arm-kernel, linux-gpio, lkml

On Wed, Oct 19, 2016 at 12:08 PM, Jerome Brunet [off-list ref] wrote:
Add the ability for gpio to request irq from the gpio interrupt controller
if present. We have to specificaly that the parent interrupt controller is
the gpio interrupt controller because gpio on meson SoCs can't generate
interrupt directly on the GIC.

Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
(...)
+       select IRQ_DOMAIN
        select OF_GPIO
+       select OF_IRQ
(...)
+static int meson_gpio_to_hwirq(struct meson_bank *bank, unsigned int offset)
+{
+       unsigned int hwirq;
+
+       if (bank->irq_first < 0)
+               /* this bank cannot generate irqs */
+               return -1;
+
+       hwirq = offset - bank->first + bank->irq_first;
+
+       if (hwirq > bank->irq_last)
+               /* this pin cannot generate irqs */
+               return -1;
+
+       return hwirq;
+}
This is reimplementing irqdomain.
+static int meson_gpio_to_irq(struct gpio_chip *chip, unsigned int offset)
+{
(...)
+       hwirq = meson_gpio_to_hwirq(bank, offset);
+       if (hwirq < 0) {
+               dev_dbg(pc->dev, "no interrupt for pin %u\n", offset);
+               return 0;
+       }
Isn't this usecase (also as described in the cover letter) a textbook
example of when you should be using hierarchical irqdomain?

Please check with Marc et al on hierarchical irqdomains.

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