Commit | Line | Data |
---|---|---|
49ac0c7c PC |
1 | # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) |
2 | %YAML 1.2 | |
3 | --- | |
4 | $id: http://devicetree.org/schemas/timer/ingenic,tcu.yaml# | |
5 | $schema: http://devicetree.org/meta-schemas/core.yaml# | |
6 | ||
7 | title: Ingenic SoCs Timer/Counter Unit (TCU) devicetree bindings | |
8 | ||
9 | description: | | |
10 | For a description of the TCU hardware and drivers, have a look at | |
11 | Documentation/mips/ingenic-tcu.rst. | |
12 | ||
13 | maintainers: | |
14 | - Paul Cercueil <paul@crapouillou.net> | |
15 | ||
16 | select: | |
17 | properties: | |
18 | compatible: | |
19 | contains: | |
20 | enum: | |
21 | - ingenic,jz4740-tcu | |
22 | - ingenic,jz4725b-tcu | |
507d8c5a PC |
23 | - ingenic,jz4760-tcu |
24 | - ingenic,jz4760b-tcu | |
49ac0c7c PC |
25 | - ingenic,jz4770-tcu |
26 | - ingenic,jz4780-tcu | |
27 | - ingenic,x1000-tcu | |
28 | required: | |
29 | - compatible | |
30 | ||
31 | properties: | |
32 | $nodename: | |
33 | pattern: "^timer@[0-9a-f]+$" | |
34 | ||
35 | "#address-cells": | |
36 | const: 1 | |
37 | ||
38 | "#size-cells": | |
39 | const: 1 | |
40 | ||
41 | "#clock-cells": | |
42 | const: 1 | |
43 | ||
44 | "#interrupt-cells": | |
45 | const: 1 | |
46 | ||
47 | interrupt-controller: true | |
48 | ||
49 | ranges: true | |
50 | ||
51 | compatible: | |
52 | oneOf: | |
53 | - items: | |
f516fb70 RH |
54 | - enum: |
55 | - ingenic,jz4740-tcu | |
56 | - ingenic,jz4725b-tcu | |
507d8c5a | 57 | - ingenic,jz4760-tcu |
f516fb70 RH |
58 | - ingenic,x1000-tcu |
59 | - const: simple-mfd | |
49ac0c7c | 60 | - items: |
507d8c5a PC |
61 | - enum: |
62 | - ingenic,jz4780-tcu | |
63 | - ingenic,jz4770-tcu | |
64 | - ingenic,jz4760b-tcu | |
65 | - const: ingenic,jz4760-tcu | |
f516fb70 | 66 | - const: simple-mfd |
49ac0c7c PC |
67 | |
68 | reg: | |
69 | maxItems: 1 | |
70 | ||
71 | clocks: | |
72 | items: | |
73 | - description: RTC clock | |
74 | - description: EXT clock | |
75 | - description: PCLK clock | |
76 | - description: TCU clock | |
77 | minItems: 3 | |
78 | ||
79 | clock-names: | |
80 | items: | |
81 | - const: rtc | |
82 | - const: ext | |
83 | - const: pclk | |
84 | - const: tcu | |
85 | minItems: 3 | |
86 | ||
87 | interrupts: | |
88 | items: | |
89 | - description: TCU0 interrupt | |
90 | - description: TCU1 interrupt | |
91 | - description: TCU2 interrupt | |
92 | minItems: 1 | |
93 | ||
94 | assigned-clocks: | |
95 | minItems: 1 | |
96 | maxItems: 8 | |
97 | ||
98 | assigned-clock-parents: | |
99 | minItems: 1 | |
100 | maxItems: 8 | |
101 | ||
102 | assigned-clock-rates: | |
103 | minItems: 1 | |
104 | maxItems: 8 | |
105 | ||
106 | ingenic,pwm-channels-mask: | |
107 | description: Bitmask of TCU channels reserved for PWM use. | |
3d21a460 RH |
108 | $ref: /schemas/types.yaml#/definitions/uint32 |
109 | minimum: 0x00 | |
110 | maximum: 0xff | |
111 | default: 0xfc | |
49ac0c7c PC |
112 | |
113 | patternProperties: | |
114 | "^watchdog@[a-f0-9]+$": | |
115 | type: object | |
561a0846 | 116 | $ref: /schemas/watchdog/watchdog.yaml# |
d2153e4c RH |
117 | unevaluatedProperties: false |
118 | ||
49ac0c7c PC |
119 | properties: |
120 | compatible: | |
121 | oneOf: | |
122 | - enum: | |
f516fb70 RH |
123 | - ingenic,jz4740-watchdog |
124 | - ingenic,jz4780-watchdog | |
49ac0c7c | 125 | - items: |
f516fb70 RH |
126 | - enum: |
127 | - ingenic,jz4770-watchdog | |
507d8c5a PC |
128 | - ingenic,jz4760b-watchdog |
129 | - ingenic,jz4760-watchdog | |
f516fb70 RH |
130 | - ingenic,jz4725b-watchdog |
131 | - const: ingenic,jz4740-watchdog | |
49ac0c7c PC |
132 | |
133 | reg: | |
134 | maxItems: 1 | |
135 | ||
136 | clocks: | |
137 | maxItems: 1 | |
138 | ||
139 | clock-names: | |
140 | const: wdt | |
141 | ||
142 | required: | |
143 | - compatible | |
144 | - reg | |
145 | - clocks | |
146 | - clock-names | |
147 | ||
148 | "^pwm@[a-f0-9]+$": | |
149 | type: object | |
561a0846 | 150 | $ref: /schemas/pwm/pwm.yaml# |
d2153e4c RH |
151 | unevaluatedProperties: false |
152 | ||
49ac0c7c PC |
153 | properties: |
154 | compatible: | |
155 | oneOf: | |
156 | - enum: | |
f516fb70 RH |
157 | - ingenic,jz4740-pwm |
158 | - ingenic,jz4725b-pwm | |
4f34ebbe | 159 | - ingenic,x1000-pwm |
49ac0c7c | 160 | - items: |
f516fb70 | 161 | - enum: |
507d8c5a PC |
162 | - ingenic,jz4760-pwm |
163 | - ingenic,jz4760b-pwm | |
f516fb70 RH |
164 | - ingenic,jz4770-pwm |
165 | - ingenic,jz4780-pwm | |
166 | - const: ingenic,jz4740-pwm | |
49ac0c7c PC |
167 | |
168 | reg: | |
169 | maxItems: 1 | |
170 | ||
171 | clocks: | |
172 | minItems: 6 | |
173 | maxItems: 8 | |
174 | ||
175 | clock-names: | |
176 | items: | |
177 | - const: timer0 | |
178 | - const: timer1 | |
179 | - const: timer2 | |
180 | - const: timer3 | |
181 | - const: timer4 | |
182 | - const: timer5 | |
183 | - const: timer6 | |
184 | - const: timer7 | |
185 | minItems: 6 | |
186 | ||
187 | required: | |
188 | - compatible | |
189 | - reg | |
190 | - clocks | |
191 | - clock-names | |
192 | ||
193 | "^timer@[a-f0-9]+$": | |
194 | type: object | |
195 | properties: | |
196 | compatible: | |
197 | oneOf: | |
198 | - enum: | |
f516fb70 | 199 | - ingenic,jz4725b-ost |
507d8c5a | 200 | - ingenic,jz4760b-ost |
49ac0c7c | 201 | - items: |
507d8c5a PC |
202 | - const: ingenic,jz4760-ost |
203 | - const: ingenic,jz4725b-ost | |
204 | - items: | |
205 | - enum: | |
206 | - ingenic,jz4780-ost | |
207 | - ingenic,jz4770-ost | |
208 | - const: ingenic,jz4760b-ost | |
49ac0c7c PC |
209 | |
210 | reg: | |
211 | maxItems: 1 | |
212 | ||
213 | clocks: | |
214 | maxItems: 1 | |
215 | ||
216 | clock-names: | |
217 | const: ost | |
218 | ||
219 | interrupts: | |
220 | maxItems: 1 | |
221 | ||
222 | required: | |
223 | - compatible | |
224 | - reg | |
225 | - clocks | |
226 | - clock-names | |
227 | - interrupts | |
228 | ||
229 | additionalProperties: false | |
230 | ||
231 | required: | |
232 | - "#clock-cells" | |
233 | - "#interrupt-cells" | |
234 | - interrupt-controller | |
235 | - compatible | |
236 | - reg | |
237 | - clocks | |
238 | - clock-names | |
239 | - interrupts | |
240 | ||
241 | additionalProperties: false | |
242 | ||
243 | examples: | |
244 | - | | |
c4a11bf4 | 245 | #include <dt-bindings/clock/ingenic,jz4770-cgu.h> |
49ac0c7c PC |
246 | #include <dt-bindings/clock/ingenic,tcu.h> |
247 | tcu: timer@10002000 { | |
507d8c5a | 248 | compatible = "ingenic,jz4770-tcu", "ingenic,jz4760-tcu", "simple-mfd"; |
49ac0c7c PC |
249 | reg = <0x10002000 0x1000>; |
250 | #address-cells = <1>; | |
251 | #size-cells = <1>; | |
252 | ranges = <0x0 0x10002000 0x1000>; | |
253 | ||
254 | #clock-cells = <1>; | |
255 | ||
256 | clocks = <&cgu JZ4770_CLK_RTC>, | |
257 | <&cgu JZ4770_CLK_EXT>, | |
258 | <&cgu JZ4770_CLK_PCLK>; | |
259 | clock-names = "rtc", "ext", "pclk"; | |
260 | ||
261 | interrupt-controller; | |
262 | #interrupt-cells = <1>; | |
263 | ||
264 | interrupt-parent = <&intc>; | |
265 | interrupts = <27 26 25>; | |
266 | ||
267 | watchdog: watchdog@0 { | |
268 | compatible = "ingenic,jz4770-watchdog", "ingenic,jz4740-watchdog"; | |
269 | reg = <0x0 0xc>; | |
270 | ||
271 | clocks = <&tcu TCU_CLK_WDT>; | |
272 | clock-names = "wdt"; | |
273 | }; | |
274 | ||
275 | pwm: pwm@40 { | |
276 | compatible = "ingenic,jz4770-pwm", "ingenic,jz4740-pwm"; | |
277 | reg = <0x40 0x80>; | |
278 | ||
279 | #pwm-cells = <3>; | |
280 | ||
281 | clocks = <&tcu TCU_CLK_TIMER0>, | |
282 | <&tcu TCU_CLK_TIMER1>, | |
283 | <&tcu TCU_CLK_TIMER2>, | |
284 | <&tcu TCU_CLK_TIMER3>, | |
285 | <&tcu TCU_CLK_TIMER4>, | |
286 | <&tcu TCU_CLK_TIMER5>, | |
287 | <&tcu TCU_CLK_TIMER6>, | |
288 | <&tcu TCU_CLK_TIMER7>; | |
289 | clock-names = "timer0", "timer1", "timer2", "timer3", | |
290 | "timer4", "timer5", "timer6", "timer7"; | |
291 | }; | |
292 | ||
293 | ost: timer@e0 { | |
507d8c5a | 294 | compatible = "ingenic,jz4770-ost", "ingenic,jz4760b-ost"; |
49ac0c7c PC |
295 | reg = <0xe0 0x20>; |
296 | ||
297 | clocks = <&tcu TCU_CLK_OST>; | |
298 | clock-names = "ost"; | |
299 | ||
300 | interrupts = <15>; | |
301 | }; | |
302 | }; |