요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/thermal/qoriq-thermal.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Thermal Monitoring Unit (TMU) on Freescale QorIQ SoCs
maintainers:
- Shawn Guo <[email protected]>
- Sascha Hauer <[email protected]>
- Fabio Estevam <[email protected]>
$ref: thermal-sensor.yaml#
properties:
compatible:
description: |
The version of the device is determined by the TMU IP Block Revision
Register (IPBRR0) at offset 0x0BF8.
Table of correspondences between IPBRR0 values and example chips:
Value Device
---------- -----
0x01900102 T1040
enum:
- fsl,qoriq-tmu
- fsl,imx8mq-tmu
reg:
maxItems: 1
interrupts:
maxItems: 1
fsl,tmu-range:
$ref: /schemas/types.yaml#/definitions/uint32-array
description: |
The values to be programmed into TTRnCR, as specified by the SoC
reference manual. The first cell is TTR0CR, the second is TTR1CR, etc.
minItems: 2
maxItems: 7
fsl,tmu-calibration:
$ref: /schemas/types.yaml#/definitions/uint32-matrix
description: |
A list of cell pairs containing temperature calibration data, as
specified by the SoC reference manual. The first cell of each pair
is the value to be written to TTCFGR, and the second is the value
to be written to TSCFGR.
items:
items:
- description: value for TTCFGR
- description: value for TSCFGR
minItems: 1
maxItems: 64
little-endian:
description: |
boolean, if present, the TMU registers are little endian. If absent,
the default is big endian.
type: boolean
clocks:
maxItems: 1
"#thermal-sensor-cells":
const: 1
required:
- compatible
- reg
- interrupts
- fsl,tmu-range
- fsl,tmu-calibration
unevaluatedProperties: false
examples:
- |
tmu@f0000 {
compatible = "fsl,qoriq-tmu";
reg = <0xf0000 0x1000>;
interrupts = <18 2 0 0>;
fsl,tmu-range = <0x000a0000 0x00090026 0x0008004a 0x0001006a>;
fsl,tmu-calibration = <0x00000000 0x00000025>,
<0x00000001 0x00000028>,
<0x00000002 0x0000002d>,
<0x00000003 0x00000031>,
<0x00000004 0x00000036>,
<0x00000005 0x0000003a>,
<0x00000006 0x00000040>,
<0x00000007 0x00000044>,
<0x00000008 0x0000004a>,
<0x00000009 0x0000004f>,
<0x0000000a 0x00000054>,
<0x00010000 0x0000000d>,
<0x00010001 0x00000013>,
<0x00010002 0x00000019>,
<0x00010003 0x0000001f>,
<0x00010004 0x00000025>,
<0x00010005 0x0000002d>,
<0x00010006 0x00000033>,
<0x00010007 0x00000043>,
<0x00010008 0x0000004b>,
<0x00010009 0x00000053>,
<0x00020000 0x00000010>,
<0x00020001 0x00000017>,
<0x00020002 0x0000001f>,
<0x00020003 0x00000029>,
<0x00020004 0x00000031>,
<0x00020005 0x0000003c>,
<0x00020006 0x00000042>,
<0x00020007 0x0000004d>,
<0x00020008 0x00000056>,
<0x00030000 0x00000012>,
<0x00030001 0x0000001d>;
#thermal-sensor-cells = <1>;
};
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
Freescale QorIQ Thermal Monitoring Unit
1-15이 GPL-2.0-only 또는 BSD-2-Clause YAML 스키마는 Freescale QorIQ SoC의 Thermal Monitoring Unit(TMU)을 정의합니다. Maintainer는 Shawn Guo, Sascha Hauer, Fabio Estevam이며 공통 `thermal-sensor.yaml#` 스키마를 사용합니다.
IPBRR0 revision과 compatible
16-28장치 버전은 offset `0x0BF8`의 TMU IP Block Revision Register인 `IPBRR0` 값으로 판별합니다. 대응표의 예로 `0x01900102`는 T1040입니다. `compatible`은 QorIQ TMU용 `fsl,qoriq-tmu` 또는 i.MX8MQ TMU용 `fsl,imx8mq-tmu`입니다.
properties:
compatible:
description: |
The version of the device is determined by the TMU IP Block Revision
Register (IPBRR0) at offset 0x0BF8.
Table of correspondences between IPBRR0 values and example chips:
Value Device
---------- -----
0x01900102 T1040
enum:
- fsl,qoriq-tmu
- fsl,imx8mq-tmu
레지스터·인터럽트와 TTRnCR 범위
29-42`reg`와 `interrupts`는 각각 최대 한 항목입니다. `fsl,tmu-range`는 SoC reference manual에 따라 TTRnCR에 기록할 `uint32-array`입니다. 첫 셀은 TTR0CR, 둘째 셀은 TTR1CR에 대응하고 이후도 같은 순서이며 2~7개 셀을 허용합니다.
reg:
maxItems: 1
interrupts:
maxItems: 1
fsl,tmu-range:
$ref: /schemas/types.yaml#/definitions/uint32-array
description: |
The values to be programmed into TTRnCR, as specified by the SoC
reference manual. The first cell is TTR0CR, the second is TTR1CR, etc.
minItems: 2
maxItems: 7
TTCFGR·TSCFGR 보정과 endian
43-61`fsl,tmu-calibration`은 SoC reference manual이 지정한 온도 보정 데이터의 `uint32-matrix`입니다. 각 행의 첫 셀은 TTCFGR에, 둘째 셀은 TSCFGR에 기록하며 1~64개 행을 허용합니다. Boolean `little-endian`이 있으면 TMU register가 little endian이고, 없으면 기본값은 big endian입니다.
fsl,tmu-calibration:
$ref: /schemas/types.yaml#/definitions/uint32-matrix
description: |
A list of cell pairs containing temperature calibration data, as
specified by the SoC reference manual. The first cell of each pair
is the value to be written to TTCFGR, and the second is the value
to be written to TSCFGR.
items:
items:
- description: value for TTCFGR
- description: value for TSCFGR
minItems: 1
maxItems: 64
little-endian:
description: |
boolean, if present, the TMU registers are little endian. If absent,
the default is big endian.
type: boolean
Clock, sensor cell과 필수 속성
62-77`clocks`는 최대 한 항목이고 `#thermal-sensor-cells = 1`로 센서 ID 한 셀을 받습니다. `compatible`, `reg`, `interrupts`, `fsl,tmu-range`, `fsl,tmu-calibration`이 필수이며 `unevaluatedProperties: false`로 평가되지 않은 속성을 금지합니다.
clocks:
maxItems: 1
"#thermal-sensor-cells":
const: 1
required:
- compatible
- reg
- interrupts
- fsl,tmu-range
- fsl,tmu-calibration
unevaluatedProperties: false
QorIQ TMU 보정 예제
78-118예제는 `0xf0000`의 0x1000-byte QorIQ TMU와 interrupt `<18 2 0 0>`을 선언합니다. 네 개의 `fsl,tmu-range` 값과 TTCFGR·TSCFGR 쌍으로 이루어진 전체 보정 행렬을 원형대로 제시하며 1-cell thermal sensor provider로 노출합니다.
- |
tmu@f0000 {
compatible = "fsl,qoriq-tmu";
reg = <0xf0000 0x1000>;
interrupts = <18 2 0 0>;
fsl,tmu-range = <0x000a0000 0x00090026 0x0008004a 0x0001006a>;
fsl,tmu-calibration = <0x00000000 0x00000025>,
<0x00000001 0x00000028>,
<0x00000002 0x0000002d>,
<0x00000003 0x00000031>,
<0x00000004 0x00000036>,
<0x00000005 0x0000003a>,
<0x00000006 0x00000040>,
<0x00000007 0x00000044>,
<0x00000008 0x0000004a>,
<0x00000009 0x0000004f>,
<0x0000000a 0x00000054>,
<0x00010000 0x0000000d>,
<0x00010001 0x00000013>,
<0x00010002 0x00000019>,
<0x00010003 0x0000001f>,
<0x00010004 0x00000025>,
<0x00010005 0x0000002d>,
<0x00010006 0x00000033>,
<0x00010007 0x00000043>,
<0x00010008 0x0000004b>,
<0x00010009 0x00000053>,
<0x00020000 0x00000010>,
<0x00020001 0x00000017>,
<0x00020002 0x0000001f>,
<0x00020003 0x00000029>,
<0x00020004 0x00000031>,
<0x00020005 0x0000003c>,
<0x00020006 0x00000042>,
<0x00020007 0x0000004d>,
<0x00020008 0x00000056>,
<0x00030000 0x00000012>,
<0x00030001 0x0000001d>;
#thermal-sensor-cells = <1>;
};
요약과 해설
qoriq-thermal.yaml:1-118QorIQ TMU의 IP revision, range register, 보정 행렬과 endian 설정을 설명합니다. 접을 수 있는 영어 원문 전체는 줄 좌표를 보존하고, 한국어 전문 번역에서는 compatible·property·register·interrupt·clock·power domain·reset·수치·예제 코드를 원형대로 유지합니다.