1*5fbe6f51SAndreas Kemnade# SPDX-License-Identifier: GPL-2.0-only 2*5fbe6f51SAndreas Kemnade%YAML 1.2 3*5fbe6f51SAndreas Kemnade--- 4*5fbe6f51SAndreas Kemnade$id: http://devicetree.org/schemas/clock/ti/ti,mux-clock.yaml# 5*5fbe6f51SAndreas Kemnade$schema: http://devicetree.org/meta-schemas/core.yaml# 6*5fbe6f51SAndreas Kemnade 7*5fbe6f51SAndreas Kemnadetitle: Texas Instruments mux clock 8*5fbe6f51SAndreas Kemnade 9*5fbe6f51SAndreas Kemnademaintainers: 10*5fbe6f51SAndreas Kemnade - Tero Kristo <kristo@kernel.org> 11*5fbe6f51SAndreas Kemnade 12*5fbe6f51SAndreas Kemnadedescription: | 13*5fbe6f51SAndreas Kemnade This clock assumes a register-mapped multiplexer with multiple inpt clock 14*5fbe6f51SAndreas Kemnade signals or parents, one of which can be selected as output. This clock does 15*5fbe6f51SAndreas Kemnade not gate or adjust the parent rate via a divider or multiplier. 16*5fbe6f51SAndreas Kemnade 17*5fbe6f51SAndreas Kemnade By default the "clocks" property lists the parents in the same order 18*5fbe6f51SAndreas Kemnade as they are programmed into the register. E.g: 19*5fbe6f51SAndreas Kemnade 20*5fbe6f51SAndreas Kemnade clocks = <&foo_clock>, <&bar_clock>, <&baz_clock>; 21*5fbe6f51SAndreas Kemnade 22*5fbe6f51SAndreas Kemnade Results in programming the register as follows: 23*5fbe6f51SAndreas Kemnade 24*5fbe6f51SAndreas Kemnade register value selected parent clock 25*5fbe6f51SAndreas Kemnade 0 foo_clock 26*5fbe6f51SAndreas Kemnade 1 bar_clock 27*5fbe6f51SAndreas Kemnade 2 baz_clock 28*5fbe6f51SAndreas Kemnade 29*5fbe6f51SAndreas Kemnade Some clock controller IPs do not allow a value of zero to be programmed 30*5fbe6f51SAndreas Kemnade into the register, instead indexing begins at 1. The optional property 31*5fbe6f51SAndreas Kemnade "index-starts-at-one" modified the scheme as follows: 32*5fbe6f51SAndreas Kemnade 33*5fbe6f51SAndreas Kemnade register value selected clock parent 34*5fbe6f51SAndreas Kemnade 1 foo_clock 35*5fbe6f51SAndreas Kemnade 2 bar_clock 36*5fbe6f51SAndreas Kemnade 3 baz_clock 37*5fbe6f51SAndreas Kemnade 38*5fbe6f51SAndreas Kemnade The binding must provide the register to control the mux. Optionally 39*5fbe6f51SAndreas Kemnade the number of bits to shift the control field in the register can be 40*5fbe6f51SAndreas Kemnade supplied. If the shift value is missing it is the same as supplying 41*5fbe6f51SAndreas Kemnade a zero shift. 42*5fbe6f51SAndreas Kemnade 43*5fbe6f51SAndreas Kemnadeproperties: 44*5fbe6f51SAndreas Kemnade compatible: 45*5fbe6f51SAndreas Kemnade enum: 46*5fbe6f51SAndreas Kemnade - ti,mux-clock 47*5fbe6f51SAndreas Kemnade - ti,composite-mux-clock 48*5fbe6f51SAndreas Kemnade 49*5fbe6f51SAndreas Kemnade "#clock-cells": 50*5fbe6f51SAndreas Kemnade const: 0 51*5fbe6f51SAndreas Kemnade 52*5fbe6f51SAndreas Kemnade clocks: true 53*5fbe6f51SAndreas Kemnade 54*5fbe6f51SAndreas Kemnade clock-output-names: 55*5fbe6f51SAndreas Kemnade maxItems: 1 56*5fbe6f51SAndreas Kemnade 57*5fbe6f51SAndreas Kemnade reg: 58*5fbe6f51SAndreas Kemnade maxItems: 1 59*5fbe6f51SAndreas Kemnade 60*5fbe6f51SAndreas Kemnade ti,bit-shift: 61*5fbe6f51SAndreas Kemnade $ref: /schemas/types.yaml#/definitions/uint32 62*5fbe6f51SAndreas Kemnade description: 63*5fbe6f51SAndreas Kemnade Number of bits to shift the bit-mask 64*5fbe6f51SAndreas Kemnade maximum: 31 65*5fbe6f51SAndreas Kemnade default: 0 66*5fbe6f51SAndreas Kemnade 67*5fbe6f51SAndreas Kemnade ti,index-starts-at-one: 68*5fbe6f51SAndreas Kemnade type: boolean 69*5fbe6f51SAndreas Kemnade description: 70*5fbe6f51SAndreas Kemnade Valid input select programming starts at 1, not zero 71*5fbe6f51SAndreas Kemnade 72*5fbe6f51SAndreas Kemnade ti,set-rate-parent: 73*5fbe6f51SAndreas Kemnade type: boolean 74*5fbe6f51SAndreas Kemnade description: 75*5fbe6f51SAndreas Kemnade clk_set_rate is propagated to parent clock, 76*5fbe6f51SAndreas Kemnade not supported by the composite-mux-clock subtype. 77*5fbe6f51SAndreas Kemnade 78*5fbe6f51SAndreas Kemnade ti,latch-bit: 79*5fbe6f51SAndreas Kemnade $ref: /schemas/types.yaml#/definitions/uint32 80*5fbe6f51SAndreas Kemnade description: 81*5fbe6f51SAndreas Kemnade Latch the mux value to HW, only needed if the register 82*5fbe6f51SAndreas Kemnade access requires this. As an example, dra7x DPLL_GMAC H14 muxing 83*5fbe6f51SAndreas Kemnade implements such behavior. 84*5fbe6f51SAndreas Kemnade maximum: 31 85*5fbe6f51SAndreas Kemnade 86*5fbe6f51SAndreas Kemnadeif: 87*5fbe6f51SAndreas Kemnade properties: 88*5fbe6f51SAndreas Kemnade compatible: 89*5fbe6f51SAndreas Kemnade contains: 90*5fbe6f51SAndreas Kemnade const: ti,composite-mux-clock 91*5fbe6f51SAndreas Kemnadethen: 92*5fbe6f51SAndreas Kemnade properties: 93*5fbe6f51SAndreas Kemnade ti,set-rate-parent: false 94*5fbe6f51SAndreas Kemnade 95*5fbe6f51SAndreas Kemnaderequired: 96*5fbe6f51SAndreas Kemnade - compatible 97*5fbe6f51SAndreas Kemnade - "#clock-cells" 98*5fbe6f51SAndreas Kemnade - clocks 99*5fbe6f51SAndreas Kemnade - reg 100*5fbe6f51SAndreas Kemnade 101*5fbe6f51SAndreas KemnadeadditionalProperties: false 102*5fbe6f51SAndreas Kemnade 103*5fbe6f51SAndreas Kemnadeexamples: 104*5fbe6f51SAndreas Kemnade - | 105*5fbe6f51SAndreas Kemnade bus { 106*5fbe6f51SAndreas Kemnade #address-cells = <1>; 107*5fbe6f51SAndreas Kemnade #size-cells = <0>; 108*5fbe6f51SAndreas Kemnade 109*5fbe6f51SAndreas Kemnade clock-controller@110 { 110*5fbe6f51SAndreas Kemnade compatible = "ti,mux-clock"; 111*5fbe6f51SAndreas Kemnade reg = <0x0110>; 112*5fbe6f51SAndreas Kemnade #clock-cells = <0>; 113*5fbe6f51SAndreas Kemnade clocks = <&virt_12000000_ck>, <&virt_13000000_ck>, <&virt_16800000_ck>; 114*5fbe6f51SAndreas Kemnade ti,index-starts-at-one; 115*5fbe6f51SAndreas Kemnade ti,set-rate-parent; 116*5fbe6f51SAndreas Kemnade }; 117*5fbe6f51SAndreas Kemnade 118*5fbe6f51SAndreas Kemnade clock-controller@120 { 119*5fbe6f51SAndreas Kemnade compatible = "ti,composite-mux-clock"; 120*5fbe6f51SAndreas Kemnade reg = <0x0120>; 121*5fbe6f51SAndreas Kemnade #clock-cells = <0>; 122*5fbe6f51SAndreas Kemnade clocks = <&core_96m_fck>, <&mcbsp_clks>; 123*5fbe6f51SAndreas Kemnade ti,bit-shift = <4>; 124*5fbe6f51SAndreas Kemnade }; 125*5fbe6f51SAndreas Kemnade }; 126