Unlike the CPU, the CDSP/Modem does not throttle its speed automatically when it reaches high temperatures in shikra.
Set up CDSP/Modem cooling by throttling the CDSP and modem when they reach 115°C using the QMI TMD cooling device framework. Signed-off-by: Dipa Ramesh Mantre <[email protected]> --- arch/arm64/boot/dts/qcom/shikra.dtsi | 71 ++++++++++++++++++++++++++++++++++-- 1 file changed, 68 insertions(+), 3 deletions(-) diff --git a/arch/arm64/boot/dts/qcom/shikra.dtsi b/arch/arm64/boot/dts/qcom/shikra.dtsi index c1f06f692f66..55bac1b57cba 100644 --- a/arch/arm64/boot/dts/qcom/shikra.dtsi +++ b/arch/arm64/boot/dts/qcom/shikra.dtsi @@ -10,6 +10,7 @@ #include <dt-bindings/interconnect/qcom,icc.h> #include <dt-bindings/interconnect/qcom,osm-l3.h> #include <dt-bindings/dma/qcom-gpi.h> +#include <dt-bindings/thermal/qcom,pas.h> #include <dt-bindings/interconnect/qcom,rpm-icc.h> #include <dt-bindings/interconnect/qcom,shikra.h> #include <dt-bindings/interrupt-controller/arm-gic.h> @@ -2007,6 +2008,8 @@ remoteproc_mpss: remoteproc@6080000 { qcom,smem-states = <&modem_smp2p_out 0>; qcom,smem-state-names = "stop"; + #cooling-cells = <3>; + status = "disabled"; glink-edge { @@ -2047,6 +2050,8 @@ remoteproc_cdsp: remoteproc@b300000 { qcom,smem-states = <&cdsp_smp2p_out 0>; qcom,smem-state-names = "stop"; + #cooling-cells = <3>; + status = "disabled"; glink-edge { @@ -3868,6 +3873,8 @@ map0 { }; nsp-thermal { + polling-delay-passive = <200>; + thermal-sensors = <&tsens0 7>; trips { @@ -3877,15 +3884,31 @@ trip-point0 { type = "hot"; }; - nsp-critical { + nsp_alert1: nsp-alert1 { temperature = <115000>; + hysteresis = <5000>; + type = "passive"; + }; + + nsp-critical { + temperature = <118000>; hysteresis = <0>; type = "critical"; }; }; + + cooling-maps { + map0 { + trip = <&nsp_alert1>; + cooling-device = <&remoteproc_cdsp QCOM_TMD_CDSP_SW + THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + }; + }; }; mdmss0-thermal { + polling-delay-passive = <200>; + thermal-sensors = <&tsens0 8>; trips { @@ -3895,15 +3918,37 @@ trip-point0 { type = "hot"; }; - mdmss0-critical { + mdmss0_alert1: mdmss0-alert1 { temperature = <115000>; + hysteresis = <5000>; + type = "passive"; + }; + + mdmss0-critical { + temperature = <118000>; hysteresis = <0>; type = "critical"; }; }; + + cooling-maps { + map0 { + trip = <&mdmss0_alert1>; + cooling-device = <&remoteproc_mpss QCOM_TMD_PA + THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + }; + + map1 { + trip = <&mdmss0_alert1>; + cooling-device = <&remoteproc_mpss QCOM_TMD_MODEM + THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + }; + }; }; mdmss1-thermal { + polling-delay-passive = <200>; + thermal-sensors = <&tsens0 9>; trips { @@ -3913,12 +3958,32 @@ trip-point0 { type = "hot"; }; - mdmss1-critical { + mdmss1_alert1: mdmss1-alert1 { temperature = <115000>; + hysteresis = <5000>; + type = "passive"; + }; + + mdmss1-critical { + temperature = <118000>; hysteresis = <0>; type = "critical"; }; }; + + cooling-maps { + map0 { + trip = <&mdmss1_alert1>; + cooling-device = <&remoteproc_mpss QCOM_TMD_PA + THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + }; + + map1 { + trip = <&mdmss1_alert1>; + cooling-device = <&remoteproc_mpss QCOM_TMD_MODEM + THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + }; + }; }; camera-thermal { -- 2.34.1

