xref: /linux/Documentation/devicetree/bindings/timer/renesas,tmu.yaml (revision a1ff5a7d78a036d6c2178ee5acd6ba4946243800)
1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/timer/renesas,tmu.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Renesas R-Mobile/R-Car Timer Unit (TMU)
8
9maintainers:
10  - Geert Uytterhoeven <geert+renesas@glider.be>
11  - Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
12
13description:
14  The TMU is a 32-bit timer/counter with configurable clock inputs and
15  programmable compare match.
16
17  Channels share hardware resources but their counter and compare match value
18  are independent. The TMU hardware supports up to three channels.
19
20properties:
21  compatible:
22    items:
23      - enum:
24          - renesas,tmu-r8a73a4  # R-Mobile APE6
25          - renesas,tmu-r8a7740  # R-Mobile A1
26          - renesas,tmu-r8a7742  # RZ/G1H
27          - renesas,tmu-r8a7743  # RZ/G1M
28          - renesas,tmu-r8a7744  # RZ/G1N
29          - renesas,tmu-r8a7745  # RZ/G1E
30          - renesas,tmu-r8a77470 # RZ/G1C
31          - renesas,tmu-r8a774a1 # RZ/G2M
32          - renesas,tmu-r8a774b1 # RZ/G2N
33          - renesas,tmu-r8a774c0 # RZ/G2E
34          - renesas,tmu-r8a774e1 # RZ/G2H
35          - renesas,tmu-r8a7778  # R-Car M1A
36          - renesas,tmu-r8a7779  # R-Car H1
37          - renesas,tmu-r8a7790  # R-Car H2
38          - renesas,tmu-r8a7791  # R-Car M2-W
39          - renesas,tmu-r8a7792  # R-Car V2H
40          - renesas,tmu-r8a7793  # R-Car M2-N
41          - renesas,tmu-r8a7794  # R-Car E2
42          - renesas,tmu-r8a7795  # R-Car H3
43          - renesas,tmu-r8a7796  # R-Car M3-W
44          - renesas,tmu-r8a77961 # R-Car M3-W+
45          - renesas,tmu-r8a77965 # R-Car M3-N
46          - renesas,tmu-r8a77970 # R-Car V3M
47          - renesas,tmu-r8a77980 # R-Car V3H
48          - renesas,tmu-r8a77990 # R-Car E3
49          - renesas,tmu-r8a77995 # R-Car D3
50          - renesas,tmu-r8a779a0 # R-Car V3U
51          - renesas,tmu-r8a779f0 # R-Car S4-8
52          - renesas,tmu-r8a779g0 # R-Car V4H
53          - renesas,tmu-r8a779h0 # R-Car V4M
54      - const: renesas,tmu
55
56  reg:
57    maxItems: 1
58
59  interrupts:
60    minItems: 2
61    items:
62      - description: Underflow interrupt, channel 0
63      - description: Underflow interrupt, channel 1
64      - description: Underflow interrupt, channel 2
65      - description: Input capture interrupt, channel 2
66
67  interrupt-names:
68    minItems: 2
69    items:
70      - const: tuni0
71      - const: tuni1
72      - const: tuni2
73      - const: ticpi2
74
75  clocks:
76    maxItems: 1
77
78  clock-names:
79    const: fck
80
81  power-domains:
82    maxItems: 1
83
84  resets:
85    maxItems: 1
86
87  '#renesas,channels':
88    description:
89      Number of channels implemented by the timer.
90    $ref: /schemas/types.yaml#/definitions/uint32
91    enum: [ 2, 3 ]
92    default: 3
93
94required:
95  - compatible
96  - reg
97  - interrupts
98  - interrupt-names
99  - clocks
100  - clock-names
101  - power-domains
102
103if:
104  not:
105    properties:
106      compatible:
107        contains:
108          enum:
109            - renesas,tmu-r8a73a4
110            - renesas,tmu-r8a7740
111            - renesas,tmu-r8a7778
112            - renesas,tmu-r8a7779
113then:
114  required:
115    - resets
116
117additionalProperties: false
118
119examples:
120  - |
121    #include <dt-bindings/clock/r8a7779-clock.h>
122    #include <dt-bindings/interrupt-controller/arm-gic.h>
123    #include <dt-bindings/power/r8a7779-sysc.h>
124    tmu0: timer@ffd80000 {
125            compatible = "renesas,tmu-r8a7779", "renesas,tmu";
126            reg = <0xffd80000 0x30>;
127            interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>,
128                         <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>,
129                         <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>,
130                         <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
131            interrupt-names = "tuni0", "tuni1", "tuni2", "ticpi2";
132            clocks = <&mstp0_clks R8A7779_CLK_TMU0>;
133            clock-names = "fck";
134            power-domains = <&sysc R8A7779_PD_ALWAYS_ON>;
135            #renesas,channels = <3>;
136    };
137