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
23 - ingenic,jz4760-tcu
24 - ingenic,jz4760b-tcu
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:
54 - enum:
55 - ingenic,jz4740-tcu
56 - ingenic,jz4725b-tcu
57 - ingenic,jz4760-tcu
58 - ingenic,x1000-tcu
59 - const: simple-mfd
60 - items:
61 - enum:
62 - ingenic,jz4780-tcu
63 - ingenic,jz4770-tcu
64 - ingenic,jz4760b-tcu
65 - const: ingenic,jz4760-tcu
66 - const: simple-mfd
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.
108 $ref: /schemas/types.yaml#/definitions/uint32
109 minimum: 0x00
110 maximum: 0xff
111 default: 0xfc
112
113 patternProperties:
114 "^watchdog@[a-f0-9]+$":
115 type: object
116 $ref: /schemas/watchdog/watchdog.yaml#
117 properties:
118 compatible:
119 oneOf:
120 - enum:
121 - ingenic,jz4740-watchdog
122 - ingenic,jz4780-watchdog
123 - items:
124 - enum:
125 - ingenic,jz4770-watchdog
126 - ingenic,jz4760b-watchdog
127 - ingenic,jz4760-watchdog
128 - ingenic,jz4725b-watchdog
129 - const: ingenic,jz4740-watchdog
130
131 reg:
132 maxItems: 1
133
134 clocks:
135 maxItems: 1
136
137 clock-names:
138 const: wdt
139
140 required:
141 - compatible
142 - reg
143 - clocks
144 - clock-names
145
146 "^pwm@[a-f0-9]+$":
147 type: object
148 $ref: /schemas/pwm/pwm.yaml#
149 properties:
150 compatible:
151 oneOf:
152 - enum:
153 - ingenic,jz4740-pwm
154 - ingenic,jz4725b-pwm
155 - ingenic,x1000-pwm
156 - items:
157 - enum:
158 - ingenic,jz4760-pwm
159 - ingenic,jz4760b-pwm
160 - ingenic,jz4770-pwm
161 - ingenic,jz4780-pwm
162 - const: ingenic,jz4740-pwm
163
164 reg:
165 maxItems: 1
166
167 clocks:
168 minItems: 6
169 maxItems: 8
170
171 clock-names:
172 items:
173 - const: timer0
174 - const: timer1
175 - const: timer2
176 - const: timer3
177 - const: timer4
178 - const: timer5
179 - const: timer6
180 - const: timer7
181 minItems: 6
182
183 required:
184 - compatible
185 - reg
186 - clocks
187 - clock-names
188
189 "^timer@[a-f0-9]+$":
190 type: object
191 properties:
192 compatible:
193 oneOf:
194 - enum:
195 - ingenic,jz4725b-ost
196 - ingenic,jz4760b-ost
197 - items:
198 - const: ingenic,jz4760-ost
199 - const: ingenic,jz4725b-ost
200 - items:
201 - enum:
202 - ingenic,jz4780-ost
203 - ingenic,jz4770-ost
204 - const: ingenic,jz4760b-ost
205
206 reg:
207 maxItems: 1
208
209 clocks:
210 maxItems: 1
211
212 clock-names:
213 const: ost
214
215 interrupts:
216 maxItems: 1
217
218 required:
219 - compatible
220 - reg
221 - clocks
222 - clock-names
223 - interrupts
224
225 additionalProperties: false
226
227 required:
228 - "#clock-cells"
229 - "#interrupt-cells"
230 - interrupt-controller
231 - compatible
232 - reg
233 - clocks
234 - clock-names
235 - interrupts
236
237 additionalProperties: false
238
239 examples:
240 - |
241 #include <dt-bindings/clock/ingenic,jz4770-cgu.h>
242 #include <dt-bindings/clock/ingenic,tcu.h>
243 tcu: timer@10002000 {
244 compatible = "ingenic,jz4770-tcu", "ingenic,jz4760-tcu", "simple-mfd";
245 reg = <0x10002000 0x1000>;
246 #address-cells = <1>;
247 #size-cells = <1>;
248 ranges = <0x0 0x10002000 0x1000>;
249
250 #clock-cells = <1>;
251
252 clocks = <&cgu JZ4770_CLK_RTC>,
253 <&cgu JZ4770_CLK_EXT>,
254 <&cgu JZ4770_CLK_PCLK>;
255 clock-names = "rtc", "ext", "pclk";
256
257 interrupt-controller;
258 #interrupt-cells = <1>;
259
260 interrupt-parent = <&intc>;
261 interrupts = <27 26 25>;
262
263 watchdog: watchdog@0 {
264 compatible = "ingenic,jz4770-watchdog", "ingenic,jz4740-watchdog";
265 reg = <0x0 0xc>;
266
267 clocks = <&tcu TCU_CLK_WDT>;
268 clock-names = "wdt";
269 };
270
271 pwm: pwm@40 {
272 compatible = "ingenic,jz4770-pwm", "ingenic,jz4740-pwm";
273 reg = <0x40 0x80>;
274
275 #pwm-cells = <3>;
276
277 clocks = <&tcu TCU_CLK_TIMER0>,
278 <&tcu TCU_CLK_TIMER1>,
279 <&tcu TCU_CLK_TIMER2>,
280 <&tcu TCU_CLK_TIMER3>,
281 <&tcu TCU_CLK_TIMER4>,
282 <&tcu TCU_CLK_TIMER5>,
283 <&tcu TCU_CLK_TIMER6>,
284 <&tcu TCU_CLK_TIMER7>;
285 clock-names = "timer0", "timer1", "timer2", "timer3",
286 "timer4", "timer5", "timer6", "timer7";
287 };
288
289 ost: timer@e0 {
290 compatible = "ingenic,jz4770-ost", "ingenic,jz4760b-ost";
291 reg = <0xe0 0x20>;
292
293 clocks = <&tcu TCU_CLK_OST>;
294 clock-names = "ost";
295
296 interrupts = <15>;
297 };
298 };
Cache object: b2159a4a09cafdddc66ca065afd7c8cd
|