This patch sets the GPU3D/GPU2D cores to 800MHz (noting that GPU3D_CLK_ROOT maxes out at 1000MHz).
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Stefan de Kraker
Date: Mon, 24 Mar 2026 00:00:00 +0000
Subject: [PATCH] arm64: dts: imx8mm: set GPU clock to 800MHz
Set GPU3D/GPU2D cores to 800MHz (GPU3D_CLK_ROOT max = 1000MHz).
The CCM clock slice for GPU3D_SRC is configured before GPU_PLL_OUT in
the assigned-clocks list, so the /2 post-divider gets locked in while
the PLL is still at the bootloader value. Setting GPU_PLL_OUT to 1600MHz
ensures the slice output (1600/2) is 800MHz after the PLL update.
---
arch/arm64/boot/dts/freescale/imx8mm.dtsi | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/arch/arm64/boot/dts/freescale/imx8mm.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx8mm.dtsi
@@ -1566,7 +1566,7 @@
assigned-clock-parents = <&clk IMX8MM_GPU_PLL_OUT>,
<&clk IMX8MM_GPU_PLL_OUT>,
<&clk IMX8MM_SYS_PLL1_800M>,
<&clk IMX8MM_SYS_PLL1_800M>;
- assigned-clock-rates = <0>, <0>, <0>,<400000000>,<1000000000>;
+ assigned-clock-rates = <800000000>, <800000000>, <0>,<400000000>,<1600000000>;
power-domains = <&pgc_gpu>;
Kernel output:
$ cat /sys/kernel/debug/gc/clk
gpu0 mc clock: 800038786 HZ.
gpu0 sh clock: 800038786 HZ.
gpu16 mc clock: 800038245 HZ.