03-27-2021, 02:14 AM
(This post was last modified: 06-08-2021, 10:28 AM by generaleramon.)
hey, i'm tweaking the SoC voltages in the .dtsi files and i was wondering what was the lowest possible voltage that i could set for the CPU and/or GPU. Looking in the rk3399-pinebook-pro.dts i've found something that might help.
###
As of now i've found that the GPU can run at 712.5mv@400Mhz no problem but i need 775mv@500Mhz so i can confirm that it can go below the stock 800mv.
Same with the 2 cpu clusters, in some cases i was able to undervolt around 200mv at the same frequency.
i'm currently running 4xA53@1.7Ghz/2xA72@2.1Ghz/GPU@1050Mhz.
<< my (old) voltage curve
###
I wonder is someone can confirm that 750-712mv is the lowest voltage that can be set and i also wonder what is the "step size", meaning how precisely i can tune it. 6.25mv like in modern gpus? 12.5? 25mv?
###
EDIT: I'm pretty sure that a 12.5mv step is accepted. The A72 Cluster is stable @1Ghz with 775mv, can't even boot with 750mv, Linpack unstable with 762.5mv.
###
EDIT2: 08/06/2021 - Here is my latest 99% stable rk3399-opp.dtsi file:
Code:
vdd_cpu_l: DCDC_REG2 {
regulator-name = "vdd_cpu_l"; <<< cpu_l is the little cluster
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <750000>; <<<750 mv
regulator-max-microvolt = <1350000>; <<<1350mv
regulator-ramp-delay = <6001>;
vdd_cpu_b: regulator@40 {
compatible = "silergy,syr827";
reg = <0x40>;
fcs,suspend-voltage-selector = <1>;
pinctrl-names = "default";
pinctrl-0 = <&vsel1_pin>;
regulator-name = "vdd_cpu_b"; <<<cpu_b is the big cluster
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <712500>; <<<712.5 mv
regulator-max-microvolt = <1500000>; <<<1500mv
regulator-ramp-delay = <1000>;
vin-supply = <&vcc_1v8>;
vdd_gpu: regulator@41 {
compatible = "silergy,syr828";
reg = <0x41>;
fcs,suspend-voltage-selector = <1>;
pinctrl-names = "default";
pinctrl-0 = <&vsel2_pin>;
regulator-name = "vdd_gpu"; <<<GPU
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <712500>; <<<712.5mv
regulator-max-microvolt = <1500000>; <<<1500mv
regulator-ramp-delay = <1000>;
vin-supply = <&vcc_1v8>;
###
As of now i've found that the GPU can run at 712.5mv@400Mhz no problem but i need 775mv@500Mhz so i can confirm that it can go below the stock 800mv.
Same with the 2 cpu clusters, in some cases i was able to undervolt around 200mv at the same frequency.
i'm currently running 4xA53@1.7Ghz/2xA72@2.1Ghz/GPU@1050Mhz.
<< my (old) voltage curve
###
I wonder is someone can confirm that 750-712mv is the lowest voltage that can be set and i also wonder what is the "step size", meaning how precisely i can tune it. 6.25mv like in modern gpus? 12.5? 25mv?
###
EDIT: I'm pretty sure that a 12.5mv step is accepted. The A72 Cluster is stable @1Ghz with 775mv, can't even boot with 750mv, Linpack unstable with 762.5mv.
###
EDIT2: 08/06/2021 - Here is my latest 99% stable rk3399-opp.dtsi file:
Code:
cluster0_opp: opp-table0 {
compatible = "operating-points-v2";
opp-shared;
opp00 {
opp-hz = /bits/ 64 <600000000>;
opp-microvolt = <750000>;
clock-latency-ns = <40000>;
};
opp01 {
opp-hz = /bits/ 64 <696000000>;
opp-microvolt = <750000>;
};
opp02 {
opp-hz = /bits/ 64 <816000000>;
opp-microvolt = <800000>;
};
opp03 {
opp-hz = /bits/ 64 <1008000000>;
opp-microvolt = <850000>;
};
opp04 {
opp-hz = /bits/ 64 <1200000000>;
opp-microvolt = <925000>;
};
opp05 {
opp-hz = /bits/ 64 <1416000000>;
opp-microvolt = <1025000>;
};
opp06 {
opp-hz = /bits/ 64 <1512000000>;
opp-microvolt = <1075000>;
};
opp07 {
opp-hz = /bits/ 64 <1608000000>;
opp-microvolt = <1125000>;
};
opp08 {
opp-hz = /bits/ 64 <1704000000>;
opp-microvolt = <1225000>;
};
};
cluster1_opp: opp-table1 {
compatible = "operating-points-v2";
opp-shared;
opp00 {
opp-hz = /bits/ 64 <408000000>;
opp-microvolt = <725000>;
clock-latency-ns = <40000>;
};
opp01 {
opp-hz = /bits/ 64 <600000000>;
opp-microvolt = <750000>;
};
opp02 {
opp-hz = /bits/ 64 <696000000>;
opp-microvolt = <775000>;
};
opp03 {
opp-hz = /bits/ 64 <816000000>;
opp-microvolt = <775000>;
};
opp04 {
opp-hz = /bits/ 64 <1008000000>;
opp-microvolt = <800000>;
};
opp05 {
opp-hz = /bits/ 64 <1200000000>;
opp-microvolt = <850000>;
};
opp06 {
opp-hz = /bits/ 64 <1416000000>;
opp-microvolt = <950000>;
};
opp07 {
opp-hz = /bits/ 64 <1512000000>;
opp-microvolt = <975000>;
};
opp08 {
opp-hz = /bits/ 64 <1608000000>;
opp-microvolt = <1025000>;
};
opp09 {
opp-hz = /bits/ 64 <1704000000>;
opp-microvolt = <1075000>;
};
opp10 {
opp-hz = /bits/ 64 <1800000000>;
opp-microvolt = <1125000>;
};
opp11 {
opp-hz = /bits/ 64 <2016000000>;
opp-microvolt = <1212500>;
};
opp12 {
opp-hz = /bits/ 64 <2040000000>;
opp-microvolt = <1225000>;
};
opp13 {
opp-hz = /bits/ 64 <2088000000>;
opp-microvolt = <1250000>;
};
opp14 {
opp-hz = /bits/ 64 <2184000000>;
opp-microvolt = <1325000>;
};
opp15 {
opp-hz = /bits/ 64 <2208000000>;
opp-microvolt = <1362500>;
};
};
gpu_opp_table: opp-table2 {
compatible = "operating-points-v2";
opp00 {
opp-hz = /bits/ 64 <297000000>;
opp-microvolt = <712500>;
};
opp01 {
opp-hz = /bits/ 64 <400000000>;
opp-microvolt = <725000>;
};
opp02 {
opp-hz = /bits/ 64 <500000000>;
opp-microvolt = <787500>;
};
opp03 {
opp-hz = /bits/ 64 <600000000>;
opp-microvolt = <850000>;
};
opp04 {
opp-hz = /bits/ 64 <800000000>;
opp-microvolt = <1012500>;
};
opp05 {
opp-hz = /bits/ 64 <900000000>;
opp-microvolt = <1087500>;
};
opp06 {
opp-hz = /bits/ 64 <1000000000>;
opp-microvolt = <1212500>;
};
opp07 {
opp-hz = /bits/ 64 <1100000000>;
opp-microvolt = <1275000>;
};
};
};
PinebookPro v2.1 4xA53@1704Mhz / 2xA72@2208Mhz / GPU@1125Mhz / CCI-500@1200Mhz