← Documents Documentation/devicetree/bindings/cpufreq/nvidia,tegra20-cpufreq.txt GitHub 원문 ↗

Linux 6.18.37 · Devicetree Bindings

Tegra20 CPUFreq

Process/speedo ID mask, voltage triplet과 thermal cooling 바인딩입니다.

Source pathDocumentation/devicetree/bindings/cpufreq/nvidia,tegra20-cpufreq.txt
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

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

1. 요약·해설

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

요약과 해설

nvidia,tegra20-cpufreq.txt:1-56

Tegra20/30 mask 차이와 OPP enable 조건을 설명합니다.

2. 영어 원문 전체

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

원문 전체 펼치기
1 Binding for NVIDIA Tegra20 CPUFreq
2 ==================================
3
4 Required properties:
5 - clocks: Must contain an entry for the CPU clock.
6 See ../clocks/clock-bindings.txt for details.
7 - operating-points-v2: See ../bindings/opp/opp-v2.yaml for details.
8 - #cooling-cells: Should be 2. See ../thermal/thermal-cooling-devices.yaml for details.
9
10 For each opp entry in 'operating-points-v2' table:
11 - opp-supported-hw: Two bitfields indicating:
12 On Tegra20:
13 1. CPU process ID mask
14 2. SoC speedo ID mask
15
16 On Tegra30:
17 1. CPU process ID mask
18 2. CPU speedo ID mask
19
20 A bitwise AND is performed against these values and if any bit
21 matches, the OPP gets enabled.
22
23 - opp-microvolt: CPU voltage triplet.
24
25 Optional properties:
26 - cpu-supply: Phandle to the CPU power supply.
27
28 Example:
29 regulators {
30 cpu_reg: regulator0 {
31 regulator-name = "vdd_cpu";
32 };
33 };
34
35 cpu0_opp_table: opp_table0 {
36 compatible = "operating-points-v2";
37
38 opp@456000000 {
39 clock-latency-ns = <125000>;
40 opp-microvolt = <825000 825000 1125000>;
41 opp-supported-hw = <0x03 0x0001>;
42 opp-hz = /bits/ 64 <456000000>;
43 };
44
45 ...
46 };
47
48 cpus {
49 cpu@0 {
50 compatible = "arm,cortex-a9";
51 clocks = <&tegra_car TEGRA20_CLK_CCLK>;
52 operating-points-v2 = <&cpu0_opp_table>;
53 cpu-supply = <&cpu_reg>;
54 #cooling-cells = <2>;
55 };
56 };
57

3. 한국어 전문 번역

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

Tegra20/30 OPP hardware masks

1-27

NVIDIA Tegra20 CPUFreq 바인딩입니다. 필수 `clocks`는 CPU clock, `operating-points-v2`는 OPP table, `#cooling-cells`는 thermal cooling device용 2-cell specifier입니다.

각 OPP의 `opp-supported-hw`는 두 bitfield입니다. Tegra20에서는 CPU process-ID mask와 SoC speedo-ID mask, Tegra30에서는 CPU process-ID mask와 CPU speedo-ID mask를 뜻합니다.

Hardware 값과 mask를 bitwise AND하여 어느 bit라도 일치하면 OPP를 enable합니다. `opp-microvolt`는 CPU voltage triplet입니다. 선택적인 `cpu-supply`는 CPU power-supply regulator phandle입니다.

Tegra OPP mask fields
SoCField 0Field 1
Tegra20CPU process IDSoC speedo ID
Tegra30CPU process IDCPU speedo ID

Tegra20과 Tegra30에서 두 번째 bitfield의 대상이 다릅니다.

Tegra OPP enable test
Process / speedo IDsHardware bitfields
Bitwise AND with opp-supported-hw각 field 비교
Any matching bitOPP enabled
No matching bitOPP disabled

Fuse-derived hardware ID와 OPP mask가 겹칠 때 operating point를 활성화합니다.

Regulator, OPP와 CPU consumer 예제

28-56

예제 regulator `vdd_cpu`를 CPU supply로 사용합니다. 456 MHz OPP는 825000/825000/1125000 uV voltage triplet, process/speedo mask `<0x03 0x0001>`, 125000 ns latency를 지정합니다.

Cortex-A9 CPU0은 `TEGRA20_CLK_CCLK`, OPP table, regulator와 `#cooling-cells = <2>`를 연결합니다.

regulators {
        cpu_reg: regulator0 {
                regulator-name = "vdd_cpu";
        };
};

cpu0_opp_table: opp_table0 {
        compatible = "operating-points-v2";

        opp@456000000 {
                clock-latency-ns = <125000>;
                opp-microvolt = <825000 825000 1125000>;
                opp-supported-hw = <0x03 0x0001>;
                opp-hz = /bits/ 64 <456000000>;
        };

        ...
};

cpus {
        cpu@0 {
                compatible = "arm,cortex-a9";
                clocks = <&tegra_car TEGRA20_CLK_CCLK>;
                operating-points-v2 = <&cpu0_opp_table>;
                cpu-supply = <&cpu_reg>;
                #cooling-cells = <2>;
        };
};