Subject: [PATCH] pinctrl: Add generic pinctrl-simple driver that supports omap2+ padconf

From: [email-masked] (Stephen Warren)
Date: Thu, 10 May 2012 11:05:23 -0600

On 05/09/2012 02:49 PM, Tony Lindgren wrote:
> * Stephen Warren <[email-masked]> [120509 13:22]:
>> On 05/04/2012 04:08 PM, Tony Lindgren wrote:
>>> * Stephen Warren <[email-masked]> [120504 11:59]:
>>>> On 05/04/2012 10:34 AM, Tony Lindgren wrote:
>>>>> * Jean-Christophe PLAGNIOL-VILLARD <[email-masked]> [120504 08:58]:
>>>>>> On 08:03 Fri 04 May     , Tony Lindgren wrote:
>>>>>>>>
>>>>>>>> so I was thinking to do like on gpio
>>>>>>>>
>>>>>>>> uart {
>>>>>>>> 	pin = < &pioA 12 {pararms} >
>>>>>>>>
>>>>>>>> }
>>>>>>>
>>>>>>> Hmm I assume the "12" above the gpio number?
>>>>>> no pin number in the bank because it could not be gpio
>>>>>
>>>>> Yes OK, but pin number 12 in the gpio bank, not in the mux register.
>>>>> Got it.
>>>>
>>>> I'd prefer to avoid any references to GPIOs here; not all muxable pins
>>>> are GPIOs and not all GPIOs are muxable pins. Lets keep the two concepts
>>>> independent.
>>>
>>> And it seems that &pioA 12 is not always enough information for the pinctrl
>>> driver to request a GPIO. So it's best to specify it separately.
>>
>> Why would a pinctrl driver "request a GPIO"?
> 
> Hmm what would pinctrl_request_gpio do if the GPIO driver is separate driver?

Well, that's a GPIO driver requesting a GPIO from the pinctrl system,
rather than the pinctrl driver requesting a GPIO (sorry to be picky).

It wasn't at all obvious to me from your binding proposal that you
intended the pinctrl-simple driver to support the GPIO operations at
all. If you do want this, I think you'd need some properties (perhaps
some kind of explicit table) in order to set up the GPIO ID -> pinctrl
pin ID mapping. I don't recall seeing those; did I just miss them? I
think we'd want this to be explicit because:

a) It may well be the case that not all users of pinctrl-simple actually
mux/control GPIOs at all. It's certainly possible to only mux "special
functions", and have dedicated pins for a GPIO controller.

b) Even when GPIOs do come into the picture, it may be that only some of
the pins are available as GPIOs.

Also, were you intending pinctrl-simple to actually be the GPIO
controller itself? That'd be another case that one might consider fairly
simple, but then extends to being gpio-simple as well as pinctrl-simple...