summaryrefslogtreecommitdiff
path: root/Documentation/devicetree/bindings/clock/ti,lmk04832.yaml
blob: 13d7b3d03d84cef786efc53acd5d95460ea0b0af (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/clock/ti,lmk04832.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Texas Instruments LMK04832 Clock Controller

maintainers:
  - Liam Beguin <liambeguin@gmail.com>

description: |
  Devicetree binding for the LMK04832, a clock conditioner with JEDEC JESD204B
  support. The LMK04832 is pin compatible with the LMK0482x family.

  Link to datasheet, https://www.ti.com/lit/ds/symlink/lmk04832.pdf

properties:
  compatible:
    enum:
      - ti,lmk04832

  reg:
    maxItems: 1

  '#address-cells':
    const: 1

  '#size-cells':
    const: 0

  '#clock-cells':
    const: 1

  spi-max-frequency:
    maximum: 5000000

  clocks:
    items:
      - description: PLL2 reference clock.

  clock-names:
    items:
      - const: oscin

  reset-gpios:
    maxItems: 1

  ti,spi-4wire-rdbk:
    description: |
      Select SPI 4wire readback pin configuration.
      Available readback pins are,
        CLKin_SEL0 0
        CLKin_SEL1 1
        RESET 2
    $ref: /schemas/types.yaml#/definitions/uint32
    enum: [0, 1, 2]
    default: 1

  ti,vco-hz:
    description: Optional to set VCO frequency of the PLL in Hertz.

  ti,sysref-ddly:
    description: SYSREF digital delay value.
    $ref: /schemas/types.yaml#/definitions/uint32
    minimum: 8
    maximum: 8191
    default: 8

  ti,sysref-mux:
    description: |
      SYSREF Mux configuration.
      Available options are,
        Normal SYNC 0
        Re-clocked 1
        SYSREF Pulser 2
        SYSREF Continuous 3
    $ref: /schemas/types.yaml#/definitions/uint32
    enum: [0, 1, 2, 3]
    default: 3

  ti,sync-mode:
    description: SYNC pin configuration.
    $ref: /schemas/types.yaml#/definitions/uint32
    enum: [0, 1, 2]
    default: 1

  ti,sysref-pulse-count:
    description:
      Number of SYSREF pulses to send when SYSREF is not in continuous mode.
    $ref: /schemas/types.yaml#/definitions/uint32
    enum: [1, 2, 4, 8]
    default: 4

patternProperties:
  "@[0-9a-d]+$":
    type: object
    description:
      Child nodes used to configure output clocks.

    properties:
      reg:
        description:
          clock output identifier.
        minimum: 0
        maximum: 13

      ti,clkout-fmt:
        description:
          Clock output format.
          Available options are,
            Powerdown 0x00
            LVDS 0x01
            HSDS 6 mA 0x02
            HSDS 8 mA 0x03
            LVPECL 1600 mV 0x04
            LVPECL 2000 mV 0x05
            LCPECL 0x06
            CML 16 mA 0x07
            CML 24 mA 0x08
            CML 32 mA 0x09
            CMOS (Off/Inverted) 0x0a
            CMOS (Normal/Off) 0x0b
            CMOS (Inverted/Inverted) 0x0c
            CMOS (Inverted/Normal) 0x0d
            CMOS (Normal/Inverted) 0x0e
            CMOS (Normal/Normal) 0x0f
        $ref: /schemas/types.yaml#/definitions/uint32
        minimum: 0
        maximum: 15

      ti,clkout-sysref:
        description:
          Select SYSREF clock path for output clock.
        type: boolean

    required:
      - reg

    additionalProperties: false

required:
  - compatible
  - reg
  - '#clock-cells'
  - clocks
  - clock-names

additionalProperties: false

examples:
  - |
    clocks {
        lmk04832_oscin: oscin {
            compatible = "fixed-clock";

            #clock-cells = <0>;
            clock-frequency = <122880000>;
            clock-output-names = "lmk04832-oscin";
        };
    };

    spi {
        #address-cells = <1>;
        #size-cells = <0>;

        lmk04832: clock-controller@0 {
            #address-cells = <1>;
            #size-cells = <0>;

            reg = <0>;

            compatible = "ti,lmk04832";
            spi-max-frequency = <781250>;

            reset-gpios = <&gpio_lmk 0 0 0>;

            #clock-cells = <1>;
            clocks = <&lmk04832_oscin>;
            clock-names = "oscin";

            ti,spi-4wire-rdbk = <0>;
            ti,vco-hz = <2457600000>;

            assigned-clocks =
                <&lmk04832 0>, <&lmk04832 1>,
                <&lmk04832 2>, <&lmk04832 3>,
                <&lmk04832 4>,
                <&lmk04832 6>, <&lmk04832 7>,
                <&lmk04832 10>, <&lmk04832 11>;
            assigned-clock-rates =
                <122880000>, <384000>,
                <122880000>, <384000>,
                <122880000>,
                <153600000>, <384000>,
                <614400000>, <384000>;

            clkout0@0 {
                reg = <0>;
                ti,clkout-fmt = <0x01>; // LVDS
            };

            clkout1@1 {
                reg = <1>;
                ti,clkout-fmt = <0x01>; // LVDS
                ti,clkout-sysref;
            };
        };
    };