← Documents Documentation/devicetree/bindings/thermal/samsung,exynos-thermal.yaml GitHub 원문 ↗

Linux 6.18.37 · Devicetree Bindings / Thermal

Samsung Exynos Thermal Management Unit

Exynos TMU의 shared TRIMINFO와 세대별 clock·register 조건을 설명합니다.

Source pathDocumentation/devicetree/bindings/thermal/samsung,exynos-thermal.yaml
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

요약과 해설

samsung,exynos-thermal.yaml:1-185

Exynos TMU의 shared TRIMINFO와 세대별 clock·register 조건을 설명합니다. 접을 수 있는 영어 원문 전체는 줄 좌표를 보존하고, 한국어 전문 번역에서는 compatible·property·register·interrupt·clock·regulator·수치·예제 코드를 원형대로 유지합니다.

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

원문 전체 펼치기
1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2 %YAML 1.2
3 ---
4 $id: http://devicetree.org/schemas/thermal/samsung,exynos-thermal.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: Samsung Exynos SoC Thermal Management Unit (TMU)
8
9 maintainers:
10 - Krzysztof Kozlowski <krzk@kernel.org>
11
12 description: |
13 For multi-instance tmu each instance should have an alias correctly numbered
14 in "aliases" node.
15
16 properties:
17 compatible:
18 enum:
19 - samsung,exynos3250-tmu
20 - samsung,exynos4412-tmu
21 - samsung,exynos4210-tmu
22 - samsung,exynos5250-tmu
23 - samsung,exynos5260-tmu
24 # For TMU channel 0, 1 on Exynos5420:
25 - samsung,exynos5420-tmu
26 # For TMU channels 2, 3 and 4 of Exynos5420:
27 - samsung,exynos5420-tmu-ext-triminfo
28 - samsung,exynos5433-tmu
29 - samsung,exynos7-tmu
30
31 clocks:
32 minItems: 1
33 maxItems: 3
34
35 clock-names:
36 minItems: 1
37 maxItems: 3
38
39 interrupts:
40 description: |
41 The Exynos TMU supports generating interrupts when reaching given
42 temperature thresholds. Number of supported thermal trip points depends
43 on the SoC (only first trip points defined in DT will be configured)::
44 - most of SoC: 4
45 - samsung,exynos5433-tmu: 8
46 - samsung,exynos7-tmu: 8
47 maxItems: 1
48
49 reg:
50 items:
51 - description: TMU instance registers.
52 - description: |
53 Shared TMU registers.
54
55 Note:: On Exynos5420, the TRIMINFO register is misplaced for TMU
56 channels 2, 3 and 4 Use "samsung,exynos5420-tmu-ext-triminfo" in
57 cases, there is a misplaced register, also provide clock to access
58 that base.
59 TRIMINFO at 0x1006c000 contains data for TMU channel 3
60 TRIMINFO at 0x100a0000 contains data for TMU channel 4
61 TRIMINFO at 0x10068000 contains data for TMU channel 2
62 minItems: 1
63
64 '#thermal-sensor-cells':
65 const: 0
66
67 vtmu-supply:
68 description: The regulator node supplying voltage to TMU.
69
70 required:
71 - compatible
72 - clocks
73 - clock-names
74 - interrupts
75 - reg
76
77 allOf:
78 - $ref: /schemas/thermal/thermal-sensor.yaml
79 - if:
80 properties:
81 compatible:
82 contains:
83 const: samsung,exynos5420-tmu-ext-triminfo
84 then:
85 properties:
86 clocks:
87 items:
88 - description:
89 Operational clock for TMU channel.
90 - description:
91 Optional clock to access the shared registers (e.g. TRIMINFO) of TMU
92 channel.
93 clock-names:
94 items:
95 - const: tmu_apbif
96 - const: tmu_triminfo_apbif
97 reg:
98 minItems: 2
99 maxItems: 2
100 - if:
101 properties:
102 compatible:
103 contains:
104 enum:
105 - samsung,exynos5433-tmu
106 - samsung,exynos7-tmu
107 then:
108 properties:
109 clocks:
110 items:
111 - description:
112 Operational clock for TMU channel.
113 - description:
114 Optional special clock for functional operation of TMU channel.
115 clock-names:
116 items:
117 - const: tmu_apbif
118 - const: tmu_sclk
119 reg:
120 minItems: 1
121 maxItems: 1
122
123 - if:
124 properties:
125 compatible:
126 contains:
127 enum:
128 - samsung,exynos3250-tmu
129 - samsung,exynos4412-tmu
130 - samsung,exynos4210-tmu
131 - samsung,exynos5250-tmu
132 - samsung,exynos5260-tmu
133 - samsung,exynos5420-tmu
134 then:
135 properties:
136 clocks:
137 minItems: 1
138 maxItems: 1
139 reg:
140 minItems: 1
141 maxItems: 1
142
143 additionalProperties: false
144
145 examples:
146 - |
147 #include <dt-bindings/clock/exynos4.h>
148
149 tmu@100c0000 {
150 compatible = "samsung,exynos4412-tmu";
151 reg = <0x100C0000 0x100>;
152 interrupt-parent = <&combiner>;
153 interrupts = <2 4>;
154 #thermal-sensor-cells = <0>;
155 clocks = <&clock CLK_TMU_APBIF>;
156 clock-names = "tmu_apbif";
157 vtmu-supply = <&ldo10_reg>;
158 };
159
160 - |
161 #include <dt-bindings/interrupt-controller/arm-gic.h>
162
163 tmu@10068000 {
164 compatible = "samsung,exynos5420-tmu-ext-triminfo";
165 reg = <0x10068000 0x100>, <0x1006c000 0x4>;
166 interrupts = <GIC_SPI 184 IRQ_TYPE_LEVEL_HIGH>;
167 #thermal-sensor-cells = <0>;
168 clocks = <&clock 318>, <&clock 318>; /* CLK_TMU */
169 clock-names = "tmu_apbif", "tmu_triminfo_apbif";
170 vtmu-supply = <&ldo7_reg>;
171 };
172
173 - |
174 #include <dt-bindings/interrupt-controller/arm-gic.h>
175
176 tmu@10060000 {
177 compatible = "samsung,exynos5433-tmu";
178 reg = <0x10060000 0x200>;
179 interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
180 #thermal-sensor-cells = <0>;
181 clocks = <&cmu_peris 3>, /* CLK_PCLK_TMU0_APBIF */
182 <&cmu_peris 35>; /* CLK_SCLK_TMU0 */
183 clock-names = "tmu_apbif", "tmu_sclk";
184 vtmu-supply = <&ldo3_reg>;
185 };
186

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

