Re: [PATCH 1/3] gpiolib: Add ability to get GPIO pin direction

From: Grant Likely
Date: Mon Feb 14 2011 - 12:26:43 EST


On Mon, Feb 14, 2011 at 10:08 AM, Alan Cox <alan@xxxxxxxxxxxxxxxxxxx> wrote:
>> > If a GPIO driver implements get_direction(), it is called in
>> > gpio_request() to set the initial direction of the pin accurately.
>>
>> I see Grant was just added as a GPIO maintainer, so added him on CC.
>>
>> Anything gating getting these 3 patches being picked up?
>
> We need four states for a gpio pin direction though. A pin can be
>
> - input
> - output

There are actually multiple output modes that a specific gpio
controller could implement, but the gpio api only has a boolean
understanding of output. I don't know if it is really worthwhile to
try and encode all the possible configurations in this API.

> - unknown (hardware lacks get functionality and it has not been set by
>  software yet)
> - alt_func (pin is in use for some other purpose)

What is the use-case for alt_func? From the point of view of a GPIO
driver, I don't think it cares if the pin has been dedicated to
something else. It can twiddle all it wants, but if the pin is routed
to something else then it won't have any external effects (pin mux is
often a separate logic block from the gpio controller). Also with
GPIOs, the engineers fiddling with them *really* needs to know what
the gpios are routed to. It is highly unlikely to have any kind of
automatic configuration of gpios; ie. if it isn't wired as a gpio,
then don't go twiddling it.

>
> (and being able to set them alt_func was proposed a while ago and I think
> wants revisiting judging by the number of platforms which use gpio, and
> in their own arch code are privately handling alt_func stuff)

Fair enough; convince me on alt_func. What is the use case that I'm missing?

g.
--
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/