Re: Pinmux bindings proposal
From: Thomas Abraham <hidden>
Date: 2012-01-20 16:17:52
Also in:
linux-arm-kernel, lkml
On 20 January 2012 15:35, Tony Lindgren [off-list ref] wrote:
* Thomas Abraham [off-list ref] [120119 10:05]:quoted
On 19 January 2012 23:50, Tony Lindgren [off-list ref] wrote: I would like to understand the need for populating the pinmux/pingroups tables from dt. The question here is when we have something like pins = <&pinctrl0 0x0030 0x15 0x15 0x7>; which specifies the values that need to be written to the hardware registers, would populating pinmux/pingroup tables from dt required. The SoC specific pinctrl driver can provide a way (with the help of pinctrl core) to translate these values and write to corresponding hardware registers. Is there any particular reason for populating the pinmux/pingroups tables from dt?Hmm I see. Yes it's still needed as we only want to parse the DT once because it's slower unless it was one time only configuration during init.
Ok. The time spent on searching for the pin-config property can be reduced by having the device driver (say, i2c) keep a pointer to all the pinconfig properties in its node. The next time a driver needs to reconfigure the pins, the search time can be reduced. The time to parse the property values though would still be applicable. But I would still not opt to build pinmux/pinconfig/pindesc tables from dt.
If you only need to set pins once during the init, then we could add an option for freeing all or most pins after init. That's what we have for the current mach-omap2 mux framework as only few pins need to be dynamically remuxed. That will require some changes to the pinctrl framework though. We would need flags for each pin from DT for init_only/dynamic. Regards, Tony
Thanks, Thomas.