xref: /linux/Documentation/devicetree/bindings/pwm/renesas,rzg2l-gpt.yaml (revision 11147c16a6e0649cc95f8bb90302e4a99ece30bc)
1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/pwm/renesas,rzg2l-gpt.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Renesas RZ/G2L General PWM Timer (GPT)
8
9maintainers:
10  - Biju Das <biju.das.jz@bp.renesas.com>
11
12description: |
13  RZ/G2L General PWM Timer (GPT) composed of 8 channels with 32-bit timer
14  (GPT32E). It supports the following functions
15  * 32 bits x 8 channels.
16  * Up-counting or down-counting (saw waves) or up/down-counting
17    (triangle waves) for each counter.
18  * Clock sources independently selectable for each channel.
19  * Two I/O pins per channel.
20  * Two output compare/input capture registers per channel.
21  * For the two output compare/input capture registers of each channel,
22    four registers are provided as buffer registers and are capable of
23    operating as comparison registers when buffering is not in use.
24  * In output compare operation, buffer switching can be at crests or
25    troughs, enabling the generation of laterally asymmetric PWM waveforms.
26  * Registers for setting up frame cycles in each channel (with capability
27    for generating interrupts at overflow or underflow)
28  * Generation of dead times in PWM operation.
29  * Synchronous starting, stopping and clearing counters for arbitrary
30    channels.
31  * Starting, stopping, clearing and up/down counters in response to input
32    level comparison.
33  * Starting, clearing, stopping and up/down counters in response to a
34    maximum of four external triggers.
35  * Output pin disable function by dead time error and detected
36    short-circuits between output pins.
37  * A/D converter start triggers can be generated (GPT32E0 to GPT32E3)
38  * Enables the noise filter for input capture and external trigger
39    operation.
40
41  The below pwm channels are supported.
42    pwm0  - GPT32E0.GTIOC0A channel
43    pwm1  - GPT32E0.GTIOC0B channel
44    pwm2  - GPT32E1.GTIOC1A channel
45    pwm3  - GPT32E1.GTIOC1B channel
46    pwm4  - GPT32E2.GTIOC2A channel
47    pwm5  - GPT32E2.GTIOC2B channel
48    pwm6  - GPT32E3.GTIOC3A channel
49    pwm7  - GPT32E3.GTIOC3B channel
50    pwm8  - GPT32E4.GTIOC4A channel
51    pwm9  - GPT32E4.GTIOC4B channel
52    pwm10 - GPT32E5.GTIOC5A channel
53    pwm11 - GPT32E5.GTIOC5B channel
54    pwm12 - GPT32E6.GTIOC6A channel
55    pwm13 - GPT32E6.GTIOC6B channel
56    pwm14 - GPT32E7.GTIOC7A channel
57    pwm15 - GPT32E7.GTIOC7B channel
58
59properties:
60  compatible:
61    items:
62      - enum:
63          - renesas,r9a07g044-gpt  # RZ/G2{L,LC}
64          - renesas,r9a07g054-gpt  # RZ/V2L
65      - const: renesas,rzg2l-gpt
66
67  reg:
68    maxItems: 1
69
70  '#pwm-cells':
71    const: 3
72
73  interrupts:
74    items:
75      - description: GPT32E0.GTCCRA input capture/compare match
76      - description: GPT32E0.GTCCRB input capture/compare
77      - description: GPT32E0.GTCCRC compare match
78      - description: GPT32E0.GTCCRD compare match
79      - description: GPT32E0.GTCCRE compare match
80      - description: GPT32E0.GTCCRF compare match
81      - description: GPT32E0.GTADTRA compare match
82      - description: GPT32E0.GTADTRB compare match
83      - description: GPT32E0.GTCNT overflow/GTPR compare match
84      - description: GPT32E0.GTCNT underflow
85      - description: GPT32E1.GTCCRA input capture/compare match
86      - description: GPT32E1.GTCCRB input capture/compare
87      - description: GPT32E1.GTCCRC compare match
88      - description: GPT32E1.GTCCRD compare match
89      - description: GPT32E1.GTCCRE compare match
90      - description: GPT32E1.GTCCRF compare match
91      - description: GPT32E1.GTADTRA compare match
92      - description: GPT32E1.GTADTRB compare match
93      - description: GPT32E1.GTCNT overflow/GTPR compare match
94      - description: GPT32E1.GTCNT underflow
95      - description: GPT32E2.GTCCRA input capture/compare match
96      - description: GPT32E2.GTCCRB input capture/compare
97      - description: GPT32E2.GTCCRC compare match
98      - description: GPT32E2.GTCCRD compare match
99      - description: GPT32E2.GTCCRE compare match
100      - description: GPT32E2.GTCCRF compare match
101      - description: GPT32E2.GTADTRA compare match
102      - description: GPT32E2.GTADTRB compare match
103      - description: GPT32E2.GTCNT overflow/GTPR compare match
104      - description: GPT32E2.GTCNT underflow
105      - description: GPT32E3.GTCCRA input capture/compare match
106      - description: GPT32E3.GTCCRB input capture/compare
107      - description: GPT32E3.GTCCRC compare match
108      - description: GPT32E3.GTCCRD compare match
109      - description: GPT32E3.GTCCRE compare match
110      - description: GPT32E3.GTCCRF compare match
111      - description: GPT32E3.GTADTRA compare match
112      - description: GPT32E3.GTADTRB compare match
113      - description: GPT32E3.GTCNT overflow/GTPR compare match
114      - description: GPT32E3.GTCNT underflow
115      - description: GPT32E4.GTCCRA input capture/compare match
116      - description: GPT32E4.GTCCRB input capture/compare
117      - description: GPT32E4.GTCCRC compare match
118      - description: GPT32E4.GTCCRD compare match
119      - description: GPT32E4.GTCCRE compare match
120      - description: GPT32E4.GTCCRF compare match
121      - description: GPT32E4.GTADTRA compare match
122      - description: GPT32E4.GTADTRB compare match
123      - description: GPT32E4.GTCNT overflow/GTPR compare match
124      - description: GPT32E4.GTCNT underflow
125      - description: GPT32E5.GTCCRA input capture/compare match
126      - description: GPT32E5.GTCCRB input capture/compare
127      - description: GPT32E5.GTCCRC compare match
128      - description: GPT32E5.GTCCRD compare match
129      - description: GPT32E5.GTCCRE compare match
130      - description: GPT32E5.GTCCRF compare match
131      - description: GPT32E5.GTADTRA compare match
132      - description: GPT32E5.GTADTRB compare match
133      - description: GPT32E5.GTCNT overflow/GTPR compare match
134      - description: GPT32E5.GTCNT underflow
135      - description: GPT32E6.GTCCRA input capture/compare match
136      - description: GPT32E6.GTCCRB input capture/compare
137      - description: GPT32E6.GTCCRC compare match
138      - description: GPT32E6.GTCCRD compare match
139      - description: GPT32E6.GTCCRE compare match
140      - description: GPT32E6.GTCCRF compare match
141      - description: GPT32E6.GTADTRA compare match
142      - description: GPT32E6.GTADTRB compare match
143      - description: GPT32E6.GTCNT overflow/GTPR compare match
144      - description: GPT32E6.GTCNT underflow
145      - description: GPT32E7.GTCCRA input capture/compare match
146      - description: GPT32E7.GTCCRB input capture/compare
147      - description: GPT32E7.GTCCRC compare match
148      - description: GPT32E7.GTCCRD compare match
149      - description: GPT32E7.GTCCRE compare match
150      - description: GPT32E7.GTCCRF compare match
151      - description: GPT32E7.GTADTRA compare match
152      - description: GPT32E7.GTADTRB compare match
153      - description: GPT32E7.GTCNT overflow/GTPR compare match
154      - description: GPT32E7.GTCNT underflow
155
156  interrupt-names:
157    items:
158      - const: ccmpa0
159      - const: ccmpb0
160      - const: cmpc0
161      - const: cmpd0
162      - const: cmpe0
163      - const: cmpf0
164      - const: adtrga0
165      - const: adtrgb0
166      - const: ovf0
167      - const: unf0
168      - const: ccmpa1
169      - const: ccmpb1
170      - const: cmpc1
171      - const: cmpd1
172      - const: cmpe1
173      - const: cmpf1
174      - const: adtrga1
175      - const: adtrgb1
176      - const: ovf1
177      - const: unf1
178      - const: ccmpa2
179      - const: ccmpb2
180      - const: cmpc2
181      - const: cmpd2
182      - const: cmpe2
183      - const: cmpf2
184      - const: adtrga2
185      - const: adtrgb2
186      - const: ovf2
187      - const: unf2
188      - const: ccmpa3
189      - const: ccmpb3
190      - const: cmpc3
191      - const: cmpd3
192      - const: cmpe3
193      - const: cmpf3
194      - const: adtrga3
195      - const: adtrgb3
196      - const: ovf3
197      - const: unf3
198      - const: ccmpa4
199      - const: ccmpb4
200      - const: cmpc4
201      - const: cmpd4
202      - const: cmpe4
203      - const: cmpf4
204      - const: adtrga4
205      - const: adtrgb4
206      - const: ovf4
207      - const: unf4
208      - const: ccmpa5
209      - const: ccmpb5
210      - const: cmpc5
211      - const: cmpd5
212      - const: cmpe5
213      - const: cmpf5
214      - const: adtrga5
215      - const: adtrgb5
216      - const: ovf5
217      - const: unf5
218      - const: ccmpa6
219      - const: ccmpb6
220      - const: cmpc6
221      - const: cmpd6
222      - const: cmpe6
223      - const: cmpf6
224      - const: adtrga6
225      - const: adtrgb6
226      - const: ovf6
227      - const: unf6
228      - const: ccmpa7
229      - const: ccmpb7
230      - const: cmpc7
231      - const: cmpd7
232      - const: cmpe7
233      - const: cmpf7
234      - const: adtrga7
235      - const: adtrgb7
236      - const: ovf7
237      - const: unf7
238
239  clocks:
240    maxItems: 1
241
242  power-domains:
243    maxItems: 1
244
245  resets:
246    maxItems: 1
247
248required:
249  - compatible
250  - reg
251  - interrupts
252  - interrupt-names
253  - clocks
254  - power-domains
255  - resets
256
257allOf:
258  - $ref: pwm.yaml#
259
260additionalProperties: false
261
262examples:
263  - |
264    #include <dt-bindings/clock/r9a07g044-cpg.h>
265    #include <dt-bindings/interrupt-controller/arm-gic.h>
266
267    gpt: pwm@10048000 {
268        compatible = "renesas,r9a07g044-gpt", "renesas,rzg2l-gpt";
269        reg = <0x10048000 0x800>;
270        interrupts = <GIC_SPI 218 IRQ_TYPE_EDGE_RISING>,
271                     <GIC_SPI 219 IRQ_TYPE_EDGE_RISING>,
272                     <GIC_SPI 220 IRQ_TYPE_EDGE_RISING>,
273                     <GIC_SPI 221 IRQ_TYPE_EDGE_RISING>,
274                     <GIC_SPI 222 IRQ_TYPE_EDGE_RISING>,
275                     <GIC_SPI 223 IRQ_TYPE_EDGE_RISING>,
276                     <GIC_SPI 224 IRQ_TYPE_EDGE_RISING>,
277                     <GIC_SPI 225 IRQ_TYPE_EDGE_RISING>,
278                     <GIC_SPI 226 IRQ_TYPE_EDGE_RISING>,
279                     <GIC_SPI 227 IRQ_TYPE_EDGE_RISING>,
280                     <GIC_SPI 231 IRQ_TYPE_EDGE_RISING>,
281                     <GIC_SPI 232 IRQ_TYPE_EDGE_RISING>,
282                     <GIC_SPI 233 IRQ_TYPE_EDGE_RISING>,
283                     <GIC_SPI 234 IRQ_TYPE_EDGE_RISING>,
284                     <GIC_SPI 235 IRQ_TYPE_EDGE_RISING>,
285                     <GIC_SPI 236 IRQ_TYPE_EDGE_RISING>,
286                     <GIC_SPI 237 IRQ_TYPE_EDGE_RISING>,
287                     <GIC_SPI 238 IRQ_TYPE_EDGE_RISING>,
288                     <GIC_SPI 239 IRQ_TYPE_EDGE_RISING>,
289                     <GIC_SPI 240 IRQ_TYPE_EDGE_RISING>,
290                     <GIC_SPI 244 IRQ_TYPE_EDGE_RISING>,
291                     <GIC_SPI 245 IRQ_TYPE_EDGE_RISING>,
292                     <GIC_SPI 246 IRQ_TYPE_EDGE_RISING>,
293                     <GIC_SPI 247 IRQ_TYPE_EDGE_RISING>,
294                     <GIC_SPI 248 IRQ_TYPE_EDGE_RISING>,
295                     <GIC_SPI 249 IRQ_TYPE_EDGE_RISING>,
296                     <GIC_SPI 250 IRQ_TYPE_EDGE_RISING>,
297                     <GIC_SPI 251 IRQ_TYPE_EDGE_RISING>,
298                     <GIC_SPI 252 IRQ_TYPE_EDGE_RISING>,
299                     <GIC_SPI 253 IRQ_TYPE_EDGE_RISING>,
300                     <GIC_SPI 257 IRQ_TYPE_EDGE_RISING>,
301                     <GIC_SPI 258 IRQ_TYPE_EDGE_RISING>,
302                     <GIC_SPI 259 IRQ_TYPE_EDGE_RISING>,
303                     <GIC_SPI 260 IRQ_TYPE_EDGE_RISING>,
304                     <GIC_SPI 261 IRQ_TYPE_EDGE_RISING>,
305                     <GIC_SPI 262 IRQ_TYPE_EDGE_RISING>,
306                     <GIC_SPI 263 IRQ_TYPE_EDGE_RISING>,
307                     <GIC_SPI 264 IRQ_TYPE_EDGE_RISING>,
308                     <GIC_SPI 265 IRQ_TYPE_EDGE_RISING>,
309                     <GIC_SPI 266 IRQ_TYPE_EDGE_RISING>,
310                     <GIC_SPI 270 IRQ_TYPE_EDGE_RISING>,
311                     <GIC_SPI 271 IRQ_TYPE_EDGE_RISING>,
312                     <GIC_SPI 272 IRQ_TYPE_EDGE_RISING>,
313                     <GIC_SPI 273 IRQ_TYPE_EDGE_RISING>,
314                     <GIC_SPI 274 IRQ_TYPE_EDGE_RISING>,
315                     <GIC_SPI 275 IRQ_TYPE_EDGE_RISING>,
316                     <GIC_SPI 276 IRQ_TYPE_EDGE_RISING>,
317                     <GIC_SPI 277 IRQ_TYPE_EDGE_RISING>,
318                     <GIC_SPI 278 IRQ_TYPE_EDGE_RISING>,
319                     <GIC_SPI 279 IRQ_TYPE_EDGE_RISING>,
320                     <GIC_SPI 283 IRQ_TYPE_EDGE_RISING>,
321                     <GIC_SPI 284 IRQ_TYPE_EDGE_RISING>,
322                     <GIC_SPI 285 IRQ_TYPE_EDGE_RISING>,
323                     <GIC_SPI 286 IRQ_TYPE_EDGE_RISING>,
324                     <GIC_SPI 287 IRQ_TYPE_EDGE_RISING>,
325                     <GIC_SPI 288 IRQ_TYPE_EDGE_RISING>,
326                     <GIC_SPI 289 IRQ_TYPE_EDGE_RISING>,
327                     <GIC_SPI 290 IRQ_TYPE_EDGE_RISING>,
328                     <GIC_SPI 291 IRQ_TYPE_EDGE_RISING>,
329                     <GIC_SPI 292 IRQ_TYPE_EDGE_RISING>,
330                     <GIC_SPI 296 IRQ_TYPE_EDGE_RISING>,
331                     <GIC_SPI 297 IRQ_TYPE_EDGE_RISING>,
332                     <GIC_SPI 298 IRQ_TYPE_EDGE_RISING>,
333                     <GIC_SPI 299 IRQ_TYPE_EDGE_RISING>,
334                     <GIC_SPI 300 IRQ_TYPE_EDGE_RISING>,
335                     <GIC_SPI 301 IRQ_TYPE_EDGE_RISING>,
336                     <GIC_SPI 302 IRQ_TYPE_EDGE_RISING>,
337                     <GIC_SPI 303 IRQ_TYPE_EDGE_RISING>,
338                     <GIC_SPI 304 IRQ_TYPE_EDGE_RISING>,
339                     <GIC_SPI 305 IRQ_TYPE_EDGE_RISING>,
340                     <GIC_SPI 309 IRQ_TYPE_EDGE_RISING>,
341                     <GIC_SPI 310 IRQ_TYPE_EDGE_RISING>,
342                     <GIC_SPI 311 IRQ_TYPE_EDGE_RISING>,
343                     <GIC_SPI 312 IRQ_TYPE_EDGE_RISING>,
344                     <GIC_SPI 313 IRQ_TYPE_EDGE_RISING>,
345                     <GIC_SPI 314 IRQ_TYPE_EDGE_RISING>,
346                     <GIC_SPI 315 IRQ_TYPE_EDGE_RISING>,
347                     <GIC_SPI 316 IRQ_TYPE_EDGE_RISING>,
348                     <GIC_SPI 317 IRQ_TYPE_EDGE_RISING>,
349                     <GIC_SPI 318 IRQ_TYPE_EDGE_RISING>;
350        interrupt-names = "ccmpa0", "ccmpb0", "cmpc0", "cmpd0",
351                          "cmpe0", "cmpf0", "adtrga0", "adtrgb0",
352                          "ovf0", "unf0",
353                          "ccmpa1", "ccmpb1", "cmpc1", "cmpd1",
354                          "cmpe1", "cmpf1", "adtrga1", "adtrgb1",
355                          "ovf1", "unf1",
356                          "ccmpa2", "ccmpb2", "cmpc2", "cmpd2",
357                          "cmpe2", "cmpf2", "adtrga2", "adtrgb2",
358                          "ovf2", "unf2",
359                          "ccmpa3", "ccmpb3", "cmpc3", "cmpd3",
360                          "cmpe3", "cmpf3", "adtrga3", "adtrgb3",
361                          "ovf3", "unf3",
362                          "ccmpa4", "ccmpb4", "cmpc4", "cmpd4",
363                          "cmpe4", "cmpf4", "adtrga4", "adtrgb4",
364                          "ovf4", "unf4",
365                          "ccmpa5", "ccmpb5", "cmpc5", "cmpd5",
366                          "cmpe5", "cmpf5", "adtrga5", "adtrgb5",
367                          "ovf5", "unf5",
368                          "ccmpa6", "ccmpb6", "cmpc6", "cmpd6",
369                          "cmpe6", "cmpf6", "adtrga6", "adtrgb6",
370                          "ovf6", "unf6",
371                          "ccmpa7", "ccmpb7", "cmpc7", "cmpd7",
372                          "cmpe7", "cmpf7", "adtrga7", "adtrgb7",
373                          "ovf7", "unf7";
374        clocks = <&cpg CPG_MOD R9A07G044_GPT_PCLK>;
375        power-domains = <&cpg>;
376        resets = <&cpg R9A07G044_GPT_RST_C>;
377        #pwm-cells = <3>;
378    };
379