[PATCH] arm64: dts: rockchip: Enable all CPU OPPs on Kobol Helios64

Igor Velkov via B4 Relay devnull+iav.iav.lv at kernel.org
Sun Nov 8 14:02:51 PST 2026


From: Igor Velkov <iav at iav.lv>

The Helios64 device tree deletes the lower OPPs of both CPU clusters
because the board was not stable with cpufreq.

With all OPPs and regulator-ramp-delay = <1000> on vdd_cpu_b, the board
hung about 9.5 s into boot both times we tried. With 40000 it ran 40
boots and three one-hour DVFS runs under load without errors. We did not
find out why the slower ramp hangs.

40000 selects the slew rate we read from the regulator in U-Boot after a
cold start, 64 mV/us; 1000 slows it down.

Restore the OPPs and raise the ramp delay.

Signed-off-by: Igor Velkov <iav at iav.lv>
---
Tested on Linux 7.3 and its device tree, with the U-Boot and the .config
of Armbian. The PCIe host driver was not loaded: on this board it takes
an external abort at probe on some boots, with or without this change
(about 5% of boots with it, 1 of 4 without). One boot with it loaded
brought the link up, without DVFS load.

Besides the boots and runs above: one hour each of schedutil under
bursty load and of switching only one cluster.

Ramp delay scan with all OPPs: 2000 hung twice in 5 boots (once at boot,
once on reboot after an hour under load), 8000 passed 13 of 13 boots,
32000 passed 3 of 3.
---
 .../boot/dts/rockchip/rk3399-kobol-helios64.dts    | 24 +---------------------
 1 file changed, 1 insertion(+), 23 deletions(-)

diff --git a/arch/arm64/boot/dts/rockchip/rk3399-kobol-helios64.dts b/arch/arm64/boot/dts/rockchip/rk3399-kobol-helios64.dts
index f13ea2df7a30..f2f900f576a0 100644
--- a/arch/arm64/boot/dts/rockchip/rk3399-kobol-helios64.dts
+++ b/arch/arm64/boot/dts/rockchip/rk3399-kobol-helios64.dts
@@ -354,28 +354,6 @@ vdd_log: regulator-vdd-log {
 	};
 };
 
-/*
- * The system doesn't run stable with cpu freq enabled, so disallow the lower
- * frequencies until this problem is properly understood and resolved.
- */
-&cluster0_opp {
-	/delete-node/ opp00;
-	/delete-node/ opp01;
-	/delete-node/ opp02;
-	/delete-node/ opp03;
-	/delete-node/ opp04;
-};
-
-&cluster1_opp {
-	/delete-node/ opp00;
-	/delete-node/ opp01;
-	/delete-node/ opp02;
-	/delete-node/ opp03;
-	/delete-node/ opp04;
-	/delete-node/ opp05;
-	/delete-node/ opp06;
-};
-
 &cpu_b0 {
 	cpu-supply = <&vdd_cpu_b>;
 };
@@ -542,7 +520,7 @@ vdd_cpu_b: regulator at 40 {
 		regulator-boot-on;
 		regulator-min-microvolt = <712500>;
 		regulator-max-microvolt = <1500000>;
-		regulator-ramp-delay = <1000>;
+		regulator-ramp-delay = <40000>;
 		vin-supply = <&vcc5v0_sys>;
 
 		regulator-state-mem {

---
base-commit: c3baae5f1a15645cddadcb2b9abddef5df291f59
change-id: 20261108-helios64-cpu-opps-8abd6fe61f01

Best regards,
-- 
Igor Velkov <iav at iav.lv>





More information about the Linux-rockchip mailing list