Re: [PATCH v3] gpio: interrupt consistency check for OF GPIO IRQs

From: Tomasz Figa
Date: Mon Nov 11 2013 - 14:38:19 EST


On Monday 11 of November 2013 12:33:20 Stephen Warren wrote:
> On 11/11/2013 12:17 PM, Gerlando Falauto wrote:
> > Hi Stephan,
> >
> > On 11/11/2013 07:53 PM, Stephen Warren wrote:
> >> On 11/11/2013 11:28 AM, Gerlando Falauto wrote:
> >>> Hi everyone,
> >>>
> >>> [jumping in on an old discussion]
> >>>
> >>> On 09/09/2013 06:19 PM, Mark Brown wrote:
> >>>> On Wed, Sep 04, 2013 at 02:16:36PM -0600, Stephen Warren wrote:
> >>>>> On 09/04/2013 03:05 AM, Lars Poeschel wrote:
> >>>>
> >>>>>> The driver that tries to use the GPIO requested by this patch before
> >>>>>> HAS to
> >>>>>> fail. This is exactly the intention of this patch. We don't want the
> >>>>>> GPIO to
> >>>>>> be requested any more, if it is used as an interrupt pin.
> >>>>
> >>>>> That will break existing drivers. There are drivers that request the
> >>>>> same GPIO and IRQ. IIRC, the SDHCI CD (Card Detect) GPIO is requested
> >>>>> that way.
> >>>>
> >>>> Yes, plus input devices and audio jack detection among others. This
> >>>> pattern is very common if the GPIO is actually being used as a GPIO, an
> >>>> edge triggered interrupt is used to flag when something happens and the
> >>>> state is determined by reading the GPIO state (often with some
> >>>> debounce).
> >>>
> >>> I actually came across this thread while looking for an answer to the
> >>> following (apparently trivial) question:
> >>>
> >>> If you were to write a new driver & binding, what would be, in general,
> >>> the recommended DT binding for a cascade interrupt controller (or any
> >>> other peripheral, for that matter), which is connected through a GPIO
> >>> (to be used as IRQ)?
> >>>
> >>> a) Through gpios = <&gpio0 N>
> >>> b) through interrupt-parent = <&gpio0> & interrupts <N
> >>> IRQ_TYPE_LEVEL_LOW>, or
> >>> c) both?
> >>
> >> (b) alone.
> >>
> >> From the perspective of the child interrupt controller, its output is
> >> purely an interrupt. The fact that the parent interrupt controller could
> >> use that pin as a GPIO in some other context (e.g. on a different board)
> >> isn't something that the child interrupt controller should know/care
> >> about.
> >>
> >
> > Thanks for your answer. So it should be the parent driver to proactively
> > configure the GPIO as input, active high etc..., when an IRQ for its
> > GPIOs is requested, right?
>
> That was the conclusion of this thread, or a similar thread, yes.

I would only add that settings, such as pull up/down control that depends
on the chip that drives the interrupt pin (i.e. the child interrupt
controller), are usually configured using pin control bindings.

Best regards,
Tomasz

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/