Pinmux bindings proposal V2
From: tony@atomide.com (Tony Lindgren)
Date: 2012-01-27 17:37:47
Also in:
linux-devicetree, lkml
* Simon Glass [off-list ref] [120127 07:12]:
On Thu, Jan 26, 2012 at 6:21 PM, Tony Lindgren [off-list ref] wrote:quoted
Maybe we need two bindings: A minimal subset of what Stephen is suggesting that can handle 95% of the muxes with minimal overhead, then what you're suggesting for the few muxes that need multiple states?Perhaps that would work, it certainly deals nicely with making the rare cases less ugly if indeed they are rare. Of course a single binding that is not too ugly and still reasonably efficient would be best. I will have a think about this a bit more and see if anything leaps out. It's quite an interesting problem...
Just to try to recap what has come up so far: 1. We need to avoid bloating things for basic cases to initialize several hundred pins. 2. Some muxes need to define multiple states. 3. We need to pass a flag for each mux to know whether or not it can be freed after init. So how about let's do separate static and dynamic bindings, something like this: /* * Static init time only mux where * we only specify phandle to driver * and, offset of the mux, and the value. * These pins are discarded after init. * * Format: mux_ctrl offset value */ pinctrl-static = <&pmx_driver1 0x0020 0x1245 &pmx_driver2 0x0022 0x6578>; /* * Dynamic mux where the mux is kept around after * init and multiple states can be defined for * a mux as a subnode of the pinmux controller. * * Format: mux_phandle initial state */ pinctrl-dynamic = <&pmx_sdhci PMX_STATE_ENABLED &pmx_ehci_xcv PMX_STATE_ENABLED>; This would make pinctrl-static binding follow the same standard as GPIO binding and can be parsed easily with of_parse_phandle_with_args. Then for pinctrl-dynamic we can make a custom parser, and the binding can follow the more readable format as Simon posted. Regards, Tony