Samsung Exynos Thermal Management Unit

1-15

이 GPL-2.0-only 또는 BSD-2-Clause YAML 스키마는 Samsung Exynos SoC Thermal Management Unit(TMU)을 정의합니다. TMU instance가 여러 개이면 각 instance에 `aliases` node에서 올바르게 번호를 매긴 alias가 있어야 합니다. Maintainer는 Krzysztof Kozlowski입니다.

지원 Exynos TMU compatible

16-30

Exynos3250, 4412, 4210, 5250, 5260, 5420, 5433, Exynos7 TMU를 지원합니다. Exynos5420의 channel 0·1은 `samsung,exynos5420-tmu`, channel 2·3·4처럼 TRIMINFO 위치가 다른 경우는 `samsung,exynos5420-tmu-ext-triminfo`를 사용합니다.

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

Clock 수와 thermal trip interrupt

31-48

`clocks`와 `clock-names`는 각각 1~3개를 허용합니다. TMU는 지정된 온도 임계값에 도달하면 interrupt를 생성합니다. Devicetree에 정의된 첫 trip부터 구성하며 대부분 SoC는 4개, Exynos5433과 Exynos7은 8개 thermal trip point를 지원합니다. `interrupts` 자체는 최대 한 항목입니다.

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

Instance register와 shared TRIMINFO

49-69

`reg`의 첫 항목은 TMU instance register이고 둘째 선택 항목은 shared TMU register입니다. Exynos5420 channel 2·3·4의 TRIMINFO는 잘못 배치되어 있으므로 ext-triminfo compatible과 shared base 접근 clock을 함께 제공해야 합니다. TRIMINFO 주소는 channel 3이 `0x1006c000`, channel 4가 `0x100a0000`, channel 2가 `0x10068000`입니다. `#thermal-sensor-cells = 0`이고 `vtmu-supply`는 TMU 전압 regulator입니다.

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':
  const: 0

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

필수 속성과 공통 스키마

70-78

`compatible`, `clocks`, `clock-names`, `interrupts`, `reg`가 필수입니다. 공통 `/schemas/thermal/thermal-sensor.yaml`도 함께 적용합니다.

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

allOf:
  - $ref: /schemas/thermal/thermal-sensor.yaml

Exynos5420 external TRIMINFO 조건

79-99

`samsung,exynos5420-tmu-ext-triminfo`는 TMU channel operational clock과 shared TRIMINFO register 접근 clock 두 개를 사용합니다. 이름은 각각 `tmu_apbif`, `tmu_triminfo_apbif`이며 `reg`도 instance와 shared 범위를 합쳐 정확히 두 항목이어야 합니다.

- 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

Exynos5433·Exynos7 clock 조건

100-122

Exynos5433과 Exynos7은 TMU channel operational clock과 functional operation용 special clock 두 개를 사용합니다. 이름은 `tmu_apbif`, `tmu_sclk`이며 `reg`는 정확히 한 항목입니다.

- 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

기존 Exynos 단일 clock 조건

123-144

Exynos3250, 4412, 4210, 5250, 5260과 일반 Exynos5420 compatible은 clock 1개와 register 범위 1개만 사용합니다. `additionalProperties: false`로 정의되지 않은 속성을 금지합니다.

  - 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

Exynos4412 TMU 예제

145-159

첫 예제는 `0x100c0000`의 Exynos4412 TMU, combiner interrupt `<2 4>`, `CLK_TMU_APBIF`, `tmu_apbif` clock name과 `ldo10_reg` 공급 regulator를 사용합니다.

- |
  #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>;
  };

Exynos5420 external TRIMINFO 예제

160-172

둘째 예제는 channel 2의 instance base `0x10068000`과 channel 3 TRIMINFO shared base `0x1006c000`을 함께 지정합니다. GIC SPI 184, 두 개의 CLK_TMU handle, `tmu_apbif`·`tmu_triminfo_apbif` 이름과 `ldo7_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>;
  };

Exynos5433 TMU 예제

173-185

셋째 예제는 `0x10060000`의 0x200-byte Exynos5433 TMU, GIC SPI 95, APB interface clock과 special functional clock을 사용합니다. Clock 이름은 `tmu_apbif`, `tmu_sclk`이며 공급 regulator는 `ldo3_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>;
  };