[PATCH 3/5] gpio/omap: Add DT support to GPIO driver
Linus Walleij
linus.walleij at linaro.org
Fri May 3 10:35:28 EDT 2013
On Fri, Apr 26, 2013 at 11:25 PM, Jon Hunter <jon-hunter at ti.com> wrote:
> On 04/26/2013 02:27 AM, Linus Walleij wrote:
>> You will just have to give the xlate function information about which
>> GPIOs are used as IRQs only, and only request the GPIO on these.
>
> That should not be necessary. The xlate is only called in the case where
> the gpio controller is declared as the interrupt controller in the
> device tree source ...
Sorry I don't understand this. Irqdomains are not device tree
concepts. Why would it only be called if it was declared such
or such in the device tree?
> eth at 0 {
> compatible = "ks8851";
> ...
> interrupt-parent = <&gpio2>;
> interrupts = <2 8>; /* gpio line 34, low triggered */
> ...
> };
>
> So in the case where you have a driver call gpio_request() and then
> request_irq(), in the device tree source, the gpio controller will not
> be declared as an interrupt controller. It will just list the gpios ...
And how do you get from there to the conclusion that
gpio_to_irq() will not ever be called, maybe by
some other driver than the ethernet?
> sdhci at c8000200 {
> ...
> cd-gpios = <&gpio 69 0>; /* gpio PI5 */
> wp-gpios = <&gpio 57 0>; /* gpio PH1 */
> ...
> };
Like if this driver wants to set up an IRQ?
>> It all comes back to this: keep all applicable knowledge in the
>> system, so it can make proper decisions, don't try to create
>> mechanisms that will half-guess things.
>
> Agreed. However the xlate looks like a good place to request the gpio
> without needing to add these "input-hogs" or any other platform code. So
> if this is not considered abuse of the xlate, then it seems like an
> ideal solution. I have been also implementing a generic xlate so that we
> don't need to have a xlate for each platform as well.
I'm still not following. Maybe I'm just too stupid...
How do you *avoid* requesting the GPIO in the translation
for a certain IRQ if the driver first issues gpio_request() and
then goes on to perform gpio_to_irq() itself?
Yours,
Linus Walleij
More information about the linux-arm-kernel
mailing list