Thread (1 message) 1 message, 1 author, 2014-07-25

Re: [[RFC PATCH]] gpio: gpio-mxc: make sure gpio is input when request IRQ

From: Markus Niebel <hidden>
Date: 2014-07-25 12:52:05
Also in: linux-arm-kernel

Am 25.07.2014 13:38, wrote Linus Walleij:
On Thu, Jul 24, 2014 at 10:12 AM, Markus Niebel
[off-list ref] wrote:
quoted
Am 23.07.2014 18:14, wrote Linus Walleij:
quoted
quoted
So always prepare the hardware and make it ready for action in respective
callbacks from the GPIO and irqchip APIs. Do not rely on gpiod_to_irq() having
been called first.
So a gpio driver is responsible to read status of gpio lines and flag any gpio line
currently configured as out (base on the information read from hardware registers)
on driver probe time - correct?
I don't think anyone reads that information explicitly to set up
these flags.

Drivers just leave the pins in their power-on maiden state without
trying to figure out how they're set-up. But as you say, if you call
gpiod_get_direction() on them, the flag gets set up indeed.

So usually these flags are set by code, calling
gpiod_[get/set]_direction().
Then they do get flagged as outputs or inputs.
quoted
If yes is the driver allowed to call
gpiod_get_direction() to have the FLAG_IS_OUT set in the gpiolib layer?
I don't know if it'd be a good idea to loop over all gpios in a new
irqchip and fetch the direction just to get the flags right, so far
we haven't done that and I don't know what the usecase would be.
I've came to a situation where it would have been helpful to know - bootloader
configured a pin as output and linux tried to configure the pin as IRQ input.
*YES I KNOW THIS IS NOT CORRECT* but it took some time to see, what happened.
If we need that we should do it in gpiolib for all drivers don't you
think?
A pragmatic / lean solution would be to deny the IRQ configuration when
seeing the pin configured as output in hardware and print out an error
on the gpio driver level.
But then we need a rationale for doing it, other than it's nice :-)
It is already called on-the-fly by debugfs when a user needs that
info.
See above, I think an error on a misconfigured system would be enough.
Maybe the documentation for gpio drivers should have a hint for driver
implementors.

So first step would be to convert the driver to the irqchip helper and then
add calls to gpiod_[un]lock_as_irq at the right places.

Will try to do that after my holiday.
Yours,
Linus Walleij
Yours,

Markus Niebel
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help