xref: /linux/Documentation/devicetree/bindings/timer/renesas,tmu.yaml (revision 7255fcc80d4b525cc10cfaaf7f485830d4ed2000)
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-r8a7740  # R-Mobile A1
25          - renesas,tmu-r8a774a1 # RZ/G2M
26          - renesas,tmu-r8a774b1 # RZ/G2N
27          - renesas,tmu-r8a774c0 # RZ/G2E
28          - renesas,tmu-r8a774e1 # RZ/G2H
29          - renesas,tmu-r8a7778  # R-Car M1A
30          - renesas,tmu-r8a7779  # R-Car H1
31          - renesas,tmu-r8a7795  # R-Car H3
32          - renesas,tmu-r8a7796  # R-Car M3-W
33          - renesas,tmu-r8a77961 # R-Car M3-W+
34          - renesas,tmu-r8a77965 # R-Car M3-N
35          - renesas,tmu-r8a77970 # R-Car V3M
36          - renesas,tmu-r8a77980 # R-Car V3H
37          - renesas,tmu-r8a77990 # R-Car E3
38          - renesas,tmu-r8a77995 # R-Car D3
39          - renesas,tmu-r8a779a0 # R-Car V3U
40          - renesas,tmu-r8a779f0 # R-Car S4-8
41          - renesas,tmu-r8a779g0 # R-Car V4H
42      - const: renesas,tmu
43
44  reg:
45    maxItems: 1
46
47  interrupts:
48    minItems: 2
49    items:
50      - description: Underflow interrupt, channel 0
51      - description: Underflow interrupt, channel 1
52      - description: Underflow interrupt, channel 2
53      - description: Input capture interrupt, channel 2
54
55  interrupt-names:
56    minItems: 2
57    items:
58      - const: tuni0
59      - const: tuni1
60      - const: tuni2
61      - const: ticpi2
62
63  clocks:
64    maxItems: 1
65
66  clock-names:
67    const: fck
68
69  power-domains:
70    maxItems: 1
71
72  resets:
73    maxItems: 1
74
75  '#renesas,channels':
76    description:
77      Number of channels implemented by the timer.
78    $ref: /schemas/types.yaml#/definitions/uint32
79    enum: [ 2, 3 ]
80    default: 3
81
82required:
83  - compatible
84  - reg
85  - interrupts
86  - clocks
87  - clock-names
88  - power-domains
89
90if:
91  not:
92    properties:
93      compatible:
94        contains:
95          enum:
96            - renesas,tmu-r8a7740
97            - renesas,tmu-r8a7778
98            - renesas,tmu-r8a7779
99then:
100  required:
101    - resets
102
103additionalProperties: false
104
105examples:
106  - |
107    #include <dt-bindings/clock/r8a7779-clock.h>
108    #include <dt-bindings/interrupt-controller/arm-gic.h>
109    #include <dt-bindings/power/r8a7779-sysc.h>
110    tmu0: timer@ffd80000 {
111            compatible = "renesas,tmu-r8a7779", "renesas,tmu";
112            reg = <0xffd80000 0x30>;
113            interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>,
114                         <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>,
115                         <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>,
116                         <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
117            interrupt-names = "tuni0", "tuni1", "tuni2", "ticpi2";
118            clocks = <&mstp0_clks R8A7779_CLK_TMU0>;
119            clock-names = "fck";
120            power-domains = <&sysc R8A7779_PD_ALWAYS_ON>;
121            #renesas,channels = <3>;
122    };
123