From: Akhil P Oommen <akhilpo@oss.qualcomm.com>
To: Rob Clark <robin.clark@oss.qualcomm.com>,
Sean Paul <sean@poorly.run>,
Konrad Dybcio <konradybcio@kernel.org>,
Dmitry Baryshkov <lumag@kernel.org>,
Abhinav Kumar <abhinav.kumar@linux.dev>,
Jessica Zhang <jesszhan0024@gmail.com>,
Marijn Suijten <marijn.suijten@somainline.org>,
David Airlie <airlied@gmail.com>, Simona Vetter <simona@ffwll.ch>,
Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
Maxime Ripard <mripard@kernel.org>,
Thomas Zimmermann <tzimmermann@suse.de>,
Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Bjorn Andersson <andersson@kernel.org>,
Abel Vesa <abelvesa@kernel.org>
Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org,
freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org,
devicetree@vger.kernel.org,
Akhil P Oommen <akhilpo@oss.qualcomm.com>,
Aastha Pandey <aastha.pandey@oss.qualcomm.com>
Subject: [PATCH 4/5] arm64: dts: qcom: nord: Add GPU cooling
Date: Fri, 09 Oct 2026 02:36:38 +0530 [thread overview]
Message-ID: <20261009-nord-gpu1-v1-4-a06a6c57bde7@oss.qualcomm.com> (raw)
In-Reply-To: <20261009-nord-gpu1-v1-0-a06a6c57bde7@oss.qualcomm.com>
From: Aastha Pandey <aastha.pandey@oss.qualcomm.com>
Unlike the CPU, the GPU does not throttle its speed automatically when
it reaches high temperatures.
Set up GPU cooling on Nord by throttling the Adreno 753 GPU when it
reaches 105°C. Label the GPU thermal zones and their passive trip
points, map them to the GPU as a cooling device, and add a passive
polling delay so the thermal framework can monitor the zones while
throttling.
Signed-off-by: Aastha Pandey <aastha.pandey@oss.qualcomm.com>
Signed-off-by: Akhil P Oommen <akhilpo@oss.qualcomm.com>
---
arch/arm64/boot/dts/qcom/nord-embedded.dtsi | 177 ++++++++++++++++++++++++++++
arch/arm64/boot/dts/qcom/nord.dtsi | 80 ++++++-------
2 files changed, 217 insertions(+), 40 deletions(-)
diff --git a/arch/arm64/boot/dts/qcom/nord-embedded.dtsi b/arch/arm64/boot/dts/qcom/nord-embedded.dtsi
index 4379092b7bf8..23370007c974 100644
--- a/arch/arm64/boot/dts/qcom/nord-embedded.dtsi
+++ b/arch/arm64/boot/dts/qcom/nord-embedded.dtsi
@@ -17,6 +17,7 @@
#include <dt-bindings/interconnect/qcom,nord-rpmh.h>
#include <dt-bindings/power/qcom,rpmhpd.h>
#include <dt-bindings/soc/qcom,rpmh-rsc.h>
+#include <dt-bindings/thermal/thermal.h>
#include "nord.dtsi"
@@ -2042,3 +2043,179 @@ opp-403000000 {
};
};
};
+
+&gpu_0_0_0_thermal {
+ polling-delay-passive = <10>;
+
+ cooling-maps {
+ map0 {
+ trip = <&gpu_0_0_0_alert0>;
+ cooling-device = <&gpu_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+ };
+ };
+};
+
+&gpu_0_0_1_thermal {
+ polling-delay-passive = <10>;
+
+ cooling-maps {
+ map0 {
+ trip = <&gpu_0_0_1_alert0>;
+ cooling-device = <&gpu_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+ };
+ };
+};
+
+&gpu_0_1_0_thermal {
+ polling-delay-passive = <10>;
+
+ cooling-maps {
+ map0 {
+ trip = <&gpu_0_1_0_alert0>;
+ cooling-device = <&gpu_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+ };
+ };
+};
+
+&gpu_0_1_1_thermal {
+ polling-delay-passive = <10>;
+
+ cooling-maps {
+ map0 {
+ trip = <&gpu_0_1_1_alert0>;
+ cooling-device = <&gpu_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+ };
+ };
+};
+
+&gpuss_0_1_0_thermal {
+ polling-delay-passive = <10>;
+
+ cooling-maps {
+ map0 {
+ trip = <&gpuss_0_1_0_alert0>;
+ cooling-device = <&gpu_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+ };
+ };
+};
+
+&gpuss_0_1_1_thermal {
+ polling-delay-passive = <10>;
+
+ cooling-maps {
+ map0 {
+ trip = <&gpuss_0_1_1_alert0>;
+ cooling-device = <&gpu_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+ };
+ };
+};
+
+&gpuss_0_1_thermal {
+ polling-delay-passive = <10>;
+
+ cooling-maps {
+ map0 {
+ trip = <&gpuss_0_1_alert0>;
+ cooling-device = <&gpu_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+ };
+ };
+};
+
+&gpuss_0_thermal {
+ polling-delay-passive = <10>;
+
+ cooling-maps {
+ map0 {
+ trip = <&gpuss0_alert0>;
+ cooling-device = <&gpu_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+ };
+ };
+};
+
+&gpuss_1_0_1_thermal {
+ polling-delay-passive = <10>;
+
+ cooling-maps {
+ map0 {
+ trip = <&gpuss_1_0_1_alert0>;
+ cooling-device = <&gpu_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+ };
+ };
+};
+
+&gpuss_1_1_0_thermal {
+ polling-delay-passive = <10>;
+
+ cooling-maps {
+ map0 {
+ trip = <&gpuss_1_1_0_alert0>;
+ cooling-device = <&gpu_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+ };
+ };
+};
+
+&gpuss_1_1_1_thermal {
+ polling-delay-passive = <10>;
+
+ cooling-maps {
+ map0 {
+ trip = <&gpuss_1_1_1_alert0>;
+ cooling-device = <&gpu_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+ };
+ };
+};
+
+&gpuss_1_thermal {
+ polling-delay-passive = <10>;
+
+ cooling-maps {
+ map0 {
+ trip = <&gpuss1_alert0>;
+ cooling-device = <&gpu_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+ };
+ };
+};
+
+&gpuss_2_0_1_thermal {
+ polling-delay-passive = <10>;
+
+ cooling-maps {
+ map0 {
+ trip = <&gpuss_2_0_1_alert0>;
+ cooling-device = <&gpu_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+ };
+ };
+};
+
+&gpuss_2_1_0_thermal {
+ polling-delay-passive = <10>;
+
+ cooling-maps {
+ map0 {
+ trip = <&gpuss_2_1_0_alert0>;
+ cooling-device = <&gpu_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+ };
+ };
+};
+
+&gpuss_2_1_1_thermal {
+ polling-delay-passive = <10>;
+
+ cooling-maps {
+ map0 {
+ trip = <&gpuss_2_1_1_alert0>;
+ cooling-device = <&gpu_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+ };
+ };
+};
+
+&gpuss_2_thermal {
+ polling-delay-passive = <10>;
+
+ cooling-maps {
+ map0 {
+ trip = <&gpuss2_alert0>;
+ cooling-device = <&gpu_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+ };
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/nord.dtsi b/arch/arm64/boot/dts/qcom/nord.dtsi
index 147d8e595a3a..b032d1d2ad9b 100644
--- a/arch/arm64/boot/dts/qcom/nord.dtsi
+++ b/arch/arm64/boot/dts/qcom/nord.dtsi
@@ -4101,13 +4101,13 @@ trip-point1 {
};
};
- gpuss-0-thermal {
+ gpuss_0_thermal: gpuss-0-thermal {
polling-delay-passive = <0>;
polling-delay = <0>;
thermal-sensors = <&tsens6 1>;
trips {
- trip-point0 {
+ gpuss0_alert0: trip-point0 {
temperature = <105000>;
hysteresis = <10000>;
type = "passive";
@@ -4121,13 +4121,13 @@ trip-point1 {
};
};
- gpuss-1-thermal {
+ gpuss_1_thermal: gpuss-1-thermal {
polling-delay-passive = <0>;
polling-delay = <0>;
thermal-sensors = <&tsens6 2>;
trips {
- trip-point0 {
+ gpuss1_alert0: trip-point0 {
temperature = <105000>;
hysteresis = <10000>;
type = "passive";
@@ -4141,13 +4141,13 @@ trip-point1 {
};
};
- gpuss-2-thermal {
+ gpuss_2_thermal: gpuss-2-thermal {
polling-delay-passive = <0>;
polling-delay = <0>;
thermal-sensors = <&tsens6 3>;
trips {
- trip-point0 {
+ gpuss2_alert0: trip-point0 {
temperature = <105000>;
hysteresis = <10000>;
type = "passive";
@@ -4161,13 +4161,13 @@ trip-point1 {
};
};
- gpu-0-0-0-thermal {
+ gpu_0_0_0_thermal: gpu-0-0-0-thermal {
polling-delay-passive = <0>;
polling-delay = <0>;
thermal-sensors = <&tsens6 4>;
trips {
- trip-point0 {
+ gpu_0_0_0_alert0: trip-point0 {
temperature = <105000>;
hysteresis = <10000>;
type = "passive";
@@ -4181,13 +4181,13 @@ trip-point1 {
};
};
- gpuss-1-0-thermal {
+ gpuss_1_0_thermal: gpuss-1-0-thermal {
polling-delay-passive = <0>;
polling-delay = <0>;
thermal-sensors = <&tsens6 5>;
trips {
- trip-point0 {
+ gpuss_1_0_alert0: trip-point0 {
temperature = <105000>;
hysteresis = <10000>;
type = "passive";
@@ -4201,13 +4201,13 @@ trip-point1 {
};
};
- gpuss-1-1-thermal {
+ gpuss_1_1_thermal: gpuss-1-1-thermal {
polling-delay-passive = <0>;
polling-delay = <0>;
thermal-sensors = <&tsens6 6>;
trips {
- trip-point0 {
+ gpuss_1_1_alert0: trip-point0 {
temperature = <105000>;
hysteresis = <10000>;
type = "passive";
@@ -4321,13 +4321,13 @@ trip-point1 {
};
};
- gpuss-0-1-1-thermal {
+ gpuss_0_1_1_thermal: gpuss-0-1-1-thermal {
polling-delay-passive = <0>;
polling-delay = <0>;
thermal-sensors = <&tsens6 12>;
trips {
- trip-point0 {
+ gpuss_0_1_1_alert0: trip-point0 {
temperature = <105000>;
hysteresis = <10000>;
type = "passive";
@@ -4341,13 +4341,13 @@ trip-point1 {
};
};
- gpuss-1-1-1-thermal {
+ gpuss_1_1_1_thermal: gpuss-1-1-1-thermal {
polling-delay-passive = <0>;
polling-delay = <0>;
thermal-sensors = <&tsens6 13>;
trips {
- trip-point0 {
+ gpuss_1_1_1_alert0: trip-point0 {
temperature = <105000>;
hysteresis = <10000>;
type = "passive";
@@ -4361,13 +4361,13 @@ trip-point1 {
};
};
- gpuss-2-1-1-thermal {
+ gpuss_2_1_1_thermal: gpuss-2-1-1-thermal {
polling-delay-passive = <0>;
polling-delay = <0>;
thermal-sensors = <&tsens6 14>;
trips {
- trip-point0 {
+ gpuss_2_1_1_alert0: trip-point0 {
temperature = <105000>;
hysteresis = <10000>;
type = "passive";
@@ -4381,13 +4381,13 @@ trip-point1 {
};
};
- gpu-0-1-1-thermal {
+ gpu_0_1_1_thermal: gpu-0-1-1-thermal {
polling-delay-passive = <0>;
polling-delay = <0>;
thermal-sensors = <&tsens6 15>;
trips {
- trip-point0 {
+ gpu_0_1_1_alert0: trip-point0 {
temperature = <105000>;
hysteresis = <10000>;
type = "passive";
@@ -4421,13 +4421,13 @@ trip-point1 {
};
};
- gpuss-0-1-0-thermal {
+ gpuss_0_1_0_thermal: gpuss-0-1-0-thermal {
polling-delay-passive = <0>;
polling-delay = <0>;
thermal-sensors = <&tsens7 1>;
trips {
- trip-point0 {
+ gpuss_0_1_0_alert0: trip-point0 {
temperature = <105000>;
hysteresis = <10000>;
type = "passive";
@@ -4441,13 +4441,13 @@ trip-point1 {
};
};
- gpuss-1-1-0-thermal {
+ gpuss_1_1_0_thermal: gpuss-1-1-0-thermal {
polling-delay-passive = <0>;
polling-delay = <0>;
thermal-sensors = <&tsens7 2>;
trips {
- trip-point0 {
+ gpuss_1_1_0_alert0: trip-point0 {
temperature = <105000>;
hysteresis = <10000>;
type = "passive";
@@ -4461,13 +4461,13 @@ trip-point1 {
};
};
- gpuss-2-1-0-thermal {
+ gpuss_2_1_0_thermal: gpuss-2-1-0-thermal {
polling-delay-passive = <0>;
polling-delay = <0>;
thermal-sensors = <&tsens7 3>;
trips {
- trip-point0 {
+ gpuss_2_1_0_alert0: trip-point0 {
temperature = <105000>;
hysteresis = <10000>;
type = "passive";
@@ -4481,13 +4481,13 @@ trip-point1 {
};
};
- gpu-0-1-0-thermal {
+ gpu_0_1_0_thermal: gpu-0-1-0-thermal {
polling-delay-passive = <0>;
polling-delay = <0>;
thermal-sensors = <&tsens7 4>;
trips {
- trip-point0 {
+ gpu_0_1_0_alert0: trip-point0 {
temperature = <105000>;
hysteresis = <10000>;
type = "passive";
@@ -4501,13 +4501,13 @@ trip-point1 {
};
};
- gpuss-1-2-thermal {
+ gpuss_1_2_thermal: gpuss-1-2-thermal {
polling-delay-passive = <0>;
polling-delay = <0>;
thermal-sensors = <&tsens7 5>;
trips {
- trip-point0 {
+ gpuss_1_2_alert0: trip-point0 {
temperature = <105000>;
hysteresis = <10000>;
type = "passive";
@@ -4521,13 +4521,13 @@ trip-point1 {
};
};
- gpu-1-0-thermal {
+ gpu_1_0_thermal: gpu-1-0-thermal {
polling-delay-passive = <0>;
polling-delay = <0>;
thermal-sensors = <&tsens7 6>;
trips {
- trip-point0 {
+ gpu_1_0_alert0: trip-point0 {
temperature = <105000>;
hysteresis = <10000>;
type = "passive";
@@ -4641,13 +4641,13 @@ trip-point1 {
};
};
- gpuss-0-1-thermal {
+ gpuss_0_1_thermal: gpuss-0-1-thermal {
polling-delay-passive = <0>;
polling-delay = <0>;
thermal-sensors = <&tsens7 12>;
trips {
- trip-point0 {
+ gpuss_0_1_alert0: trip-point0 {
temperature = <105000>;
hysteresis = <10000>;
type = "passive";
@@ -4661,13 +4661,13 @@ trip-point1 {
};
};
- gpuss-1-0-1-thermal {
+ gpuss_1_0_1_thermal: gpuss-1-0-1-thermal {
polling-delay-passive = <0>;
polling-delay = <0>;
thermal-sensors = <&tsens7 13>;
trips {
- trip-point0 {
+ gpuss_1_0_1_alert0: trip-point0 {
temperature = <105000>;
hysteresis = <10000>;
type = "passive";
@@ -4681,13 +4681,13 @@ trip-point1 {
};
};
- gpuss-2-0-1-thermal {
+ gpuss_2_0_1_thermal: gpuss-2-0-1-thermal {
polling-delay-passive = <0>;
polling-delay = <0>;
thermal-sensors = <&tsens7 14>;
trips {
- trip-point0 {
+ gpuss_2_0_1_alert0: trip-point0 {
temperature = <105000>;
hysteresis = <10000>;
type = "passive";
@@ -4701,13 +4701,13 @@ trip-point1 {
};
};
- gpu-0-0-1-thermal {
+ gpu_0_0_1_thermal: gpu-0-0-1-thermal {
polling-delay-passive = <0>;
polling-delay = <0>;
thermal-sensors = <&tsens7 15>;
trips {
- trip-point0 {
+ gpu_0_0_1_alert0: trip-point0 {
temperature = <105000>;
hysteresis = <10000>;
type = "passive";
--
2.55.0
next prev parent reply other threads:[~2026-10-08 21:07 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-08 21:06 [PATCH 0/5] drm/msm: Support for GPU in Nord Akhil P Oommen
2026-10-08 21:06 ` [PATCH 1/5] drm/msm/a6xx: Add Adreno 753 support Akhil P Oommen
2026-10-12 12:21 ` Konrad Dybcio
2026-10-12 13:23 ` Shawn Guo
2026-10-08 21:06 ` [PATCH 2/5] dt-bindings: display/msm: Document Adreno 753 GPU/GMU Akhil P Oommen
2026-10-09 10:46 ` Krzysztof Kozlowski
2026-10-08 21:06 ` [PATCH 3/5] arm64: dts: qcom: nord: Add Adreno 753 GPU and GMU nodes Akhil P Oommen
2026-10-09 18:48 ` Abel Vesa
2026-10-11 3:25 ` Shawn Guo
2026-10-12 12:25 ` Konrad Dybcio
2026-10-08 21:06 ` Akhil P Oommen [this message]
2026-10-11 3:30 ` [PATCH 4/5] arm64: dts: qcom: nord: Add GPU cooling Shawn Guo
2026-10-08 21:06 ` [PATCH 5/5] arm64: dts: qcom: nord-rrd: Enable Adreno 753 GPU Akhil P Oommen
2026-10-11 6:36 ` [PATCH 0/5] drm/msm: Support for GPU in Nord Shawn Guo
2026-10-12 13:21 ` Shawn Guo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261009-nord-gpu1-v1-4-a06a6c57bde7@oss.qualcomm.com \
--to=akhilpo@oss.qualcomm.com \
--cc=aastha.pandey@oss.qualcomm.com \
--cc=abelvesa@kernel.org \
--cc=abhinav.kumar@linux.dev \
--cc=airlied@gmail.com \
--cc=andersson@kernel.org \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=freedreno@lists.freedesktop.org \
--cc=jesszhan0024@gmail.com \
--cc=konradybcio@kernel.org \
--cc=krzk+dt@kernel.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lumag@kernel.org \
--cc=maarten.lankhorst@linux.intel.com \
--cc=marijn.suijten@somainline.org \
--cc=mripard@kernel.org \
--cc=robh@kernel.org \
--cc=robin.clark@oss.qualcomm.com \
--cc=sean@poorly.run \
--cc=simona@ffwll.ch \
--cc=tzimmermann@suse.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®