[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