xref: /linux/Documentation/devicetree/bindings/clock/silabs,si5341.yaml (revision 522ba450b56fff29f868b1552bdc2965f55de7ed)
1b02011c8SRob Herring (Arm)# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2b02011c8SRob Herring (Arm)%YAML 1.2
3b02011c8SRob Herring (Arm)---
4b02011c8SRob Herring (Arm)$id: http://devicetree.org/schemas/silabs,si5341.yaml#
5b02011c8SRob Herring (Arm)$schema: http://devicetree.org/meta-schemas/core.yaml#
6b02011c8SRob Herring (Arm)
7b02011c8SRob Herring (Arm)title: Silicon Labs Si5340/1/2/4/5 programmable i2c clock generator
8b02011c8SRob Herring (Arm)
9b02011c8SRob Herring (Arm)maintainers:
10b02011c8SRob Herring (Arm)  - Mike Looijmans <mike.looijmans@topic.nl>
11b02011c8SRob Herring (Arm)
12b02011c8SRob Herring (Arm)description: >
13b02011c8SRob Herring (Arm)  Silicon Labs Si5340, Si5341 Si5342, Si5344 and Si5345 programmable i2c clock
14b02011c8SRob Herring (Arm)  generator.
15b02011c8SRob Herring (Arm)
16b02011c8SRob Herring (Arm)  Reference
17b02011c8SRob Herring (Arm)  [1] Si5341 Data Sheet
18b02011c8SRob Herring (Arm)      https://www.silabs.com/documents/public/data-sheets/Si5341-40-D-DataSheet.pdf
19b02011c8SRob Herring (Arm)  [2] Si5341 Reference Manual
20b02011c8SRob Herring (Arm)      https://www.silabs.com/documents/public/reference-manuals/Si5341-40-D-RM.pdf
21b02011c8SRob Herring (Arm)  [3] Si5345 Reference Manual
22b02011c8SRob Herring (Arm)      https://www.silabs.com/documents/public/reference-manuals/Si5345-44-42-D-RM.pdf
23b02011c8SRob Herring (Arm)
24b02011c8SRob Herring (Arm)  The Si5341 and Si5340 are programmable i2c clock generators with up to 10 output
25b02011c8SRob Herring (Arm)  clocks. The chip contains a PLL that sources 5 (or 4) multisynth clocks, which
26b02011c8SRob Herring (Arm)  in turn can be directed to any of the 10 (or 4) outputs through a divider.
27b02011c8SRob Herring (Arm)  The internal structure of the clock generators can be found in [2].
28b02011c8SRob Herring (Arm)  The Si5345 is similar to the Si5341 with the addition of fractional input
29b02011c8SRob Herring (Arm)  dividers and automatic input selection, as described in [3].
30b02011c8SRob Herring (Arm)  The Si5342 and Si5344 are smaller versions of the Si5345, with 2 or 4 outputs.
31b02011c8SRob Herring (Arm)
32b02011c8SRob Herring (Arm)  The driver can be used in "as is" mode, reading the current settings from the
33b02011c8SRob Herring (Arm)  chip at boot, in case you have a (pre-)programmed device. If the PLL is not
34b02011c8SRob Herring (Arm)  configured when the driver probes, it assumes the driver must fully initialize
35b02011c8SRob Herring (Arm)  it.
36b02011c8SRob Herring (Arm)
37b02011c8SRob Herring (Arm)  The device type, speed grade and revision are determined runtime by probing.
38b02011c8SRob Herring (Arm)
39b02011c8SRob Herring (Arm)properties:
40b02011c8SRob Herring (Arm)  compatible:
41b02011c8SRob Herring (Arm)    enum:
42b02011c8SRob Herring (Arm)      - silabs,si5340
43b02011c8SRob Herring (Arm)      - silabs,si5341
44b02011c8SRob Herring (Arm)      - silabs,si5342
45b02011c8SRob Herring (Arm)      - silabs,si5344
46b02011c8SRob Herring (Arm)      - silabs,si5345
47b02011c8SRob Herring (Arm)
48b02011c8SRob Herring (Arm)  reg:
49b02011c8SRob Herring (Arm)    maxItems: 1
50b02011c8SRob Herring (Arm)
51b02011c8SRob Herring (Arm)  "#clock-cells":
52b02011c8SRob Herring (Arm)    const: 2
53b02011c8SRob Herring (Arm)    description: >
54b02011c8SRob Herring (Arm)      The first value is "0" for outputs, "1" for synthesizers.
55b02011c8SRob Herring (Arm)
56b02011c8SRob Herring (Arm)      The second value is the output or synthesizer index.
57b02011c8SRob Herring (Arm)
58b02011c8SRob Herring (Arm)  "#address-cells":
59b02011c8SRob Herring (Arm)    const: 1
60b02011c8SRob Herring (Arm)
61b02011c8SRob Herring (Arm)  "#size-cells":
62b02011c8SRob Herring (Arm)    const: 0
63b02011c8SRob Herring (Arm)
64b02011c8SRob Herring (Arm)  clocks:
65b02011c8SRob Herring (Arm)    minItems: 1
66b02011c8SRob Herring (Arm)    maxItems: 4
67b02011c8SRob Herring (Arm)
68b02011c8SRob Herring (Arm)  clock-names:
69b02011c8SRob Herring (Arm)    minItems: 1
70b02011c8SRob Herring (Arm)    items:
71b02011c8SRob Herring (Arm)      - const: xtal
72b02011c8SRob Herring (Arm)      - const: in0
73b02011c8SRob Herring (Arm)      - const: in1
74b02011c8SRob Herring (Arm)      - const: in2
75b02011c8SRob Herring (Arm)
76*7c85e4daSRob Herring (Arm)  clock-output-names: true
77*7c85e4daSRob Herring (Arm)
78b02011c8SRob Herring (Arm)  interrupts:
79b02011c8SRob Herring (Arm)    maxItems: 1
80b02011c8SRob Herring (Arm)    description: Interrupt for INTRb pin
81b02011c8SRob Herring (Arm)
82b02011c8SRob Herring (Arm)  vdd-supply:
83b02011c8SRob Herring (Arm)    description: Regulator node for VDD
84b02011c8SRob Herring (Arm)
85b02011c8SRob Herring (Arm)  vdda-supply:
86b02011c8SRob Herring (Arm)    description: Regulator node for VDDA
87b02011c8SRob Herring (Arm)
88b02011c8SRob Herring (Arm)  vdds-supply:
89b02011c8SRob Herring (Arm)    description: Regulator node for VDDS
90b02011c8SRob Herring (Arm)
91b02011c8SRob Herring (Arm)  silabs,pll-m-num:
92b02011c8SRob Herring (Arm)    description:
93b02011c8SRob Herring (Arm)      Numerator for PLL feedback divider. Must be such that the PLL output is in
94b02011c8SRob Herring (Arm)      the valid range. For example, to create 14GHz from a 48MHz xtal, use
95b02011c8SRob Herring (Arm)      m-num=14000 and m-den=48. Only the fraction matters, using 3500 and 12
96b02011c8SRob Herring (Arm)      will deliver the exact same result. If these are not specified, and the
97b02011c8SRob Herring (Arm)      PLL is not yet programmed when the driver probes, the PLL will be set to
98b02011c8SRob Herring (Arm)      14GHz.
99b02011c8SRob Herring (Arm)    $ref: /schemas/types.yaml#/definitions/uint32
100b02011c8SRob Herring (Arm)
101b02011c8SRob Herring (Arm)  silabs,pll-m-den:
102b02011c8SRob Herring (Arm)    description: Denominator for PLL feedback divider
103b02011c8SRob Herring (Arm)    $ref: /schemas/types.yaml#/definitions/uint32
104b02011c8SRob Herring (Arm)
105b02011c8SRob Herring (Arm)  silabs,reprogram:
106b02011c8SRob Herring (Arm)    description: Always perform soft-reset and reinitialize PLL
107b02011c8SRob Herring (Arm)    type: boolean
108b02011c8SRob Herring (Arm)
109b02011c8SRob Herring (Arm)  silabs,xaxb-ext-clk:
110b02011c8SRob Herring (Arm)    description: Use XA/XB pins as external reference clock
111b02011c8SRob Herring (Arm)    type: boolean
112b02011c8SRob Herring (Arm)
113b02011c8SRob Herring (Arm)  silabs,iovdd-33:
114b02011c8SRob Herring (Arm)    description: I2C lines use 3.3V thresholds
115b02011c8SRob Herring (Arm)    type: boolean
116b02011c8SRob Herring (Arm)
117b02011c8SRob Herring (Arm)patternProperties:
118b02011c8SRob Herring (Arm)  "^vddo[0-9]-supply$": true
119b02011c8SRob Herring (Arm)
120b02011c8SRob Herring (Arm)  "^out@[0-9]$":
121b02011c8SRob Herring (Arm)    description: >
122b02011c8SRob Herring (Arm)      Output-specific override nodes
123b02011c8SRob Herring (Arm)
124b02011c8SRob Herring (Arm)      Each of the clock outputs can be overwritten individually by using a child
125b02011c8SRob Herring (Arm)      node. If a child node for a clock output is not set, the configuration
126b02011c8SRob Herring (Arm)      remains unchanged.
127b02011c8SRob Herring (Arm)    type: object
128b02011c8SRob Herring (Arm)    additionalProperties: false
129b02011c8SRob Herring (Arm)
130b02011c8SRob Herring (Arm)    properties:
131b02011c8SRob Herring (Arm)      reg:
132b02011c8SRob Herring (Arm)        description: Number of clock output
133b02011c8SRob Herring (Arm)        maximum: 9
134b02011c8SRob Herring (Arm)
135*7c85e4daSRob Herring (Arm)      always-on:
136*7c85e4daSRob Herring (Arm)        description: Set to keep the clock output always running
137*7c85e4daSRob Herring (Arm)        type: boolean
138*7c85e4daSRob Herring (Arm)
139b02011c8SRob Herring (Arm)      silabs,format:
140b02011c8SRob Herring (Arm)        description: Output format
141b02011c8SRob Herring (Arm)        $ref: /schemas/types.yaml#/definitions/uint32
142b02011c8SRob Herring (Arm)        enum: [1, 2, 4]
143b02011c8SRob Herring (Arm)
144b02011c8SRob Herring (Arm)      silabs,common-mode:
145b02011c8SRob Herring (Arm)        description: Override output common mode
146b02011c8SRob Herring (Arm)        $ref: /schemas/types.yaml#/definitions/uint32
147b02011c8SRob Herring (Arm)
148b02011c8SRob Herring (Arm)      silabs,amplitude:
149b02011c8SRob Herring (Arm)        description: Override output amplitude
150b02011c8SRob Herring (Arm)        $ref: /schemas/types.yaml#/definitions/uint32
151b02011c8SRob Herring (Arm)
152b02011c8SRob Herring (Arm)      silabs,synth-master:
153b02011c8SRob Herring (Arm)        description: Allow dynamic multisynth rate control
154b02011c8SRob Herring (Arm)        type: boolean
155b02011c8SRob Herring (Arm)
156b02011c8SRob Herring (Arm)      silabs,disable-high:
157b02011c8SRob Herring (Arm)        description: Drive output HIGH when disabled
158b02011c8SRob Herring (Arm)        type: boolean
159b02011c8SRob Herring (Arm)
160b02011c8SRob Herring (Arm)    required:
161b02011c8SRob Herring (Arm)      - reg
162b02011c8SRob Herring (Arm)
163b02011c8SRob Herring (Arm)required:
164b02011c8SRob Herring (Arm)  - compatible
165b02011c8SRob Herring (Arm)  - reg
166b02011c8SRob Herring (Arm)  - "#clock-cells"
167b02011c8SRob Herring (Arm)  - "#address-cells"
168b02011c8SRob Herring (Arm)  - "#size-cells"
169b02011c8SRob Herring (Arm)  - clocks
170b02011c8SRob Herring (Arm)  - clock-names
171b02011c8SRob Herring (Arm)
172b02011c8SRob Herring (Arm)additionalProperties: false
173b02011c8SRob Herring (Arm)
174b02011c8SRob Herring (Arm)examples:
175b02011c8SRob Herring (Arm)  - |
176b02011c8SRob Herring (Arm)    i2c {
177b02011c8SRob Herring (Arm)        #address-cells = <1>;
178b02011c8SRob Herring (Arm)        #size-cells = <0>;
179b02011c8SRob Herring (Arm)
180b02011c8SRob Herring (Arm)        clock-generator@74 {
181b02011c8SRob Herring (Arm)            reg = <0x74>;
182b02011c8SRob Herring (Arm)            compatible = "silabs,si5341";
183b02011c8SRob Herring (Arm)            #clock-cells = <2>;
184b02011c8SRob Herring (Arm)            #address-cells = <1>;
185b02011c8SRob Herring (Arm)            #size-cells = <0>;
186b02011c8SRob Herring (Arm)            clocks = <&ref48>;
187b02011c8SRob Herring (Arm)            clock-names = "xtal";
188b02011c8SRob Herring (Arm)
189b02011c8SRob Herring (Arm)            silabs,pll-m-num = <14000>; /* PLL at 14.0 GHz */
190b02011c8SRob Herring (Arm)            silabs,pll-m-den = <48>;
191b02011c8SRob Herring (Arm)            silabs,reprogram; /* Chips are not programmed, always reset */
192b02011c8SRob Herring (Arm)
193b02011c8SRob Herring (Arm)            out@0 {
194b02011c8SRob Herring (Arm)                reg = <0>;
195b02011c8SRob Herring (Arm)                silabs,format = <1>; /* LVDS 3v3 */
196b02011c8SRob Herring (Arm)                silabs,common-mode = <3>;
197b02011c8SRob Herring (Arm)                silabs,amplitude = <3>;
198b02011c8SRob Herring (Arm)                silabs,synth-master;
199b02011c8SRob Herring (Arm)            };
200b02011c8SRob Herring (Arm)
201b02011c8SRob Herring (Arm)            /*
202b02011c8SRob Herring (Arm)              * Output 6 configuration:
203b02011c8SRob Herring (Arm)              *  LVDS 1v8
204b02011c8SRob Herring (Arm)              */
205b02011c8SRob Herring (Arm)            out@6 {
206b02011c8SRob Herring (Arm)                reg = <6>;
207b02011c8SRob Herring (Arm)                silabs,format = <1>; /* LVDS 1v8 */
208b02011c8SRob Herring (Arm)                silabs,common-mode = <13>;
209b02011c8SRob Herring (Arm)                silabs,amplitude = <3>;
210b02011c8SRob Herring (Arm)            };
211b02011c8SRob Herring (Arm)
212b02011c8SRob Herring (Arm)            /*
213b02011c8SRob Herring (Arm)              * Output 8 configuration:
214b02011c8SRob Herring (Arm)              *  HCSL 3v3
215b02011c8SRob Herring (Arm)              */
216b02011c8SRob Herring (Arm)            out@8 {
217b02011c8SRob Herring (Arm)                reg = <8>;
218b02011c8SRob Herring (Arm)                silabs,format = <2>;
219b02011c8SRob Herring (Arm)                silabs,common-mode = <11>;
220b02011c8SRob Herring (Arm)                silabs,amplitude = <3>;
221b02011c8SRob Herring (Arm)            };
222b02011c8SRob Herring (Arm)        };
223b02011c8SRob Herring (Arm)    };
224