From: Florian Fainelli <f.fainelli@gmail.com>
To: linus.walleij@linaro.org, gregory.0xf0@gmail.com
Cc: linux-gpio@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
devicetree@vger.kernel.org, Rob Herring <robh+dt@kernel.org>
Subject: interrupts properties and API usage with GPIO controllers/Device Tree
Date: Wed, 25 May 2016 14:45:00 -0700 [thread overview]
Message-ID: <57461CDC.603@gmail.com> (raw)
Hi Linus, Gregory,
Recently came across an use case that looks like the following:
gpio0: gpio@deadbeef {
compatible = "brcm,brcmstb-gpio";
#interrrupt-cells = <2>;
#gpio-cells = <2>;
gpio-controller;
interrupt-controller;
...
};
test@cafeb00b {
interrupt-parent = <&gpio0>;
interrupts = <99 3>;
};
The driver consuming the test node's interrupts property tries to get
the interrupt by using platform_get_irq() or of_irq_parse_and_map() and
in the case of the gpio-brcmstb.c, this fails because the interrupt is
out of range as flagged by kernel/irq/irqdomain.c::irq_domain_associate.
Unlike other GPIO provider drivers gpio-brcmstb.c, this driver registers
one gpiolib irqchip per each of its banks, and still uses the generic
map/unmap functions for its irq_domain_ops, so there is no way we can
provide a valid mapping outside of the gpio_to_irq() function
unfortunately since gpiochip_irq_map() does
So here are a few questions for either of you:
- is this a valid API and Device Tree use case: call
of_irq_parse_and_map on an "interrupts" property which has not been
acquired using the GPIO API and then gpio_to_irq? While gpio_to_irq()
works, are not we losing the second specifier in the interrupt cells
about what kind of interrupt type this is?
- would it be acceptable to export gpiochip_irq_map and
gpiochip_irq_export to make them accessible as helpers so we could just
wrap things a bit around or should I just open code the same things and
allow gpiochip_irqchip_add to be passed custom irq_domain_ops for instance?
Thanks!
--
Florian
WARNING: multiple messages have this Message-ID (diff)
From: f.fainelli@gmail.com (Florian Fainelli)
To: linux-arm-kernel@lists.infradead.org
Subject: interrupts properties and API usage with GPIO controllers/Device Tree
Date: Wed, 25 May 2016 14:45:00 -0700 [thread overview]
Message-ID: <57461CDC.603@gmail.com> (raw)
Hi Linus, Gregory,
Recently came across an use case that looks like the following:
gpio0: gpio at deadbeef {
compatible = "brcm,brcmstb-gpio";
#interrrupt-cells = <2>;
#gpio-cells = <2>;
gpio-controller;
interrupt-controller;
...
};
test at cafeb00b {
interrupt-parent = <&gpio0>;
interrupts = <99 3>;
};
The driver consuming the test node's interrupts property tries to get
the interrupt by using platform_get_irq() or of_irq_parse_and_map() and
in the case of the gpio-brcmstb.c, this fails because the interrupt is
out of range as flagged by kernel/irq/irqdomain.c::irq_domain_associate.
Unlike other GPIO provider drivers gpio-brcmstb.c, this driver registers
one gpiolib irqchip per each of its banks, and still uses the generic
map/unmap functions for its irq_domain_ops, so there is no way we can
provide a valid mapping outside of the gpio_to_irq() function
unfortunately since gpiochip_irq_map() does
So here are a few questions for either of you:
- is this a valid API and Device Tree use case: call
of_irq_parse_and_map on an "interrupts" property which has not been
acquired using the GPIO API and then gpio_to_irq? While gpio_to_irq()
works, are not we losing the second specifier in the interrupt cells
about what kind of interrupt type this is?
- would it be acceptable to export gpiochip_irq_map and
gpiochip_irq_export to make them accessible as helpers so we could just
wrap things a bit around or should I just open code the same things and
allow gpiochip_irqchip_add to be passed custom irq_domain_ops for instance?
Thanks!
--
Florian
next reply other threads:[~2016-05-25 21:45 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-05-25 21:45 Florian Fainelli [this message]
2016-05-25 21:45 ` interrupts properties and API usage with GPIO controllers/Device Tree Florian Fainelli
2016-05-27 14:23 ` Grygorii Strashko
2016-05-27 14:23 ` Grygorii Strashko
2016-05-31 8:49 ` Linus Walleij
2016-05-31 8:49 ` Linus Walleij
2016-05-31 9:51 ` Grygorii Strashko
2016-05-31 9:51 ` Grygorii Strashko
2016-05-31 8:48 ` Linus Walleij
2016-05-31 8:48 ` Linus Walleij
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=57461CDC.603@gmail.com \
--to=f.fainelli@gmail.com \
--cc=devicetree@vger.kernel.org \
--cc=gregory.0xf0@gmail.com \
--cc=linus.walleij@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-gpio@vger.kernel.org \
--cc=robh+dt@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.