[RFC PATCH 2/3] pinctrl: at91: add support for generic pinconf

Stephen Warren swarren at wwwdotorg.org
Tue Aug 27 17:35:07 EDT 2013


On 08/27/2013 12:40 AM, boris brezillon wrote:
> On 27/08/2013 05:57, Stephen Warren wrote:
>> On 08/26/2013 11:17 AM, boris brezillon wrote:
>>> On 26/08/2013 18:53, Stephen Warren wrote:
>>>> On 08/24/2013 03:37 PM, Boris BREZILLON wrote:
>>>>> Add support for generic pin configuration to pinctrl-at91 driver.
>>>>> diff --git
>>>>> a/Documentation/devicetree/bindings/pinctrl/atmel,at91-pinctrl.txt
>>>>> b/Documentation/devicetree/bindings/pinctrl/atmel,at91-pinctrl.txt
>>>>>    Required properties for iomux controller:
>>>>> -- compatible: "atmel,at91rm9200-pinctrl"
>>>>> +- compatible: "atmel,at91rm9200-pinctrl" or
>>>>> "atmel,at91sam9x5-pinctrl".
>>>> You seem to also be adding a second chip name to the list here,
>>>> which is
>>>> more than the patch subject/description imply you're doing...
>>> This is an update of the documentation:
>>> "atmel,at91sam9x5-pinctrl" compatible is already used in the pinctrl
>>> driver but the documention
>>> was not updated.
>>>
>>> But I agree, this should not be part of this series.
>>>
>>>>> +  Add "generic-pinconf" to the compatible string list to use the
>>>>> generic pin
>>>>> +  configuration syntax.
>>>> "generic-pinconf" is too generic of a compatible value for this binding
>>>> to define.
>>>>
>>>> Instead, I think you want to either:
>>>>
>>>> a)
>>>>
>>>> Use compatible="atmel,at91rm9200-pinctrl" for the old binding,
>>>> use compatible="atmel,at91rm9200-pinctrl-generic" for the new binding
>>>>
>>>> or:
>>>>
>>>> b)
>>>>
>>>> Define Boolean property atmel,generic-pinconf (perhaps a better name
>>>> could be chosen?). If it's not present, parse the node assuming the old
>>>> binding. If it is present, parse the node assuming the new binding.
>>>>
>>> Okay.
>>>
>>> I thought this property string could be generic as it may concern other
>>> drivers too
>>> (in order to keep compatibility with old dt ABI and add support the
>>> generic pinconf binding).
>>>
>>> Anyway, I prefer the first proposition.
>>>
>>> pinctrl single driver is already using these names:
>>>
>>> |compatible = "pinctrl-single" for non generic pinconf binding
>>> ||compatible = "pinconf-single" ||for generic pinconf binding|
>>>
>>> So I think we should use something similar:
>>>
>>> |compatible = "atmel,at91xx-pinctrl" for non generic pinconf binding
>>> ||compatible = "|||atmel,at91xx-|pinconf" ||for generic pinconf binding|
>>>
>>> What do you think ?
>> Hmmm. It is a little odd to switch out the compatible value and invent a
>> new binding for the same HW. Isn't it possible to define both sets of
>> properties in the binding, and have drivers look for either?
>>
> 
> Do you mean something like:
> 
> atmel,pins = <xxx>;                /* current dt binding */
> atmel,generic-pins = <yyy>;    /* new dt binding */
> 
> If that's what you had in mind, it will be a little bit tricky to
> handle, because AFAIK the pinconf_ops
> callbacks do not give me any element I could use to deduce the type of
> pinconf (generic or
> native).
> This implies I have to know early during the probe process which kind of
> binding is in use.
> 
> Please tell me if I missed some key points, and this can be easily done.

It's probably most compatible to keep all the existing properties, and
just add new properties for new features.



More information about the linux-arm-kernel mailing list