gpu_opp_table: gpu-opp-table {
compatible = "operating-points-v2";
nvmem-cells = <&gpu_leakage>, <&gpu_opp_info>, <&specification_serial_number>;
nvmem-cell-names = "leakage", "opp-info", "specification_serial_number";
rockchip,supported-hw;
rockchip,pvtm-hw = <0x04>;
rockchip,pvtm-voltage-sel-hw = <
0 799 0
800 819 1
820 844 2
845 869 3
870 894 4
895 9999 5
>;
rockchip,pvtm-voltage-sel = <
0 815 0
816 835 1
836 860 2
861 885 3
886 910 4
911 9999 5
>;
rockchip,pvtm-pvtpll;
rockchip,pvtm-offset = <0x1c>;
rockchip,pvtm-sample-time = <1100>;
rockchip,pvtm-freq = <800000>;
rockchip,pvtm-volt = <750000>;
rockchip,pvtm-ref-temp = <25>;
rockchip,pvtm-temp-prop = <(-135) (-135)>;
rockchip,pvtm-thermal-zone = "gpu-thermal";
clocks = <&cru CLK_GPU>;
clock-names = "clk";
rockchip,grf = <&gpu_grf>;
volt-mem-read-margin = <
855000 1
765000 2
675000 3
495000 4
>;
low-volt-mem-read-margin = <4>;
intermediate-threshold-freq = <400000>; /* KHz */
rockchip,temp-hysteresis = <5000>;
rockchip,low-temp = <10000>;
rockchip,low-temp-min-volt = <750000>;
rockchip,high-temp = <85000>;
rockchip,high-temp-max-freq = <800000>;
/* RK3588 gpu OPPs */
opp-300000000 {
opp-supported-hw = <0xf9 0xffff>;
opp-hz = /bits/ 64 <300000000>;
opp-microvolt = <675000 675000 850000>,
<675000 675000 850000>;
};
opp-400000000 {
opp-supported-hw = <0xf9 0xffff>;
opp-hz = /bits/ 64 <400000000>;
opp-microvolt = <675000 675000 850000>,
<675000 675000 850000>;
};
opp-500000000 {
opp-supported-hw = <0xf9 0xffff>;
opp-hz = /bits/ 64 <500000000>;
opp-microvolt = <675000 675000 850000>,
<675000 675000 850000>;
};
opp-600000000 {
opp-supported-hw = <0xf9 0xffff>;
opp-hz = /bits/ 64 <600000000>;
opp-microvolt = <675000 675000 850000>,
<675000 675000 850000>;
};
opp-700000000 {
opp-supported-hw = <0xf9 0xffff>;
opp-hz = /bits/ 64 <700000000>;
opp-microvolt = <700000 700000 850000>,
<700000 700000 850000>;
opp-microvolt-L2 = <687500 687500 850000>,
<687500 687500 850000>;
opp-microvolt-L3 = <675000 675000 850000>,
<675000 675000 850000>;
opp-microvolt-L4 = <675000 675000 850000>,
<675000 675000 850000>;
opp-microvolt-L5 = <675000 675000 850000>,
<675000 675000 850000>;
};
opp-800000000 {
opp-supported-hw = <0xf9 0xffff>;
opp-hz = /bits/ 64 <800000000>;
opp-microvolt = <750000 750000 850000>,
<750000 750000 850000>;
opp-microvolt-L1 = <737500 737500 850000>,
<737500 737500 850000>;
opp-microvolt-L2 = <725000 725000 850000>,
<725000 725000 850000>;
opp-microvolt-L3 = <712500 712500 850000>,
<712500 712500 850000>;
opp-microvolt-L4 = <700000 700000 850000>,
<700000 700000 850000>;
opp-microvolt-L5 = <700000 700000 850000>,
<700000 700000 850000>;
};
opp-900000000 {
opp-supported-hw = <0xf9 0xffff>;
opp-hz = /bits/ 64 <900000000>;
opp-microvolt = <800000 800000 850000>,
<800000 800000 850000>;
opp-microvolt-L1 = <787500 787500 850000>,
<787500 787500 850000>;
opp-microvolt-L2 = <775000 775000 850000>,
<775000 775000 850000>;
opp-microvolt-L3 = <762500 762500 850000>,
<762500 762500 850000>;
opp-microvolt-L4 = <750000 750000 850000>,
<750000 750000 850000>;
opp-microvolt-L5 = <737500 737500 850000>,
<737500 737500 850000>;
};
opp-1000000000 {
opp-supported-hw = <0xf9 0xffff>;
opp-hz = /bits/ 64 <1000000000>;
opp-microvolt = <850000 850000 850000>,
<850000 850000 850000>;
opp-microvolt-L1 = <837500 837500 850000>,
<837500 837500 850000>;
opp-microvolt-L2 = <825000 825000 850000>,
<825000 825000 850000>;
opp-microvolt-L3 = <812500 812500 850000>,
<812500 812500 850000>;
opp-microvolt-L4 = <800000 800000 850000>,
<800000 800000 850000>;
opp-microvolt-L5 = <787500 787500 850000>,
<787500 787500 850000>;
};
/* RK3588J/M gpu OPPs */
opp-j-m-300000000 {
opp-supported-hw = <0x06 0xffff>;
opp-hz = /bits/ 64 <300000000>;
opp-microvolt = <750000 750000 850000>,
<750000 750000 850000>;
};
opp-j-m-400000000 {
opp-supported-hw = <0x06 0xffff>;
opp-hz = /bits/ 64 <400000000>;
opp-microvolt = <750000 750000 850000>,
<750000 750000 850000>;
};
opp-j-m-500000000 {
opp-supported-hw = <0x06 0xffff>;
opp-hz = /bits/ 64 <500000000>;
opp-microvolt = <750000 750000 850000>,
<750000 750000 850000>;
};
opp-j-m-600000000 {
opp-supported-hw = <0x06 0xffff>;
opp-hz = /bits/ 64 <600000000>;
opp-microvolt = <750000 750000 850000>,
<750000 750000 850000>;
};
opp-j-m-700000000 {
opp-supported-hw = <0x06 0xffff>;
opp-hz = /bits/ 64 <700000000>;
opp-microvolt = <750000 750000 850000>,
<750000 750000 850000>;
};
/* RK3588J gpu OPPs */
opp-j-850000000 {
opp-supported-hw = <0x04 0xffff>;
opp-hz = /bits/ 64 <850000000>;
opp-microvolt = <787500 787500 850000>,
<787500 787500 850000>;
opp-microvolt-L1 = <775000 775000 850000>,
<775000 775000 850000>;
opp-microvolt-L2 = <762500 762500 850000>,
<762500 762500 850000>;
opp-microvolt-L3 = <750000 750000 850000>,
<750000 750000 850000>;
opp-microvolt-L4 = <750000 750000 850000>,
<750000 750000 850000>;
opp-microvolt-L5 = <750000 750000 850000>,
<750000 750000 850000>;
};
/* RK3588M gpu OPPs */
opp-m-800000000 {
opp-supported-hw = <0x02 0xffff>;
opp-hz = /bits/ 64 <800000000>;
opp-microvolt = <750000 750000 850000>,
<750000 750000 850000>;
};
opp-m-900000000 {
opp-supported-hw = <0x02 0xffff>;
opp-hz = /bits/ 64 <900000000>;
opp-microvolt = <800000 800000 850000>,
<800000 800000 850000>;
opp-microvolt-L1 = <787500 787500 850000>,
<787500 787500 850000>;
opp-microvolt-L2 = <775000 775000 850000>,
<775000 775000 850000>;
opp-microvolt-L3 = <762500 762500 850000>,
<762500 762500 850000>;
opp-microvolt-L4 = <750000 750000 850000>,
<750000 750000 850000>;
opp-microvolt-L5 = <750000 750000 850000>,
<750000 750000 850000>;
};
opp-m-1000000000 {
opp-supported-hw = <0x02 0xffff>;
opp-hz = /bits/ 64 <1000000000>;
opp-microvolt = <850000 850000 850000>,
<850000 850000 850000>;
opp-microvolt-L1 = <837500 837500 850000>,
<837500 837500 850000>;
opp-microvolt-L2 = <825000 825000 850000>,
<825000 825000 850000>;
opp-microvolt-L3 = <812500 812500 850000>,
<812500 812500 850000>;
opp-microvolt-L4 = <800000 800000 850000>,
<800000 800000 850000>;
opp-microvolt-L5 = <787500 787500 850000>,
<787500 787500 850000>;
};
};
顶层属性
- gpu_opp_table: 这是一个GPU操作性能点表的定义。
- compatible: 表示这个设备树节点与"operating-points-v2"兼容。
- nvmem-cells: 定义了三个非易失性内存单元,用于存储GPU泄漏信息、OPP信息和规格序列号。
- nvmem-cell-names: 对应nvmem-cells的名字。
Rockchip特定属性
- rockchip,supported-hw: 表示支持的硬件。
- rockchip,pvtm-hw: 硬件PVTM(Process, Voltage, Temperature Monitor)的标识。
- rockchip,pvtm-voltage-sel-hw 和 rockchip,pvtm-voltage-sel: 定义了PVTM电压选择的硬件和软件映射。
- rockchip,pvtm-pvtpll: 表示PVTM PLL(Phase-Locked Loop)。
- rockchip,pvtm-offset: 定义了PVTM的偏移。
- rockchip,pvtm-sample-time: PVTM采样时间。
- rockchip,pvtm-freq: PVTM频率。
- rockchip,pvtm-volt: PVTM电压。
- rockchip,pvtm-ref-temp: PVTM参考温度。
- rockchip,pvtm-temp-prop: PVTM温度属性。
- rockchip,pvtm-thermal-zone: 指定PVTM的热区。
时钟与电压
- clocks 和 clock-names: 定义了GPU的时钟及其名称。
- rockchip,grf: GPU的General Register Files(GRF)。
- volt-mem-read-margin 和 low-volt-mem-read-margin: 定义了不同电压的内存读取裕量。
- intermediate-threshold-freq: 中间阈值频率,以KHz为单位。
温度相关属性
- rockchip,temp-hysteresis: 温度滞后值。
- rockchip,low-temp 和 rockchip,low-temp-min-volt: 低温和低温下的最小电压。
- rockchip,high-temp 和 rockchip,high-temp-max-freq: 高温和高温下的最大频率。
RK3588 GPU OPPs
这些是针对RK3588 GPU的操作性能点。
- opp-300000000 到 opp-1000000000 定义了在300MHz到1GHz之间的频率下所需的电压。
- 每个OPP包含以下字段:
opp-supported-hw
:表示支持的硬件,0xf9表示支持的硬件系列。opp-hz
:频率,以赫兹为单位。opp-microvolt
:电压,以微伏为单位,多个值用于不同的电压域。opp-microvolt-Lx
:L1到L5表示不同电压域的具体电压值。
RK3588J/M GPU OPPs
这些是针对RK3588J和RK3588M GPU的操作性能点。
- opp-j-m-300000000 到 opp-j-m-700000000 定义了在300MHz到700MHz之间的频率下所需的电压。
opp-supported-hw
:0x06表示支持的硬件系列。
RK3588J GPU OPPs
这些是专门针对RK3588J GPU的操作性能点。
- opp-j-850000000 定义了在850MHz频率下所需的电压。
opp-supported-hw
:0x04表示支持的硬件系列。
RK3588M GPU OPPs
这些是专门针对RK3588M GPU的操作性能点。
- opp-m-800000000 到 opp-m-1000000000 定义了在800MHz到1GHz之间的频率下所需的电压。
opp-supported-hw
:0x02表示支持的硬件系列。