summaryrefslogtreecommitdiffstats
path: root/Documentation/devicetree/bindings/thermal/samsung,exynos-thermal.yaml
blob: 1344df708e2d290accd1fd52bf011a01ef03fd62 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/thermal/samsung,exynos-thermal.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Samsung Exynos SoC Thermal Management Unit (TMU)

maintainers:
  - Krzysztof Kozlowski <krzk@kernel.org>

description: |
  For multi-instance tmu each instance should have an alias correctly numbered
  in "aliases" node.

properties:
  compatible:
    enum:
      - samsung,exynos3250-tmu
      - samsung,exynos4412-tmu
      - samsung,exynos4210-tmu
      - samsung,exynos5250-tmu
      - samsung,exynos5260-tmu
        # For TMU channel 0, 1 on Exynos5420:
      - samsung,exynos5420-tmu
        # For TMU channels 2, 3 and 4 of Exynos5420:
      - samsung,exynos5420-tmu-ext-triminfo
      - samsung,exynos5433-tmu
      - samsung,exynos7-tmu

  clocks:
    minItems: 1
    maxItems: 3

  clock-names:
    minItems: 1
    maxItems: 3

  interrupts:
    description: |
      The Exynos TMU supports generating interrupts when reaching given
      temperature thresholds. Number of supported thermal trip points depends
      on the SoC (only first trip points defined in DT will be configured)::
       - most of SoC: 4
       - samsung,exynos5433-tmu: 8
       - samsung,exynos7-tmu: 8
    maxItems: 1

  reg:
    items:
      - description: TMU instance registers.
      - description: |
          Shared TMU registers.

          Note:: On Exynos5420, the TRIMINFO register is misplaced for TMU
          channels 2, 3 and 4 Use "samsung,exynos5420-tmu-ext-triminfo" in
          cases, there is a misplaced register, also provide clock to access
          that base.
          TRIMINFO at 0x1006c000 contains data for TMU channel 3
          TRIMINFO at 0x100a0000 contains data for TMU channel 4
          TRIMINFO at 0x10068000 contains data for TMU channel 2
    minItems: 1

  '#thermal-sensor-cells': true

  vtmu-supply:
    description: The regulator node supplying voltage to TMU.

required:
  - compatible
  - clocks
  - clock-names
  - interrupts
  - reg

allOf:
  - $ref: /schemas/thermal/thermal-sensor.yaml
  - if:
      properties:
        compatible:
          contains:
            const: samsung,exynos5420-tmu-ext-triminfo
    then:
      properties:
        clocks:
          items:
            - description:
                Operational clock for TMU channel.
            - description:
                Optional clock to access the shared registers (e.g. TRIMINFO) of TMU
                channel.
        clock-names:
          items:
            - const: tmu_apbif
            - const: tmu_triminfo_apbif
        reg:
          minItems: 2
          maxItems: 2
  - if:
      properties:
        compatible:
          contains:
            enum:
              - samsung,exynos5433-tmu
              - samsung,exynos7-tmu
    then:
      properties:
        clocks:
          items:
            - description:
                Operational clock for TMU channel.
            - description:
                Optional special clock for functional operation of TMU channel.
        clock-names:
          items:
            - const: tmu_apbif
            - const: tmu_sclk
        reg:
          minItems: 1
          maxItems: 1

  - if:
      properties:
        compatible:
          contains:
            enum:
              - samsung,exynos3250-tmu
              - samsung,exynos4412-tmu
              - samsung,exynos4210-tmu
              - samsung,exynos5250-tmu
              - samsung,exynos5260-tmu
              - samsung,exynos5420-tmu
    then:
      properties:
        clocks:
          minItems: 1
          maxItems: 1
        reg:
          minItems: 1
          maxItems: 1

additionalProperties: false

examples:
  - |
    #include <dt-bindings/clock/exynos4.h>

    tmu@100c0000 {
        compatible = "samsung,exynos4412-tmu";
        reg = <0x100C0000 0x100>;
        interrupt-parent = <&combiner>;
        interrupts = <2 4>;
        #thermal-sensor-cells = <0>;
        clocks = <&clock CLK_TMU_APBIF>;
        clock-names = "tmu_apbif";
        vtmu-supply = <&ldo10_reg>;
    };

  - |
    #include <dt-bindings/interrupt-controller/arm-gic.h>

    tmu@10068000 {
        compatible = "samsung,exynos5420-tmu-ext-triminfo";
        reg = <0x10068000 0x100>, <0x1006c000 0x4>;
        interrupts = <GIC_SPI 184 IRQ_TYPE_LEVEL_HIGH>;
        #thermal-sensor-cells = <0>;
        clocks = <&clock 318>, <&clock 318>; /* CLK_TMU */
        clock-names = "tmu_apbif", "tmu_triminfo_apbif";
        vtmu-supply = <&ldo7_reg>;
    };

  - |
    #include <dt-bindings/interrupt-controller/arm-gic.h>

    tmu@10060000 {
        compatible = "samsung,exynos5433-tmu";
        reg = <0x10060000 0x200>;
        interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
        #thermal-sensor-cells = <0>;
        clocks = <&cmu_peris 3>, /* CLK_PCLK_TMU0_APBIF */
                 <&cmu_peris 35>; /* CLK_SCLK_TMU0 */
        clock-names = "tmu_apbif", "tmu_sclk";
        vtmu-supply = <&ldo3_reg>;
    };