GNU Linux-libre 5.10.217-gnu1
[releases.git] / Documentation / devicetree / bindings / thermal / rcar-thermal.yaml
1 # SPDX-License-Identifier: GPL-2.0-only
2 # Copyright (C) 2020 Renesas Electronics Corp.
3 %YAML 1.2
4 ---
5 $id: http://devicetree.org/schemas/thermal/rcar-thermal.yaml#
6 $schema: http://devicetree.org/meta-schemas/core.yaml#
7
8 title: Renesas R-Car Thermal
9
10 maintainers:
11   - Niklas Söderlund <niklas.soderlund@ragnatech.se>
12
13 properties:
14   compatible:
15     oneOf:
16       - items:
17           - enum:
18               - renesas,thermal-r8a73a4 # R-Mobile APE6
19               - renesas,thermal-r8a7779 # R-Car H1
20           - const: renesas,rcar-thermal # Generic without thermal-zone
21       - items:
22           - enum:
23               - renesas,thermal-r8a7742 # RZ/G1H
24               - renesas,thermal-r8a7743 # RZ/G1M
25               - renesas,thermal-r8a7744 # RZ/G1N
26           - const: renesas,rcar-gen2-thermal # Generic thermal-zone
27       - items:
28           - enum:
29               - renesas,thermal-r8a7790 # R-Car H2
30               - renesas,thermal-r8a7791 # R-Car M2-W
31               - renesas,thermal-r8a7792 # R-Car V2H
32               - renesas,thermal-r8a7793 # R-Car M2-N
33           - const: renesas,rcar-gen2-thermal # Generic thermal-zone
34           - const: renesas,rcar-thermal # Generic without thermal-zone
35       - items:
36           - enum:
37               - renesas,thermal-r8a774c0 # RZ/G2E
38               - renesas,thermal-r8a77970 # R-Car V3M
39               - renesas,thermal-r8a77990 # R-Car E3
40               - renesas,thermal-r8a77995 # R-Car D3
41   reg:
42     description:
43       Address ranges of the thermal registers. If more then one range is given
44       the first one must be the common registers followed by each sensor
45       according the the datasheet.
46     minItems: 1
47     maxItems: 4
48
49   interrupts:
50     minItems: 1
51     maxItems: 3
52
53   clocks:
54     maxItems: 1
55
56   power-domains:
57     maxItems: 1
58
59   resets:
60     maxItems: 1
61
62   "#thermal-sensor-cells":
63     const: 0
64
65 if:
66   properties:
67     compatible:
68       contains:
69         enum:
70           - renesas,thermal-r8a73a4 # R-Mobile APE6
71           - renesas,thermal-r8a7779 # R-Car H1
72 then:
73   required:
74     - compatible
75     - reg
76 else:
77   required:
78     - compatible
79     - reg
80     - interrupts
81     - clocks
82     - power-domains
83     - resets
84
85 additionalProperties: false
86
87 examples:
88   # Example (non interrupt support)
89   - |
90     thermal@ffc48000 {
91             compatible = "renesas,thermal-r8a7779", "renesas,rcar-thermal";
92             reg = <0xffc48000 0x38>;
93     };
94
95   # Example (interrupt support)
96   - |
97     #include <dt-bindings/clock/r8a73a4-clock.h>
98     #include <dt-bindings/interrupt-controller/arm-gic.h>
99     #include <dt-bindings/interrupt-controller/irq.h>
100
101     thermal@e61f0000 {
102             compatible = "renesas,thermal-r8a73a4", "renesas,rcar-thermal";
103             reg = <0xe61f0000 0x14>, <0xe61f0100 0x38>,
104                   <0xe61f0200 0x38>, <0xe61f0300 0x38>;
105             interrupts = <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>;
106             clocks = <&mstp5_clks R8A73A4_CLK_THERMAL>;
107             power-domains = <&pd_c5>;
108     };
109
110   # Example (with thermal-zone)
111   - |
112     #include <dt-bindings/clock/r8a7790-cpg-mssr.h>
113     #include <dt-bindings/interrupt-controller/arm-gic.h>
114     #include <dt-bindings/power/r8a7790-sysc.h>
115
116     thermal: thermal@e61f0000 {
117       compatible = "renesas,thermal-r8a7790",
118                    "renesas,rcar-gen2-thermal",
119                    "renesas,rcar-thermal";
120             reg = <0xe61f0000 0x10>, <0xe61f0100 0x38>;
121             interrupts = <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>;
122             clocks = <&cpg CPG_MOD 522>;
123             power-domains = <&sysc R8A7790_PD_ALWAYS_ON>;
124             resets = <&cpg 522>;
125             #thermal-sensor-cells = <0>;
126     };
127
128     thermal-zones {
129             cpu_thermal: cpu-thermal {
130                     polling-delay-passive = <1000>;
131                     polling-delay = <5000>;
132
133                     thermal-sensors = <&thermal>;
134
135                     trips {
136                             cpu-crit {
137                                     temperature = <115000>;
138                                     hysteresis = <0>;
139                                     type = "critical";
140                             };
141                     };
142                     cooling-maps {
143                     };
144             };
145     };