Re: Pinmux bindings proposal V2

From: Tony Lindgren
Date: Fri Jan 27 2012 - 12:37:44 EST


* Simon Glass <sjg@xxxxxxxxxxxx> [120127 07:12]:
>
> On Thu, Jan 26, 2012 at 6:21 PM, Tony Lindgren <tony@xxxxxxxxxxx> wrote:
> >
> > 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
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/