Binding for TI mux clock.

Binding status: Unstable - ABI compatibility may be broken in the future

This binding uses the common clock binding[1].  It assumes a
register-mapped multiplexer with multiple input clock signals or
parents, one of which can be selected as output.  This clock does not
gate or adjust the parent rate via a divider or multiplier.

By default the "clocks" property lists the parents in the same order
as they are programmed into the regster.  E.g:

	clocks = <&foo_clock>, <&bar_clock>, <&baz_clock>;

results in programming the register as follows:

register value		selected parent clock
0			foo_clock
1			bar_clock
2			baz_clock

Some clock controller IPs do not allow a value of zero to be programmed
into the register, instead indexing begins at 1.  The optional property
"index-starts-at-one" modified the scheme as follows:

register value		selected clock parent
1			foo_clock
2			bar_clock
3			baz_clock

The binding must provide the register to control the mux. Optionally
the number of bits to shift the control field in the register can be
supplied. If the shift value is missing it is the same as supplying
a zero shift.

[1] Documentation/devicetree/bindings/clock/clock-bindings.txt

Required properties:
- compatible : shall be "ti,mux-clock" or "ti,composite-mux-clock".
- #clock-cells : from common clock binding; shall be set to 0.
- clocks : link phandles of parent clocks
- reg : register offset for register controlling adjustable mux

Optional properties:
- ti,bit-shift : number of bits to shift the bit-mask, defaults to
  0 if not present
- ti,index-starts-at-one : valid input select programming starts at 1, not
  zero
- ti,set-rate-parent : clk_set_rate is propagated to parent clock,
  not supported by the composite-mux-clock subtype

Examples:

sys_clkin_ck: sys_clkin_ck@4a306110 {
	#clock-cells = <0>;
	compatible = "ti,mux-clock";
	clocks = <&virt_12000000_ck>, <&virt_13000000_ck>, <&virt_16800000_ck>, <&virt_19200000_ck>, <&virt_26000000_ck>, <&virt_27000000_ck>, <&virt_38400000_ck>;
	reg = <0x0110>;
	ti,index-starts-at-one;
};

abe_dpll_bypass_clk_mux_ck: abe_dpll_bypass_clk_mux_ck@4a306108 {
	#clock-cells = <0>;
	compatible = "ti,mux-clock";
	clocks = <&sys_clkin_ck>, <&sys_32k_ck>;
	ti,bit-shift = <24>;
	reg = <0x0108>;
};

mcbsp5_mux_fck: mcbsp5_mux_fck {
	#clock-cells = <0>;
	compatible = "ti,composite-mux-clock";
	clocks = <&core_96m_fck>, <&mcbsp_clks>;
	ti,bit-shift = <4>;
	reg = <0x02d8>;
};
