From 325114b50893cdd2789455d784aea17df369dd23 Mon Sep 17 00:00:00 2001 From: Douglas Teles Date: Sat, 18 Apr 2026 01:20:42 -0300 Subject: [PATCH] Fix GPU black screen: restore low-frequency OPPs in GPU OPP table ROOT CAUSE: The DTS patch removed ALL GPU OPPs (200/300/400/480 MHz) and only kept 560/600 MHz. The GPU devfreq governor starts at the LOWEST available OPP. Without 200 MHz, the GPU couldn't initialize its clock, causing a black screen on boot. Fix: Keep original 200/300/400 MHz OPPs, only replace 480 MHz with 560 MHz (overclock) and add 600 MHz. GPU can now initialize at 200 MHz and scale up to 600 MHz. --- .../RK3326/patches/linux/000-rk3326-dts.patch | 45 ++++++++----------- 1 file changed, 18 insertions(+), 27 deletions(-) diff --git a/projects/ArchR/devices/RK3326/patches/linux/000-rk3326-dts.patch b/projects/ArchR/devices/RK3326/patches/linux/000-rk3326-dts.patch index 34a2ac9e18..7b6a2eeb18 100644 --- a/projects/ArchR/devices/RK3326/patches/linux/000-rk3326-dts.patch +++ b/projects/ArchR/devices/RK3326/patches/linux/000-rk3326-dts.patch @@ -1,5 +1,5 @@ ---- a/arch/arm64/boot/dts/rockchip/px30.dtsi 2026-04-03 13:23:49.793309412 -0300 -+++ b/arch/arm64/boot/dts/rockchip/px30.dtsi 2026-04-03 13:24:16.188299986 -0300 +--- a/arch/arm64/boot/dts/rockchip/px30.dtsi 2026-04-18 00:12:46.801599300 -0300 ++++ b/arch/arm64/boot/dts/rockchip/px30.dtsi 2026-04-18 00:15:35.235545979 -0300 @@ -20,6 +20,7 @@ #size-cells = <2>; @@ -21,17 +21,20 @@ opp-microvolt = <950000 950000 1350000>; clock-latency-ns = <40000>; opp-suspend; -@@ -134,10 +136,16 @@ - opp-microvolt = <1300000 1300000 1350000>; +@@ -129,15 +131,16 @@ + opp-microvolt = <1175000 1175000 1350000>; + clock-latency-ns = <40000>; + }; +- opp-1200000000 { +- opp-hz = /bits/ 64 <1200000000>; +- opp-microvolt = <1300000 1300000 1350000>; ++ opp-1416000000 { ++ opp-hz = /bits/ 64 <1416000000>; ++ opp-microvolt = <1350000 1350000 1350000>; clock-latency-ns = <40000>; }; - opp-1296000000 { - opp-hz = /bits/ 64 <1296000000>; -+ opp-1416000000 { -+ opp-hz = /bits/ 64 <1416000000>; -+ opp-microvolt = <1350000 1350000 1350000>; -+ clock-latency-ns = <40000>; -+ }; + opp-1512000000 { + opp-hz = /bits/ 64 <1512000000>; opp-microvolt = <1350000 1350000 1350000>; @@ -40,7 +43,7 @@ }; }; -@@ -348,6 +356,32 @@ +@@ -348,6 +351,32 @@ }; }; @@ -73,22 +76,10 @@ pmugrf: syscon@ff010000 { compatible = "rockchip,px30-pmugrf", "syscon", "simple-mfd"; reg = <0x0 0xff010000 0x0 0x1000>; -@@ -1065,22 +1099,14 @@ - gpu_opp_table: opp-table-1 { - compatible = "operating-points-v2"; - -- opp-200000000 { -- opp-hz = /bits/ 64 <200000000>; -- opp-microvolt = <950000>; -- }; -- opp-300000000 { -- opp-hz = /bits/ 64 <300000000>; -- opp-microvolt = <975000>; -- }; -- opp-400000000 { -- opp-hz = /bits/ 64 <400000000>; -- opp-microvolt = <1050000>; -- }; +@@ -1077,10 +1106,14 @@ + opp-hz = /bits/ 64 <400000000>; + opp-microvolt = <1050000>; + }; - opp-480000000 { - opp-hz = /bits/ 64 <480000000>; + opp-560000000 { @@ -102,7 +93,7 @@ }; gpu: gpu@ff400000 { -@@ -1091,10 +1117,25 @@ +@@ -1091,10 +1124,25 @@ ; interrupt-names = "job", "mmu", "gpu"; clocks = <&cru SCLK_GPU>;