1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/clock/ti,lmk04832.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Texas Instruments LMK04832 Clock Controller
8
9maintainers:
10  - Liam Beguin <liambeguin@gmail.com>
11
12description: |
13  Devicetree binding for the LMK04832, a clock conditioner with JEDEC JESD204B
14  support. The LMK04832 is pin compatible with the LMK0482x family.
15
16  Link to datasheet, https://www.ti.com/lit/ds/symlink/lmk04832.pdf
17
18properties:
19  compatible:
20    enum:
21      - ti,lmk04832
22
23  reg:
24    maxItems: 1
25
26  '#address-cells':
27    const: 1
28
29  '#size-cells':
30    const: 0
31
32  '#clock-cells':
33    const: 1
34
35  spi-max-frequency:
36    maximum: 5000000
37
38  clocks:
39    items:
40      - description: PLL2 reference clock.
41
42  clock-names:
43    items:
44      - const: oscin
45
46  reset-gpios:
47    maxItems: 1
48
49  ti,spi-4wire-rdbk:
50    description: |
51      Select SPI 4wire readback pin configuration.
52      Available readback pins are,
53        CLKin_SEL0 0
54        CLKin_SEL1 1
55        RESET 2
56    $ref: /schemas/types.yaml#/definitions/uint32
57    enum: [0, 1, 2]
58    default: 1
59
60  ti,vco-hz:
61    description: Optional to set VCO frequency of the PLL in Hertz.
62
63  ti,sysref-ddly:
64    description: SYSREF digital delay value.
65    $ref: /schemas/types.yaml#/definitions/uint32
66    minimum: 8
67    maximum: 8191
68    default: 8
69
70  ti,sysref-mux:
71    description: |
72      SYSREF Mux configuration.
73      Available options are,
74        Normal SYNC 0
75        Re-clocked 1
76        SYSREF Pulser 2
77        SYSREF Continuous 3
78    $ref: /schemas/types.yaml#/definitions/uint32
79    enum: [0, 1, 2, 3]
80    default: 3
81
82  ti,sync-mode:
83    description: SYNC pin configuration.
84    $ref: /schemas/types.yaml#/definitions/uint32
85    enum: [0, 1, 2]
86    default: 1
87
88  ti,sysref-pulse-count:
89    description:
90      Number of SYSREF pulses to send when SYSREF is not in continuous mode.
91    $ref: /schemas/types.yaml#/definitions/uint32
92    enum: [1, 2, 4, 8]
93    default: 4
94
95patternProperties:
96  "@[0-9a-d]+$":
97    type: object
98    description:
99      Child nodes used to configure output clocks.
100
101    properties:
102      reg:
103        description:
104          clock output identifier.
105        minimum: 0
106        maximum: 13
107
108      ti,clkout-fmt:
109        description:
110          Clock output format.
111          Available options are,
112            Powerdown 0x00
113            LVDS 0x01
114            HSDS 6 mA 0x02
115            HSDS 8 mA 0x03
116            LVPECL 1600 mV 0x04
117            LVPECL 2000 mV 0x05
118            LCPECL 0x06
119            CML 16 mA 0x07
120            CML 24 mA 0x08
121            CML 32 mA 0x09
122            CMOS (Off/Inverted) 0x0a
123            CMOS (Normal/Off) 0x0b
124            CMOS (Inverted/Inverted) 0x0c
125            CMOS (Inverted/Normal) 0x0d
126            CMOS (Normal/Inverted) 0x0e
127            CMOS (Normal/Normal) 0x0f
128        $ref: /schemas/types.yaml#/definitions/uint32
129        minimum: 0
130        maximum: 15
131
132      ti,clkout-sysref:
133        description:
134          Select SYSREF clock path for output clock.
135        type: boolean
136
137    required:
138      - reg
139
140    additionalProperties: false
141
142required:
143  - compatible
144  - reg
145  - '#clock-cells'
146  - clocks
147  - clock-names
148
149additionalProperties: false
150
151examples:
152  - |
153    clocks {
154        lmk04832_oscin: oscin {
155            compatible = "fixed-clock";
156
157            #clock-cells = <0>;
158            clock-frequency = <122880000>;
159            clock-output-names = "lmk04832-oscin";
160        };
161    };
162
163    spi0 {
164        #address-cells = <1>;
165        #size-cells = <0>;
166
167        lmk04832: clock-controller@0 {
168            #address-cells = <1>;
169            #size-cells = <0>;
170
171            reg = <0>;
172
173            compatible = "ti,lmk04832";
174            spi-max-frequency = <781250>;
175
176            reset-gpios = <&gpio_lmk 0 0 0>;
177
178            #clock-cells = <1>;
179            clocks = <&lmk04832_oscin>;
180            clock-names = "oscin";
181
182            ti,spi-4wire-rdbk = <0>;
183            ti,vco-hz = <2457600000>;
184
185            assigned-clocks =
186                <&lmk04832 0>, <&lmk04832 1>,
187                <&lmk04832 2>, <&lmk04832 3>,
188                <&lmk04832 4>,
189                <&lmk04832 6>, <&lmk04832 7>,
190                <&lmk04832 10>, <&lmk04832 11>;
191            assigned-clock-rates =
192                <122880000>, <384000>,
193                <122880000>, <384000>,
194                <122880000>,
195                <153600000>, <384000>,
196                <614400000>, <384000>;
197
198            clkout0@0 {
199                reg = <0>;
200                ti,clkout-fmt = <0x01>; // LVDS
201            };
202
203            clkout1@1 {
204                reg = <1>;
205                ti,clkout-fmt = <0x01>; // LVDS
206                ti,clkout-sysref;
207            };
208        };
209    };
210