| 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>; | |
| }; |