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

Stephen Warren swarren at wwwdotorg.org
Tue Aug 27 17:30:18 EDT 2013


On 08/27/2013 12:04 AM, boris brezillon wrote:
> On 27/08/2013 05:54, Stephen Warren wrote:
>> On 08/26/2013 12:45 PM, boris brezillon wrote:
>>> Hello Jean-Christophe,
>>>
>>> Le 26/08/2013 19:53, Jean-Christophe PLAGNIOL-VILLARD a écrit :
>>>> On 23:37 Sat 24 Aug     , Boris BREZILLON wrote:
>>>>> Add support for generic pin configuration to pinctrl-at91 driver.
>> ...
>>>>> a/Documentation/devicetree/bindings/pinctrl/atmel,at91-pinctrl.txt
>> ...
>>>>> configures various pad settings
>>>>>    such as pull-up, multi drive, etc.
>>>>>      Required properties for iomux controller:
>>>>> -- compatible: "atmel,at91rm9200-pinctrl"
>>>>> +- compatible: "atmel,at91rm9200-pinctrl" or
>>>>> "atmel,at91sam9x5-pinctrl".
>>>>> +  Add "generic-pinconf" to the compatible string list to use the
>>>>> generic pin
>> ...
>>>>> +pinctrl at fffff400 {
>>>>> +    #address-cells = <1>;
>>>>> +    #size-cells = <1>;
>>>>> +    ranges;
>>>>> +    compatible = "atmel,at91rm9200-pinctrl", "generic-pinconf",
>>>>> "simple-bus";
>>>> nack your break the backword compatibility
>>>>
>>>> if we use a old kernel with this new dt nothing will work
>>>> as the old kernel will never known the the "generic-pinconf" means
>>>> anything
>>> Your're right, I didn't think of this case (old kernel with new dt).
>> Well, just to be clear: If a new DT uses a new compatible value of any
>> kind, be it adding "generic-pinconf" or switching to "foo-yyy" rather
>> than "foo-yyy", it won't be compatible... That somewhat implies that you
>> can't ever replace an old binding with something new.
> 
> That's absolutely right, however the behaviour won't be the same in both
> cases.
> 
> 1) If your (new) dt defines its pinctrl using the "foo-pinconf"
> compatible string and
>     your (old) kernel does not support it, the pinctrl will never probe
> the pinctrl definitions.

True.

>     Moreover, if you want to define both old ("foo-pinctrl") and new
> ("foo-pinconf") pinctrl
>     definitions in your dt in order to support several kernel versions,
> nothing prevents you
>     from doing it.

I don't know if that will work well; what happens if a kernel supports
both the old and new compatible values, so that the new kernel is
compatible with old DTs?

> 2) In the other hand, if you use an additional "generic-pinconf"
> compatible string to signify
>     wether or not the pinctrl definition use the generic pinconf dt
> binding, the (old) kernel
>     will probe the pinctrl definitions, ignore the "generic-pinconf"
> string, and fail when parsing
>     the pinctrl configuration nodes (which are invalid pinctrl function
> nodes in the current dt binding).
>     We have the same problem when using the 'atmel,generic-pinconf'
> property inside a pinctrl node:
>     old kernels won't take this property into account.

True.




More information about the linux-arm-kernel mailing list