Tegra pinmux Device Tree support

Grant Likely grant.likely at secretlab.ca
Tue Aug 9 16:43:43 EDT 2011


On Tue, Aug 09, 2011 at 09:18:15PM +0100, Jamie Iles wrote:
> Hi Grant,
> 
> On Tue, Aug 09, 2011 at 11:34:28AM -0600, Grant Likely wrote:
> > We talked about this a bit at Linaro connect.  Outside of the more
> > complex runtime-reconfiguration of pin mux, there is a general need
> > for arbitrary initialization sequences to registers.  Also, pretty
> > much exactly what you need for tegra is needed for imx, omap and many
> > others.  The though was, rather than trying to come up with some kind
> > of pinmux-specific binding for pin states, which could end up being
> > very verbose if everything was split out into properties, we could
> > instead have a binding for register initialization sequences.
> > Something like this:
> > 
> > 	pinmux-initseq = <reg1 value1> <reg1 value2> ...;
> > 
> > And then add some macros for DTC to make it easier to define things
> > like pinmux setup tables.  Although the binding above is probably too
> > simple and naive.
> 
> Unfortunately we have devices where the pinmux registers aren't directly 
> memory mapped so I'm not sure that this would work for our devices 
> (which admittedly don't have a friendly muxing configuration...).  We 
> don't have a single way of muxing pins so at the moment we have a fairly 
> hideous set of structures and macros to allow us to create smallish 
> definitions of pins, but I can't see a nice way to express this in the 
> DT.
> 
> At the moment I have a simple pinmux API that takes the pin name and 
> setting name as strings, so I was thinking for a simple binding (for 
> configuration) I could have something like:
> 
> 	pinmux {
> 		pinmux-decode0 = "decode";
> 		pinmux-decode1 = "gpio";
> 	};
> 
> I remember in another thread you mentioned the possibility of building 
> some tables and embedding the binary data in the DT, but that has 
> potential problems with versioning of the structures.

Structure/binding versioning is easy.  If it really is necessary to
change the binding in an incompatible way, then change the compatible
value too.

g.




More information about the linux-arm-kernel mailing list