| From c1ea929f598b8070c0fc542becf70b340f250e0a Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Wed, 19 Feb 2025 12:36:20 +0100 |
| Subject: arm64: dts: qcom: x1e80100: Add GPU cooling |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| From: Stephan Gerhold <stephan.gerhold@linaro.org> |
| |
| [ Upstream commit 5ba21fa11f473c9827f378ace8c9f983de9e0287 ] |
| |
| Unlike the CPU, the GPU does not throttle its speed automatically when it |
| reaches high temperatures. With certain high GPU loads it is possible to |
| reach the critical hardware shutdown temperature of 120°C, endangering the |
| hardware and making it impossible to run certain applications. |
| |
| Set up GPU cooling similar to the ACPI tables, by throttling the GPU speed |
| when reaching 95°C and polling every 200ms. |
| |
| Cc: stable@vger.kernel.org |
| Fixes: 721e38301b79 ("arm64: dts: qcom: x1e80100: Add gpu support") |
| Signed-off-by: Stephan Gerhold <stephan.gerhold@linaro.org> |
| Reviewed-by: Johan Hovold <johan+linaro@kernel.org> |
| Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> |
| Link: https://lore.kernel.org/r/20250219-x1e80100-thermal-fixes-v1-3-d110e44ac3f9@linaro.org |
| Signed-off-by: Bjorn Andersson <andersson@kernel.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| arch/arm64/boot/dts/qcom/x1e80100.dtsi | 169 +++++++++++++------------ |
| 1 file changed, 89 insertions(+), 80 deletions(-) |
| |
| diff --git a/arch/arm64/boot/dts/qcom/x1e80100.dtsi b/arch/arm64/boot/dts/qcom/x1e80100.dtsi |
| index edfea03366b46..5082ecb32089b 100644 |
| --- a/arch/arm64/boot/dts/qcom/x1e80100.dtsi |
| +++ b/arch/arm64/boot/dts/qcom/x1e80100.dtsi |
| @@ -20,6 +20,7 @@ |
| #include <dt-bindings/soc/qcom,gpr.h> |
| #include <dt-bindings/soc/qcom,rpmh-rsc.h> |
| #include <dt-bindings/sound/qcom,q6dsp-lpass-ports.h> |
| +#include <dt-bindings/thermal/thermal.h> |
| |
| / { |
| interrupt-parent = <&intc>; |
| @@ -7316,24 +7317,25 @@ nsp3-critical { |
| }; |
| |
| gpuss-0-thermal { |
| - polling-delay-passive = <10>; |
| + polling-delay-passive = <200>; |
| |
| thermal-sensors = <&tsens3 5>; |
| |
| - trips { |
| - trip-point0 { |
| - temperature = <85000>; |
| - hysteresis = <1000>; |
| - type = "passive"; |
| + cooling-maps { |
| + map0 { |
| + trip = <&gpuss0_alert0>; |
| + cooling-device = <&gpu THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; |
| }; |
| + }; |
| |
| - trip-point1 { |
| - temperature = <90000>; |
| + trips { |
| + gpuss0_alert0: trip-point0 { |
| + temperature = <95000>; |
| hysteresis = <1000>; |
| - type = "hot"; |
| + type = "passive"; |
| }; |
| |
| - trip-point2 { |
| + gpu-critical { |
| temperature = <115000>; |
| hysteresis = <1000>; |
| type = "critical"; |
| @@ -7342,24 +7344,25 @@ trip-point2 { |
| }; |
| |
| gpuss-1-thermal { |
| - polling-delay-passive = <10>; |
| + polling-delay-passive = <200>; |
| |
| thermal-sensors = <&tsens3 6>; |
| |
| - trips { |
| - trip-point0 { |
| - temperature = <85000>; |
| - hysteresis = <1000>; |
| - type = "passive"; |
| + cooling-maps { |
| + map0 { |
| + trip = <&gpuss1_alert0>; |
| + cooling-device = <&gpu THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; |
| }; |
| + }; |
| |
| - trip-point1 { |
| - temperature = <90000>; |
| + trips { |
| + gpuss1_alert0: trip-point0 { |
| + temperature = <95000>; |
| hysteresis = <1000>; |
| - type = "hot"; |
| + type = "passive"; |
| }; |
| |
| - trip-point2 { |
| + gpu-critical { |
| temperature = <115000>; |
| hysteresis = <1000>; |
| type = "critical"; |
| @@ -7368,24 +7371,25 @@ trip-point2 { |
| }; |
| |
| gpuss-2-thermal { |
| - polling-delay-passive = <10>; |
| + polling-delay-passive = <200>; |
| |
| thermal-sensors = <&tsens3 7>; |
| |
| - trips { |
| - trip-point0 { |
| - temperature = <85000>; |
| - hysteresis = <1000>; |
| - type = "passive"; |
| + cooling-maps { |
| + map0 { |
| + trip = <&gpuss2_alert0>; |
| + cooling-device = <&gpu THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; |
| }; |
| + }; |
| |
| - trip-point1 { |
| - temperature = <90000>; |
| + trips { |
| + gpuss2_alert0: trip-point0 { |
| + temperature = <95000>; |
| hysteresis = <1000>; |
| - type = "hot"; |
| + type = "passive"; |
| }; |
| |
| - trip-point2 { |
| + gpu-critical { |
| temperature = <115000>; |
| hysteresis = <1000>; |
| type = "critical"; |
| @@ -7394,24 +7398,25 @@ trip-point2 { |
| }; |
| |
| gpuss-3-thermal { |
| - polling-delay-passive = <10>; |
| + polling-delay-passive = <200>; |
| |
| thermal-sensors = <&tsens3 8>; |
| |
| - trips { |
| - trip-point0 { |
| - temperature = <85000>; |
| - hysteresis = <1000>; |
| - type = "passive"; |
| + cooling-maps { |
| + map0 { |
| + trip = <&gpuss3_alert0>; |
| + cooling-device = <&gpu THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; |
| }; |
| + }; |
| |
| - trip-point1 { |
| - temperature = <90000>; |
| + trips { |
| + gpuss3_alert0: trip-point0 { |
| + temperature = <95000>; |
| hysteresis = <1000>; |
| - type = "hot"; |
| + type = "passive"; |
| }; |
| |
| - trip-point2 { |
| + gpu-critical { |
| temperature = <115000>; |
| hysteresis = <1000>; |
| type = "critical"; |
| @@ -7420,24 +7425,25 @@ trip-point2 { |
| }; |
| |
| gpuss-4-thermal { |
| - polling-delay-passive = <10>; |
| + polling-delay-passive = <200>; |
| |
| thermal-sensors = <&tsens3 9>; |
| |
| - trips { |
| - trip-point0 { |
| - temperature = <85000>; |
| - hysteresis = <1000>; |
| - type = "passive"; |
| + cooling-maps { |
| + map0 { |
| + trip = <&gpuss4_alert0>; |
| + cooling-device = <&gpu THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; |
| }; |
| + }; |
| |
| - trip-point1 { |
| - temperature = <90000>; |
| + trips { |
| + gpuss4_alert0: trip-point0 { |
| + temperature = <95000>; |
| hysteresis = <1000>; |
| - type = "hot"; |
| + type = "passive"; |
| }; |
| |
| - trip-point2 { |
| + gpu-critical { |
| temperature = <115000>; |
| hysteresis = <1000>; |
| type = "critical"; |
| @@ -7446,24 +7452,25 @@ trip-point2 { |
| }; |
| |
| gpuss-5-thermal { |
| - polling-delay-passive = <10>; |
| + polling-delay-passive = <200>; |
| |
| thermal-sensors = <&tsens3 10>; |
| |
| - trips { |
| - trip-point0 { |
| - temperature = <85000>; |
| - hysteresis = <1000>; |
| - type = "passive"; |
| + cooling-maps { |
| + map0 { |
| + trip = <&gpuss5_alert0>; |
| + cooling-device = <&gpu THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; |
| }; |
| + }; |
| |
| - trip-point1 { |
| - temperature = <90000>; |
| + trips { |
| + gpuss5_alert0: trip-point0 { |
| + temperature = <95000>; |
| hysteresis = <1000>; |
| - type = "hot"; |
| + type = "passive"; |
| }; |
| |
| - trip-point2 { |
| + gpu-critical { |
| temperature = <115000>; |
| hysteresis = <1000>; |
| type = "critical"; |
| @@ -7472,24 +7479,25 @@ trip-point2 { |
| }; |
| |
| gpuss-6-thermal { |
| - polling-delay-passive = <10>; |
| + polling-delay-passive = <200>; |
| |
| thermal-sensors = <&tsens3 11>; |
| |
| - trips { |
| - trip-point0 { |
| - temperature = <85000>; |
| - hysteresis = <1000>; |
| - type = "passive"; |
| + cooling-maps { |
| + map0 { |
| + trip = <&gpuss6_alert0>; |
| + cooling-device = <&gpu THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; |
| }; |
| + }; |
| |
| - trip-point1 { |
| - temperature = <90000>; |
| + trips { |
| + gpuss6_alert0: trip-point0 { |
| + temperature = <95000>; |
| hysteresis = <1000>; |
| - type = "hot"; |
| + type = "passive"; |
| }; |
| |
| - trip-point2 { |
| + gpu-critical { |
| temperature = <115000>; |
| hysteresis = <1000>; |
| type = "critical"; |
| @@ -7498,24 +7506,25 @@ trip-point2 { |
| }; |
| |
| gpuss-7-thermal { |
| - polling-delay-passive = <10>; |
| + polling-delay-passive = <200>; |
| |
| thermal-sensors = <&tsens3 12>; |
| |
| - trips { |
| - trip-point0 { |
| - temperature = <85000>; |
| - hysteresis = <1000>; |
| - type = "passive"; |
| + cooling-maps { |
| + map0 { |
| + trip = <&gpuss7_alert0>; |
| + cooling-device = <&gpu THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; |
| }; |
| + }; |
| |
| - trip-point1 { |
| - temperature = <90000>; |
| + trips { |
| + gpuss7_alert0: trip-point0 { |
| + temperature = <95000>; |
| hysteresis = <1000>; |
| - type = "hot"; |
| + type = "passive"; |
| }; |
| |
| - trip-point2 { |
| + gpu-critical { |
| temperature = <115000>; |
| hysteresis = <1000>; |
| type = "critical"; |
| -- |
| 2.39.5 |
| |