关于CPU的相关控制
频率控制部分
以下为cpu参数和频率表,通过修改或者新增opp节点可以实现对soc进行超频等操作,R36Plus搭载的RK3326 Soc官方预设最高频率只有1.296Ghz,远达不到官方宣称的1.5Ghz频率。为此,我们可以自行提高电压对Soc进行超频,经过实测,1.512Ghz是1.35V(芯片手册中允许的最大设计电压,超过可能会损坏硬件)下能达到的最高频率,但在部分系统中可能并不稳定,目前仅在ArkOS中可以正常运行这一频率。
cpu0-opp-table {
compatible = "operating-points-v2";
opp-shared;
rockchip,temp-hysteresis = <0x1388>;
rockchip,low-temp = <0x00>;
rockchip,low-temp-min-volt = <0xf4240>;
rockchip,low-temp-adjust-volt = <0x00 0x5e8 0xc350>;
clocks = <0x02 0x01>;
rockchip,avs-scale = <0x04>;
rockchip,max-volt = <0x149970>;
rockchip,evb-irdrop = <0x61a8>;
nvmem-cells = <0x07 0x08>;
nvmem-cell-names = "cpu_leakage\0performance";
rockchip,bin-scaling-sel = <0x00 0x0d 0x01 0x0d>;
rockchip,pvtm-voltage-sel = <0x00 0xc350 0x00 0xc351 0xd2f0 0x01 0xd2f1 0xea60 0x02 0xea61 0x1869f 0x03>;
rockchip,pvtm-freq = <0x639c0>;
rockchip,pvtm-volt = <0xf4240>;
rockchip,pvtm-ch = <0x00 0x00>;
rockchip,pvtm-sample-time = <0x3e8>;
rockchip,pvtm-number = <0x0a>;
rockchip,pvtm-error = <0x3e8>;
rockchip,pvtm-ref-temp = <0x28>;
rockchip,pvtm-temp-prop = <0xffffffc8 0xffffffc8>;
rockchip,thermal-zone = "soc-thermal";
rockchip,avs = <0x01>;
phandle = <0x03>;
opp-408000000 {
opp-hz = <0x00 0x18519600>;
opp-microvolt = <0xe7ef0 0xe7ef0 0x149970>;
opp-microvolt-L0 = <0xe7ef0 0xe7ef0 0x149970>;
opp-microvolt-L1 = <0xe7ef0 0xe7ef0 0x149970>;
opp-microvolt-L2 = <0xe7ef0 0xe7ef0 0x149970>;
opp-microvolt-L3 = <0xe7ef0 0xe7ef0 0x149970>;
clock-latency-ns = <0x9c40>;
opp-suspend;
};
opp-600000000 {
opp-hz = <0x00 0x23c34600>;
opp-microvolt = <0xe7ef0 0xe7ef0 0x149970>;
opp-microvolt-L0 = <0xe7ef0 0xe7ef0 0x149970>;
opp-microvolt-L1 = <0xe7ef0 0xe7ef0 0x149970>;
opp-microvolt-L2 = <0xe7ef0 0xe7ef0 0x149970>;
opp-microvolt-L3 = <0xe7ef0 0xe7ef0 0x149970>;
clock-latency-ns = <0x9c40>;
};
opp-816000000 {
opp-hz = <0x00 0x30a32c00>;
opp-microvolt = <0x100590 0x100590 0x149970>;
opp-microvolt-L0 = <0x100590 0x100590 0x149970>;
opp-microvolt-L1 = <0xf4240 0xf4240 0x149970>;
opp-microvolt-L2 = <0xf4240 0xf4240 0x149970>;
opp-microvolt-L3 = <0xe7ef0 0xe7ef0 0x149970>;
clock-latency-ns = <0x9c40>;
};
opp-1008000000 {
opp-hz = <0x00 0x3c14dc00>;
opp-microvolt = <0x11edd8 0x11edd8 0x149970>;
opp-microvolt-L0 = <0x11edd8 0x11edd8 0x149970>;
opp-microvolt-L1 = <0x112a88 0x112a88 0x149970>;
opp-microvolt-L2 = <0x112a88 0x112a88 0x149970>;
opp-microvolt-L3 = <0x100590 0x100590 0x149970>;
clock-latency-ns = <0x9c40>;
};
opp-1104000000 {
opp-hz = <0x00 0x41cdb400>;
opp-microvolt = <0x13d620 0x13d620 0x149970>;
opp-microvolt-L0 = <0x13d620 0x13d620 0x149970>;
opp-microvolt-L1 = <0x137478 0x137478 0x149970>;
opp-microvolt-L2 = <0x1312d0 0x1312d0 0x149970>;
opp-microvolt-L3 = <0x124f80 0x124f80 0x149970>;
clock-latency-ns = <0x9c40>;
};
opp-1200000000 {
opp-hz = <0x00 0x47868c00>;
opp-microvolt = <0x13d620 0x13d620 0x149970>;
opp-microvolt-L0 = <0x13d620 0x13d620 0x149970>;
opp-microvolt-L1 = <0x137478 0x137478 0x149970>;
opp-microvolt-L2 = <0x1312d0 0x1312d0 0x149970>;
opp-microvolt-L3 = <0x124f80 0x124f80 0x149970>;
clock-latency-ns = <0x9c40>;
};
opp-1248000000 {
opp-hz = <0x00 0x4a62f800>;
opp-microvolt = <0x149970 0x149970 0x149970>;
opp-microvolt-L0 = <0x149970 0x149970 0x149970>;
opp-microvolt-L1 = <0x13d620 0x13d620 0x149970>;
opp-microvolt-L2 = <0x137478 0x137478 0x149970>;
opp-microvolt-L3 = <0x12b128 0x12b128 0x149970>;
clock-latency-ns = <0x9c40>;
};
opp-1296000000 {
opp-hz = <0x00 0x4d3f6400>;
opp-microvolt = <0x149970 0x149970 0x149970>;
opp-microvolt-L0 = <0x149970 0x149970 0x149970>;
opp-microvolt-L1 = <0x149970 0x149970 0x149970>;
opp-microvolt-L2 = <0x13d620 0x13d620 0x149970>;
opp-microvolt-L3 = <0x1312d0 0x1312d0 0x149970>;
clock-latency-ns = <0x9c40>;
};
opp-1416000000 {
opp-hz = <0x00 0x54667200>;
opp-microvolt = <0x149970 0x149970 0x149970>;
opp-microvolt-L0 = <0x149970 0x149970 0x149970>;
opp-microvolt-L1 = <0x149970 0x149970 0x149970>;
opp-microvolt-L2 = <0x149970 0x149970 0x149970>;
opp-microvolt-L3 = <0x149970 0x149970 0x149970>;
clock-latency-ns = <0x9c40>;
};
opp-1440000000 {
opp-hz = <0x00 0x55d4a800>;
opp-microvolt = <0x149970 0x149970 0x149970>;
opp-microvolt-L0 = <0x149970 0x149970 0x149970>;
opp-microvolt-L1 = <0x149970 0x149970 0x149970>;
opp-microvolt-L2 = <0x149970 0x149970 0x149970>;
opp-microvolt-L3 = <0x149970 0x149970 0x149970>;
clock-latency-ns = <0x9c40>;
};
opp-1512000000 {
opp-hz = <0x00 0x5a1f4a00>;
opp-microvolt = <0x149970 0x149970 0x149970>;
opp-microvolt-L0 = <0x149970 0x149970 0x149970>;
opp-microvolt-L1 = <0x149970 0x149970 0x149970>;
opp-microvolt-L2 = <0x13d620 0x13d620 0x149970>;
opp-microvolt-L3 = <0x1312d0 0x1312d0 0x149970>;
clock-latency-ns = <0x9c40>;
performance-mode;
};
};regulators电压控制节点
设备通过RK817 pmic进行电源控制,其中DCDC_REG2节点控制了cpu的核心供电vdd_arm,通过修改regulator-max-microvolt和regulator-min-microvolt可以提高或者降低pmic允许的最大cpu核心供电和最小供电
DCDC_REG2 {
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <0xe7ef0>;
regulator-max-microvolt = <0x149970>;
regulator-ramp-delay = <0x1771>;
regulator-initial-mode = <0x02>;
regulator-name = "vdd_arm";
phandle = <0x06>;
regulator-state-mem {
regulator-off-in-suspend;
regulator-suspend-microvolt = <0xe7ef0>;
};
};关于GPU的相关控制
电压控制
RK3326的GPU并不像RK3566之类的Soc一样有独立的电压控制节点,根据瑞芯微的芯片手册我们可以知道,pmic通过regulator-min-microvolt节点控制vdd_logic,其中GPU和逻辑核心共享供电,所以在GPU频率表节点中它并不需要设置mali-supply给它分配供电规则,pmic会自动分配GPU需要的电压
gpu-opp-table {
compatible = "operating-points-v2";
rockchip,thermal-zone = "soc-thermal";
rockchip,temp-hysteresis = <0x1388>;
rockchip,low-temp = <0x00>;
rockchip,low-temp-min-volt = <0xf4240>;
rockchip,low-temp-adjust-volt = <0x00 0x1e0 0xc350>;
rockchip,max-volt = <0x11edd8>;
rockchip,evb-irdrop = <0x61a8>;
rockchip,pvtm-voltage-sel = <0x00 0xc350 0x00 0xc351 0xd2f0 0x01 0xd2f1 0xea60 0x02 0xea61 0x1869f 0x03>;
rockchip,pvtm-ch = <0x00 0x00>;
phandle = <0x98>;
opp-300000000 {
opp-hz = <0x00 0x11e1a300>;
opp-microvolt = <0xee098>;
opp-microvolt-L0 = <0xee098>;
opp-microvolt-L1 = <0xe7ef0>;
opp-microvolt-L2 = <0xe7ef0>;
opp-microvolt-L3 = <0xe7ef0>;
};
opp-400000000 {
opp-hz = <0x00 0x17d78400>;
opp-microvolt = <0x100590>;
opp-microvolt-L0 = <0x100590>;
opp-microvolt-L1 = <0xfa3e8>;
opp-microvolt-L2 = <0xee098>;
opp-microvolt-L3 = <0xe7ef0>;
};
opp-480000000 {
opp-hz = <0x00 0x1c9c3800>;
opp-microvolt = <0x112a88>;
opp-microvolt-L0 = <0x112a88>;
opp-microvolt-L1 = <0x10c8e0>;
opp-microvolt-L2 = <0x100590>;
opp-microvolt-L3 = <0xf4240>;
};
opp-520000000 {
opp-hz = <0x00 0x1efe9200>;
opp-microvolt = <0x118c30>;
opp-microvolt-L0 = <0x118c30>;
opp-microvolt-L1 = <0x118c30>;
opp-microvolt-L2 = <0x10c8e0>;
opp-microvolt-L3 = <0x100590>;
};
opp-560000000 {
opp-hz = <0x00 0x2160EC00>;
opp-microvolt = <0x118c30>;
opp-microvolt-L0 = <0x118c30>;
opp-microvolt-L1 = <0x118c30>;
opp-microvolt-L2 = <0x10c8e0>;
opp-microvolt-L3 = <0x100590>;
};
};