blob: 95a3e3b2426724fc03cf7a5da139ac58ef681525 [file] [log] [blame]
Tom Rini6b642ac2024-10-01 12:20:28 -06001# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/clock/fsl,qoriq-clock.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Clock Block on Freescale QorIQ Platforms
8
9maintainers:
10 - Frank Li <Frank.Li@nxp.com>
11
12description: |
13 Freescale QorIQ chips take primary clocking input from the external
14 SYSCLK signal. The SYSCLK input (frequency) is multiplied using
15 multiple phase locked loops (PLL) to create a variety of frequencies
16 which can then be passed to a variety of internal logic, including
17 cores and peripheral IP blocks.
18 Please refer to the Reference Manual for details.
19
20 All references to "1.0" and "2.0" refer to the QorIQ chassis version to
21 which the chip complies.
22
23 Chassis Version Example Chips
24 --------------- -------------
25 1.0 p4080, p5020, p5040
26 2.0 t4240
27
28 Clock Provider
29
30 The clockgen node should act as a clock provider, though in older device
31 trees the children of the clockgen node are the clock providers.
32
33properties:
34 compatible:
35 oneOf:
36 - items:
37 - enum:
38 - fsl,p2041-clockgen
39 - fsl,p3041-clockgen
40 - fsl,p4080-clockgen
41 - fsl,p5020-clockgen
42 - fsl,p5040-clockgen
43 - const: fsl,qoriq-clockgen-1.0
44 - items:
45 - enum:
46 - fsl,t1023-clockgen
47 - fsl,t1024-clockgen
48 - fsl,t1040-clockgen
49 - fsl,t1042-clockgen
50 - fsl,t2080-clockgen
51 - fsl,t2081-clockgen
52 - fsl,t4240-clockgen
53 - const: fsl,qoriq-clockgen-2.0
54 - items:
55 - enum:
56 - fsl,b4420-clockgen
57 - fsl,b4860-clockgen
58 - const: fsl,b4-clockgen
59 - items:
60 - enum:
61 - fsl,ls1012a-clockgen
62 - fsl,ls1021a-clockgen
63 - fsl,ls1028a-clockgen
64 - fsl,ls1043a-clockgen
65 - fsl,ls1046a-clockgen
66 - fsl,ls1088a-clockgen
67 - fsl,ls2080a-clockgen
68 - fsl,lx2160a-clockgen
69
70 reg:
71 maxItems: 1
72
73 ranges: true
74
75 '#address-cells':
76 const: 1
77
78 '#size-cells':
79 const: 1
80
81 '#clock-cells':
82 const: 2
83 description: |
84 The first cell of the clock specifier is the clock type, and the
85 second cell is the clock index for the specified type.
86
87 Type# Name Index Cell
88 0 sysclk must be 0
89 1 cmux index (n in CLKCnCSR)
90 2 hwaccel index (n in CLKCGnHWACSR)
91 3 fman 0 for fm1, 1 for fm2
92 4 platform pll n=pll/(n+1). For example, when n=1,
93 that means output_freq=PLL_freq/2.
94 5 coreclk must be 0
95
96 clock-frequency:
97 description: Input system clock frequency (SYSCLK)
98
99 clocks:
100 items:
101 - description:
102 sysclk may be provided as an input clock. Either clock-frequency
103 or clocks must be provided.
104 - description:
105 A second input clock, called "coreclk", may be provided if
106 core PLLs are based on a different input clock from the
107 platform PLL.
108 minItems: 1
109
110 clock-names:
111 items:
112 - const: sysclk
113 - const: coreclk
114
115patternProperties:
116 '^mux[0-9]@[a-f0-9]+$':
117 deprecated: true
118 $ref: fsl,qoriq-clock-legacy.yaml
119
120 '^sysclk(-[a-z0-9]+)?$':
121 deprecated: true
122 $ref: fsl,qoriq-clock-legacy.yaml
123
124 '^pll[0-9]@[a-f0-9]+$':
125 deprecated: true
126 $ref: fsl,qoriq-clock-legacy.yaml
127
128 '^platform\-pll@[a-f0-9]+$':
129 deprecated: true
130 $ref: fsl,qoriq-clock-legacy.yaml
131
132required:
133 - compatible
134 - reg
135 - '#clock-cells'
136
137additionalProperties: false
138
139examples:
140 - |
141 /* clock provider example */
142 global-utilities@e1000 {
143 compatible = "fsl,p5020-clockgen", "fsl,qoriq-clockgen-1.0";
144 reg = <0xe1000 0x1000>;
145 clock-frequency = <133333333>;
146 #clock-cells = <2>;
147 };
148
149 - |
150 /* Legacy example */
151 global-utilities@e1000 {
152 compatible = "fsl,p5020-clockgen", "fsl,qoriq-clockgen-1.0";
153 reg = <0xe1000 0x1000>;
154 ranges = <0x0 0xe1000 0x1000>;
155 clock-frequency = <133333333>;
156 #address-cells = <1>;
157 #size-cells = <1>;
158 #clock-cells = <2>;
159
160 sysclk: sysclk {
161 compatible = "fsl,qoriq-sysclk-1.0";
162 clock-output-names = "sysclk";
163 #clock-cells = <0>;
164 };
165
166 pll0: pll0@800 {
167 compatible = "fsl,qoriq-core-pll-1.0";
168 reg = <0x800 0x4>;
169 #clock-cells = <1>;
170 clocks = <&sysclk>;
171 clock-output-names = "pll0", "pll0-div2";
172 };
173
174 pll1: pll1@820 {
175 compatible = "fsl,qoriq-core-pll-1.0";
176 reg = <0x820 0x4>;
177 #clock-cells = <1>;
178 clocks = <&sysclk>;
179 clock-output-names = "pll1", "pll1-div2";
180 };
181
182 mux0: mux0@0 {
183 compatible = "fsl,qoriq-core-mux-1.0";
184 reg = <0x0 0x4>;
185 #clock-cells = <0>;
186 clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
187 clock-names = "pll0", "pll0-div2", "pll1", "pll1-div2";
188 clock-output-names = "cmux0";
189 };
190
191 mux1: mux1@20 {
192 compatible = "fsl,qoriq-core-mux-1.0";
193 reg = <0x20 0x4>;
194 #clock-cells = <0>;
195 clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
196 clock-names = "pll0", "pll0-div2", "pll1", "pll1-div2";
197 clock-output-names = "cmux1";
198 };
199
200 platform-pll@c00 {
201 #clock-cells = <1>;
202 reg = <0xc00 0x4>;
203 compatible = "fsl,qoriq-platform-pll-1.0";
204 clocks = <&sysclk>;
205 clock-output-names = "platform-pll", "platform-pll-div2";
206 };
207 };