blob: 024bcad75101f112c3a26cf879513a39818ef9af [file] [log] [blame]
Paul Cercueil49ac0c72020-04-13 17:26:21 +02001# 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
7title: Ingenic SoCs Timer/Counter Unit (TCU) devicetree bindings
8
9description: |
10 For a description of the TCU hardware and drivers, have a look at
11 Documentation/mips/ingenic-tcu.rst.
12
13maintainers:
14 - Paul Cercueil <paul@crapouillou.net>
15
16select:
17 properties:
18 compatible:
19 contains:
20 enum:
21 - ingenic,jz4740-tcu
22 - ingenic,jz4725b-tcu
23 - ingenic,jz4770-tcu
24 - ingenic,jz4780-tcu
25 - ingenic,x1000-tcu
26 required:
27 - compatible
28
29properties:
30 $nodename:
31 pattern: "^timer@[0-9a-f]+$"
32
33 "#address-cells":
34 const: 1
35
36 "#size-cells":
37 const: 1
38
39 "#clock-cells":
40 const: 1
41
42 "#interrupt-cells":
43 const: 1
44
45 interrupt-controller: true
46
47 ranges: true
48
49 compatible:
50 oneOf:
51 - items:
Rob Herringf516fb72020-04-20 21:24:47 -050052 - enum:
53 - ingenic,jz4740-tcu
54 - ingenic,jz4725b-tcu
55 - ingenic,jz4770-tcu
56 - ingenic,x1000-tcu
57 - const: simple-mfd
Paul Cercueil49ac0c72020-04-13 17:26:21 +020058 - items:
Rob Herringf516fb72020-04-20 21:24:47 -050059 - const: ingenic,jz4780-tcu
60 - const: ingenic,jz4770-tcu
61 - const: simple-mfd
Paul Cercueil49ac0c72020-04-13 17:26:21 +020062
63 reg:
64 maxItems: 1
65
66 clocks:
67 items:
68 - description: RTC clock
69 - description: EXT clock
70 - description: PCLK clock
71 - description: TCU clock
72 minItems: 3
73
74 clock-names:
75 items:
76 - const: rtc
77 - const: ext
78 - const: pclk
79 - const: tcu
80 minItems: 3
81
82 interrupts:
83 items:
84 - description: TCU0 interrupt
85 - description: TCU1 interrupt
86 - description: TCU2 interrupt
87 minItems: 1
88
89 assigned-clocks:
90 minItems: 1
91 maxItems: 8
92
93 assigned-clock-parents:
94 minItems: 1
95 maxItems: 8
96
97 assigned-clock-rates:
98 minItems: 1
99 maxItems: 8
100
101 ingenic,pwm-channels-mask:
102 description: Bitmask of TCU channels reserved for PWM use.
Rob Herring3d21a462020-04-15 19:55:49 -0500103 $ref: /schemas/types.yaml#/definitions/uint32
104 minimum: 0x00
105 maximum: 0xff
106 default: 0xfc
Paul Cercueil49ac0c72020-04-13 17:26:21 +0200107
108patternProperties:
109 "^watchdog@[a-f0-9]+$":
110 type: object
Rob Herring3d21a462020-04-15 19:55:49 -0500111 $ref: ../watchdog/watchdog.yaml#
Paul Cercueil49ac0c72020-04-13 17:26:21 +0200112 properties:
113 compatible:
114 oneOf:
115 - enum:
Rob Herringf516fb72020-04-20 21:24:47 -0500116 - ingenic,jz4740-watchdog
117 - ingenic,jz4780-watchdog
Paul Cercueil49ac0c72020-04-13 17:26:21 +0200118 - items:
Rob Herringf516fb72020-04-20 21:24:47 -0500119 - enum:
120 - ingenic,jz4770-watchdog
121 - ingenic,jz4725b-watchdog
122 - const: ingenic,jz4740-watchdog
Paul Cercueil49ac0c72020-04-13 17:26:21 +0200123
124 reg:
125 maxItems: 1
126
127 clocks:
128 maxItems: 1
129
130 clock-names:
131 const: wdt
132
133 required:
134 - compatible
135 - reg
136 - clocks
137 - clock-names
138
139 "^pwm@[a-f0-9]+$":
140 type: object
Rob Herring3d21a462020-04-15 19:55:49 -0500141 $ref: ../pwm/pwm.yaml#
Paul Cercueil49ac0c72020-04-13 17:26:21 +0200142 properties:
143 compatible:
144 oneOf:
145 - enum:
Rob Herringf516fb72020-04-20 21:24:47 -0500146 - ingenic,jz4740-pwm
147 - ingenic,jz4725b-pwm
Paul Cercueil49ac0c72020-04-13 17:26:21 +0200148 - items:
Rob Herringf516fb72020-04-20 21:24:47 -0500149 - enum:
150 - ingenic,jz4770-pwm
151 - ingenic,jz4780-pwm
152 - const: ingenic,jz4740-pwm
Paul Cercueil49ac0c72020-04-13 17:26:21 +0200153
154 reg:
155 maxItems: 1
156
157 clocks:
158 minItems: 6
159 maxItems: 8
160
161 clock-names:
162 items:
163 - const: timer0
164 - const: timer1
165 - const: timer2
166 - const: timer3
167 - const: timer4
168 - const: timer5
169 - const: timer6
170 - const: timer7
171 minItems: 6
172
173 required:
174 - compatible
175 - reg
176 - clocks
177 - clock-names
178
179 "^timer@[a-f0-9]+$":
180 type: object
181 properties:
182 compatible:
183 oneOf:
184 - enum:
Rob Herringf516fb72020-04-20 21:24:47 -0500185 - ingenic,jz4725b-ost
186 - ingenic,jz4770-ost
Paul Cercueil49ac0c72020-04-13 17:26:21 +0200187 - items:
Rob Herringf516fb72020-04-20 21:24:47 -0500188 - const: ingenic,jz4780-ost
189 - const: ingenic,jz4770-ost
Paul Cercueil49ac0c72020-04-13 17:26:21 +0200190
191 reg:
192 maxItems: 1
193
194 clocks:
195 maxItems: 1
196
197 clock-names:
198 const: ost
199
200 interrupts:
201 maxItems: 1
202
203 required:
204 - compatible
205 - reg
206 - clocks
207 - clock-names
208 - interrupts
209
210 additionalProperties: false
211
212required:
213 - "#clock-cells"
214 - "#interrupt-cells"
215 - interrupt-controller
216 - compatible
217 - reg
218 - clocks
219 - clock-names
220 - interrupts
221
222additionalProperties: false
223
224examples:
225 - |
226 #include <dt-bindings/clock/jz4770-cgu.h>
227 #include <dt-bindings/clock/ingenic,tcu.h>
228 tcu: timer@10002000 {
229 compatible = "ingenic,jz4770-tcu", "simple-mfd";
230 reg = <0x10002000 0x1000>;
231 #address-cells = <1>;
232 #size-cells = <1>;
233 ranges = <0x0 0x10002000 0x1000>;
234
235 #clock-cells = <1>;
236
237 clocks = <&cgu JZ4770_CLK_RTC>,
238 <&cgu JZ4770_CLK_EXT>,
239 <&cgu JZ4770_CLK_PCLK>;
240 clock-names = "rtc", "ext", "pclk";
241
242 interrupt-controller;
243 #interrupt-cells = <1>;
244
245 interrupt-parent = <&intc>;
246 interrupts = <27 26 25>;
247
248 watchdog: watchdog@0 {
249 compatible = "ingenic,jz4770-watchdog", "ingenic,jz4740-watchdog";
250 reg = <0x0 0xc>;
251
252 clocks = <&tcu TCU_CLK_WDT>;
253 clock-names = "wdt";
254 };
255
256 pwm: pwm@40 {
257 compatible = "ingenic,jz4770-pwm", "ingenic,jz4740-pwm";
258 reg = <0x40 0x80>;
259
260 #pwm-cells = <3>;
261
262 clocks = <&tcu TCU_CLK_TIMER0>,
263 <&tcu TCU_CLK_TIMER1>,
264 <&tcu TCU_CLK_TIMER2>,
265 <&tcu TCU_CLK_TIMER3>,
266 <&tcu TCU_CLK_TIMER4>,
267 <&tcu TCU_CLK_TIMER5>,
268 <&tcu TCU_CLK_TIMER6>,
269 <&tcu TCU_CLK_TIMER7>;
270 clock-names = "timer0", "timer1", "timer2", "timer3",
271 "timer4", "timer5", "timer6", "timer7";
272 };
273
274 ost: timer@e0 {
275 compatible = "ingenic,jz4770-ost";
276 reg = <0xe0 0x20>;
277
278 clocks = <&tcu TCU_CLK_OST>;
279 clock-names = "ost";
280
281 interrupts = <15>;
282 };
283 };