Skip to contentSkip to conversation

arm64: dts: imx8mm: Reduce GPU to nominal speed

PATCH Applied Adam Ford 2 participants 4 messages Nov 28, 2023 – Dec 14, 2023

Subsystems (2)
lore
Share & tools
lore

Adam Ford

author
#0 lore raw

PATCH 1/3 arm64: dts: imx8mm: Reduce GPU to nominal speed

When the GPU nodes were added, the GPU_PLL_OUT was configured for 1000MHz, but this requires the SoC to run in overdrive mode which requires an elevated voltage operating point.

Since this may run some boards out of spec, the default clock should be set to 800MHz for nominal operating mode. Boards that run at the higher voltage can update their clocks accordingly.

Fixes 4523be8e46be ("arm64: dts: imx8mm: Add GPU nodes for 2D and 3D core")
arch/arm64/boot/dts/freescale/imx8mm.dtsi +2 -2
index 669fdd2c54e4..b33bc4855e5f 100644
@@ -1402,7 +1402,7 @@ gpu_3d: gpu@38000000 {
 			assigned-clocks = <&clk IMX8MM_CLK_GPU3D_CORE>,
 					  <&clk IMX8MM_GPU_PLL_OUT>;
 			assigned-clock-parents = <&clk IMX8MM_GPU_PLL_OUT>;
-			assigned-clock-rates = <0>, <1000000000>;
+			assigned-clock-rates = <0>, <800000000>;
 			power-domains = <&pgc_gpu>;
 		};
 
@@ -1417,7 +1417,7 @@ gpu_2d: gpu@38008000 {
 			assigned-clocks = <&clk IMX8MM_CLK_GPU2D_CORE>,
 					  <&clk IMX8MM_GPU_PLL_OUT>;
 			assigned-clock-parents = <&clk IMX8MM_GPU_PLL_OUT>;
-			assigned-clock-rates = <0>, <1000000000>;
+			assigned-clock-rates = <0>, <800000000>;
 			power-domains = <&pgc_gpu>;
 		};
 
Signature · 1 line
2.40.1
author
#1 lore raw

PATCH 2/3 arm64: dts: imx8mm: Add optional overdrive DTSI

For boards who run their SoC at a higher voltage than nominal, the boards can run several clocks at an overdrive rate for better performance. Add an optional DTSI file which can be included by various boards to run in overdrive mode.

This raises the GPU PLL to 1000MHz, and the VPU PLL to 700MHz while moving VPU_G1 and VPU_H1 to the SYS_PLL3_OUT which runs at 750MHz.

arch/arm64/boot/dts/freescale/imx8mm-overdrive.dtsi new file +29 -0
new file mode 100644
index 000000000000..b31436b5e9b7
@@ -0,0 +1,29 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+
+&gpu_2d {
+	assigned-clocks = <&clk IMX8MM_CLK_GPU2D_CORE>,
+			  <&clk IMX8MM_GPU_PLL_OUT>;
+	assigned-clock-parents = <&clk IMX8MM_GPU_PLL_OUT>;
+	assigned-clock-rates = <0>, <1000000000>;
+};
+
+&gpu_3d {
+	assigned-clocks = <&clk IMX8MM_CLK_GPU3D_CORE>,
+			  <&clk IMX8MM_GPU_PLL_OUT>;
+	assigned-clock-parents = <&clk IMX8MM_GPU_PLL_OUT>;
+	assigned-clock-rates = <0>, <1000000000>;
+};
+
+&vpu_blk_ctrl {
+	assigned-clocks = <&clk IMX8MM_CLK_VPU_G1>,
+			  <&clk IMX8MM_CLK_VPU_G2>,
+			  <&clk IMX8MM_CLK_VPU_H1>,
+			  <&clk IMX8MM_VPU_PLL_OUT>;
+	assigned-clock-parents = <&clk IMX8MM_SYS_PLL3_OUT>,
+				 <&clk IMX8MM_VPU_PLL_OUT>,
+				 <&clk IMX8MM_SYS_PLL3_OUT>;
+	assigned-clock-rates = <750000000>,
+			       <700000000>,
+			       <750000000>,
+			       <700000000>;
+};
Signature · 1 line
2.40.1
author
#2 lore raw

PATCH 3/3 arm64: dts: imx8mm-beacon: Enable overdrive mode

In reply to Adam Ford

The SoC runs at a high enough voltage to support overdrive mode, so include the imx8mm-overdrive.dtsi file to increase the VPU and GPU clocks to their overdrive speeds.

arch/arm64/boot/dts/freescale/imx8mm-beacon-som.dtsi +2 -0
index f264102bdb27..62ed64663f49 100644
@@ -3,6 +3,8 @@
  * Copyright 2020 Compass Electronics Group, LLC
  */
 
+#include "imx8mm-overdrive.dtsi"
+
 / {
 	aliases {
 		rtc0 = &rtc;
Signature · 1 line
2.40.1
Applied
#3 lore raw
In reply to Adam Ford
Quoted 11 lines · Adam Ford

When the GPU nodes were added, the GPU_PLL_OUT was configured for 1000MHz, but this requires the SoC to run in overdrive mode which requires an elevated voltage operating point.

Since this may run some boards out of spec, the default clock should be set to 800MHz for nominal operating mode. Boards that run at the higher voltage can update their clocks accordingly.

Fixes 4523be8e46be ("arm64: dts: imx8mm: Add GPU nodes for 2D and 3D core")

Applied all, thanks!