Skip to contentSkip to conversation

arm64: dts: qcom: x1e78100-thinkpad-t14s: Add thermal zones for PMICs

PATCH Superseded Daniel Lezcano 3 participants 5 messages Oct 23

Subsystems (3)

v4 of 5 Superseded Latest is v5 →

lore
Share & tools
lore
#0 lore raw

PATCH v4 1/1 arm64: dts: qcom: x1e78100-thinkpad-t14s: Add thermal zones for PMICs

The ThinkPad T14s needs thermal mitigation under sustained workloads to limit temperature rise before thermal shutdown. EC interrupt-driven thermal monitoring is not yet supported, so use the board temperature sensors exposed through the PMK8550 VADC to provide mitigation now.

Describe the sensors near DRAM, the fan/heatpipe, the GPU and CPU PMICs, the charger, the WWAN area and the USB-C ports. The DRAM-area sensor faces the keyboard, while the fan/heatpipe-area sensor faces the back cover. These are internal board measurements rather than direct measurements of the user-contact surfaces.

Use the heatpipe-area sensor for passive mitigation at 57.85 degrees Celsius, derived from observed platform behaviour with the Windows balanced power profile. Map the passive trip to all CPUs and the GPU, with 1 degree Celsius hysteresis and a 500 ms passive polling interval. Name the trip "backcover-ec-alert" so that the planned EC support can locate and adjust it.

An earlier approach using staged CPU-cluster throttling did not show a significant improvement and introduced a latency imbalance between CPU clusters. Keep a single passive trip to provide timely mitigation.

Add 73 degree Celsius critical shutdown trips for the DRAM-area and heatpipe-area sensors. Retain these baseline thresholds pending sensor-specific hardware validation. The reported Windows DRAM threshold of 115 degrees Celsius has not been established to apply to these VADC measurements and does not justify changing the shutdown thresholds.

Thermal camera measurements indicate that the readings primarily reflect internal temperatures rather than chassis surface temperatures. No unsafe external surface temperature was observed during those tests, but they do not establish qualified critical limits for the internal sensors.

Expose the remaining sensors as monitoring-only zones and enable ADC threshold monitoring on the corresponding PMK8550 VADC channels.

---
 .../qcom/x1e78100-lenovo-thinkpad-t14s.dtsi   | 112 ++++++++++++++++++
 1 file changed, 112 insertions(+)
arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi +112 -0
index 75ad74bcb042..21f4569068e1 100644
@@ -502,6 +502,88 @@ platform {
 			};
 		};
 	};
+
+	thermal-zones {
+		/* Sensor near DRAM, facing the keyboard. */
+		dram-thermal {
+			critical-action = "shutdown";
+			thermal-sensors = <&pmk8550_vadc ADC5_GEN3_AMUX1_THM_100K_PU(1)>;
+
+			trips {
+				dram-critical {
+					temperature = <73000>;
+					hysteresis = <1000>;
+					type = "critical";
+				};
+			};
+		};
+
+		/* Sensor near the GPU PMICs. */
+		gpu-pmic-thermal {
+			thermal-sensors = <&pmk8550_vadc ADC5_GEN3_AMUX4_THM_100K_PU(1)>;
+		};
+
+		/* Sensor near the fan/heatpipe, facing the back cover. */
+		heatpipe-thermal {
+			critical-action = "shutdown";
+			polling-delay-passive = <500>;
+
+			thermal-sensors = <&pmk8550_vadc ADC5_GEN3_AMUX2_GPIO_100K_PU(1)>;
+
+			trips {
+				backcover_ec_alert: backcover-ec-alert {
+					temperature = <57850>;
+					hysteresis = <1000>;
+					type = "passive";
+				};
+
+				heatpipe-critical {
+					temperature = <73000>;
+					hysteresis = <1000>;
+					type = "critical";
+				};
+			};
+
+			cooling-maps {
+				map0 {
+					trip = <&backcover_ec_alert>;
+					cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&cpu4 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&cpu5 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&cpu6 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&cpu7 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&cpu8 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&cpu9 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&cpu10 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&cpu11 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&gpu THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+				};
+			};
+		};
+
+		/* Sensor in the WWAN area. */
+		wwan-thermal {
+			thermal-sensors = <&pmk8550_vadc ADC5_GEN3_AMUX3_THM_100K_PU(1)>;
+		};
+
+		/* Sensor in the charger area. */
+		charger-thermal {
+			thermal-sensors = <&pmk8550_vadc ADC5_GEN3_AMUX2_THM_100K_PU(1)>;
+		};
+
+		/* Sensor near the CPU PMICs. */
+		cpu-pmic-thermal {
+			thermal-sensors = <&pmk8550_vadc ADC5_GEN3_AMUX1_GPIO_100K_PU(1)>;
+		};
+
+		/* Sensor near the USB-C ports. */
+		typec-thermal {
+			thermal-sensors = <&pmk8550_vadc ADC5_GEN3_AMUX5_THM_100K_PU(1)>;
+		};
+	};
 };
 
 &apps_rsc {
@@ -1285,6 +1367,36 @@ usb0_pwr_1p15_reg_en: usb0-pwr-1p15-reg-en-state {
 	};
 };
 
+&pmk8550_vadc {
+	channel@144 {
+		qcom,adc-tm;
+	};
+
+	channel@145 {
+		qcom,adc-tm;
+	};
+
+	channel@146 {
+		qcom,adc-tm;
+	};
+
+	channel@147 {
+		qcom,adc-tm;
+	};
+
+	channel@148 {
+		qcom,adc-tm;
+	};
+
+	channel@14a {
+		qcom,adc-tm;
+	};
+
+	channel@14b {
+		qcom,adc-tm;
+	};
+};
+
 &qupv3_0 {
 	status = "okay";
 };
Signature · 1 line
2.53.0
Reviewed-by on v4 1/1
#1 lore raw
Quoted 115 lines · Daniel Lezcano

The ThinkPad T14s needs thermal mitigation under sustained workloads to limit temperature rise before thermal shutdown. EC interrupt-driven thermal monitoring is not yet supported, so use the board temperature sensors exposed through the PMK8550 VADC to provide mitigation now.

Describe the sensors near DRAM, the fan/heatpipe, the GPU and CPU PMICs, the charger, the WWAN area and the USB-C ports. The DRAM-area sensor faces the keyboard, while the fan/heatpipe-area sensor faces the back cover. These are internal board measurements rather than direct measurements of the user-contact surfaces.

Use the heatpipe-area sensor for passive mitigation at 57.85 degrees Celsius, derived from observed platform behaviour with the Windows balanced power profile. Map the passive trip to all CPUs and the GPU, with 1 degree Celsius hysteresis and a 500 ms passive polling interval. Name the trip "backcover-ec-alert" so that the planned EC support can locate and adjust it.

An earlier approach using staged CPU-cluster throttling did not show a significant improvement and introduced a latency imbalance between CPU clusters. Keep a single passive trip to provide timely mitigation.

Add 73 degree Celsius critical shutdown trips for the DRAM-area and heatpipe-area sensors. Retain these baseline thresholds pending sensor-specific hardware validation. The reported Windows DRAM threshold of 115 degrees Celsius has not been established to apply to these VADC measurements and does not justify changing the shutdown thresholds.

Thermal camera measurements indicate that the readings primarily reflect internal temperatures rather than chassis surface temperatures. No unsafe external surface temperature was observed during those tests, but they do not establish qualified critical limits for the internal sensors.

Expose the remaining sensors as monitoring-only zones and enable ADC threshold monitoring on the corresponding PMK8550 VADC channels.

---
 .../qcom/x1e78100-lenovo-thinkpad-t14s.dtsi   | 112 ++++++++++++++++++
 1 file changed, 112 insertions(+)
arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi +64 -0
index 75ad74bcb042..21f4569068e1 100644
@@ -502,6 +502,88 @@ platform {
 			};
 		};
 	};
+
+	thermal-zones {
+		/* Sensor near DRAM, facing the keyboard. */
+		dram-thermal {
+			critical-action = "shutdown";
+			thermal-sensors = <&pmk8550_vadc ADC5_GEN3_AMUX1_THM_100K_PU(1)>;
+
+			trips {
+				dram-critical {
+					temperature = <73000>;
+					hysteresis = <1000>;
+					type = "critical";
+				};
+			};
+		};
+
+		/* Sensor near the GPU PMICs. */
+		gpu-pmic-thermal {
+			thermal-sensors = <&pmk8550_vadc ADC5_GEN3_AMUX4_THM_100K_PU(1)>;
+		};
+
+		/* Sensor near the fan/heatpipe, facing the back cover. */
+		heatpipe-thermal {
+			critical-action = "shutdown";
+			polling-delay-passive = <500>;
+
+			thermal-sensors = <&pmk8550_vadc ADC5_GEN3_AMUX2_GPIO_100K_PU(1)>;
+
+			trips {
+				backcover_ec_alert: backcover-ec-alert {
+					temperature = <57850>;
+					hysteresis = <1000>;
+					type = "passive";
+				};
+
+				heatpipe-critical {
+					temperature = <73000>;
+					hysteresis = <1000>;
+					type = "critical";
+				};
+			};
+
+			cooling-maps {
+				map0 {
+					trip = <&backcover_ec_alert>;
+					cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&cpu4 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&cpu5 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&cpu6 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&cpu7 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&cpu8 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&cpu9 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&cpu10 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&cpu11 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&gpu THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+				};
+			};
+		};
+
+		/* Sensor in the WWAN area. */
+		wwan-thermal {

arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi platform { · line 578

Quoted 10 lines
arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi +10 -0
+			thermal-sensors = <&pmk8550_vadc ADC5_GEN3_AMUX3_THM_100K_PU(1)>;
+		};
+
+		/* Sensor in the charger area. */
+		charger-thermal {
+			thermal-sensors = <&pmk8550_vadc ADC5_GEN3_AMUX2_THM_100K_PU(1)>;
+		};
+
+		/* Sensor near the CPU PMICs. */
+		cpu-pmic-thermal {

I'm a bit confused by the node order here. It's not ordered by the thermal sensor (SYS_THERMx) like in x1e80100-crd.dts, but it's not ordered alphabetically either. Or is it still the old order from the previous revision?

I think I'd personally prefer ordering by SYS_THERMx, but alphabetical order would be our typical rule.

arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi platform { · line 587

Quoted 9 lines
arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi +8 -0
+			thermal-sensors = <&pmk8550_vadc ADC5_GEN3_AMUX1_GPIO_100K_PU(1)>;
+		};
+
+		/* Sensor near the USB-C ports. */
+		typec-thermal {
+			thermal-sensors = <&pmk8550_vadc ADC5_GEN3_AMUX5_THM_100K_PU(1)>;
+		};
+	};
 };

Anyway, for the changes itself:

Thanks for fixing the names!
Stephan

#2 lore raw
Quoted 132 lines · Stephan Gerhold
Quoted 115 lines · Daniel Lezcano

The ThinkPad T14s needs thermal mitigation under sustained workloads to limit temperature rise before thermal shutdown. EC interrupt-driven thermal monitoring is not yet supported, so use the board temperature sensors exposed through the PMK8550 VADC to provide mitigation now.

Describe the sensors near DRAM, the fan/heatpipe, the GPU and CPU PMICs, the charger, the WWAN area and the USB-C ports. The DRAM-area sensor faces the keyboard, while the fan/heatpipe-area sensor faces the back cover. These are internal board measurements rather than direct measurements of the user-contact surfaces.

Use the heatpipe-area sensor for passive mitigation at 57.85 degrees Celsius, derived from observed platform behaviour with the Windows balanced power profile. Map the passive trip to all CPUs and the GPU, with 1 degree Celsius hysteresis and a 500 ms passive polling interval. Name the trip "backcover-ec-alert" so that the planned EC support can locate and adjust it.

An earlier approach using staged CPU-cluster throttling did not show a significant improvement and introduced a latency imbalance between CPU clusters. Keep a single passive trip to provide timely mitigation.

Add 73 degree Celsius critical shutdown trips for the DRAM-area and heatpipe-area sensors. Retain these baseline thresholds pending sensor-specific hardware validation. The reported Windows DRAM threshold of 115 degrees Celsius has not been established to apply to these VADC measurements and does not justify changing the shutdown thresholds.

Thermal camera measurements indicate that the readings primarily reflect internal temperatures rather than chassis surface temperatures. No unsafe external surface temperature was observed during those tests, but they do not establish qualified critical limits for the internal sensors.

Expose the remaining sensors as monitoring-only zones and enable ADC threshold monitoring on the corresponding PMK8550 VADC channels.

---
  .../qcom/x1e78100-lenovo-thinkpad-t14s.dtsi   | 112 ++++++++++++++++++
  1 file changed, 112 insertions(+)
arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi +64 -0
index 75ad74bcb042..21f4569068e1 100644
@@ -502,6 +502,88 @@ platform {
  			};
  		};
  	};
+
+	thermal-zones {
+		/* Sensor near DRAM, facing the keyboard. */
+		dram-thermal {
+			critical-action = "shutdown";
+			thermal-sensors = <&pmk8550_vadc ADC5_GEN3_AMUX1_THM_100K_PU(1)>;
+
+			trips {
+				dram-critical {
+					temperature = <73000>;
+					hysteresis = <1000>;
+					type = "critical";
+				};
+			};
+		};
+
+		/* Sensor near the GPU PMICs. */
+		gpu-pmic-thermal {
+			thermal-sensors = <&pmk8550_vadc ADC5_GEN3_AMUX4_THM_100K_PU(1)>;
+		};
+
+		/* Sensor near the fan/heatpipe, facing the back cover. */
+		heatpipe-thermal {
+			critical-action = "shutdown";
+			polling-delay-passive = <500>;
+
+			thermal-sensors = <&pmk8550_vadc ADC5_GEN3_AMUX2_GPIO_100K_PU(1)>;
+
+			trips {
+				backcover_ec_alert: backcover-ec-alert {
+					temperature = <57850>;
+					hysteresis = <1000>;
+					type = "passive";
+				};
+
+				heatpipe-critical {
+					temperature = <73000>;
+					hysteresis = <1000>;
+					type = "critical";
+				};
+			};
+
+			cooling-maps {
+				map0 {
+					trip = <&backcover_ec_alert>;
+					cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&cpu4 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&cpu5 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&cpu6 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&cpu7 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&cpu8 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&cpu9 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&cpu10 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&cpu11 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&gpu THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+				};
+			};
+		};
+
+		/* Sensor in the WWAN area. */
+		wwan-thermal {

arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi platform { · line 578

Quoted 10 lines
arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi +10 -0
+			thermal-sensors = <&pmk8550_vadc ADC5_GEN3_AMUX3_THM_100K_PU(1)>;
+		};
+
+		/* Sensor in the charger area. */
+		charger-thermal {
+			thermal-sensors = <&pmk8550_vadc ADC5_GEN3_AMUX2_THM_100K_PU(1)>;
+		};
+
+		/* Sensor near the CPU PMICs. */
+		cpu-pmic-thermal {

I'm a bit confused by the node order here. It's not ordered by the thermal sensor (SYS_THERMx) like in x1e80100-crd.dts, but it's not ordered alphabetically either. Or is it still the old order from the previous revision?

Quoted 2 lines

I think I'd personally prefer ordering by SYS_THERMx, but alphabetical order would be our typical rule.

Oh, yes I changed the name but forgot to reorder alphabetically :(

Quoted 7 lines

Anyway, for the changes itself:

Thanks for fixing the names!
Stephan

Reviewed-by
#3 lore raw
In reply to Stephan Gerhold
Quoted 5 lines · Stephan Gerhold
Quoted 4 lines · Daniel Lezcano

The ThinkPad T14s needs thermal mitigation under sustained workloads to limit temperature rise before thermal shutdown. EC interrupt-driven thermal monitoring is not yet supported, so use the board temperature sensors exposed through the PMK8550 VADC to provide mitigation now.

[...]

Quoted 10 lines

arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi platform { · line 578

Quoted 2 lines
arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi +2 -0
+		/* Sensor near the CPU PMICs. */
+		cpu-pmic-thermal {

I'm a bit confused by the node order here. It's not ordered by the thermal sensor (SYS_THERMx) like in x1e80100-crd.dts, but it's not ordered alphabetically either. Or is it still the old order from the previous revision?

I think I'd personally prefer ordering by SYS_THERMx, but alphabetical order would be our typical rule.

Thermistor index is what I'd prefer to go by, I think it makes the mostsense

in any case

thanks!

Konrad

#4 lore raw
Quoted 17 lines · Konrad Dybcio
Quoted 5 lines · Stephan Gerhold
Quoted 4 lines · Daniel Lezcano

The ThinkPad T14s needs thermal mitigation under sustained workloads to limit temperature rise before thermal shutdown. EC interrupt-driven thermal monitoring is not yet supported, so use the board temperature sensors exposed through the PMK8550 VADC to provide mitigation now.

[...]

Quoted 8 lines

arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi platform { · line 578

Quoted 2 lines
arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi +2 -0
+		/* Sensor near the CPU PMICs. */
+		cpu-pmic-thermal {

I'm a bit confused by the node order here. It's not ordered by the thermal sensor (SYS_THERMx) like in x1e80100-crd.dts, but it's not ordered alphabetically either. Or is it still the old order from the previous revision?

Quoted 5 lines
Quoted 2 lines

I think I'd personally prefer ordering by SYS_THERMx, but alphabetical order would be our typical rule.

Thermistor index is what I'd prefer to go by, I think it makes the mostsense

why ?

Quoted 5 lines

thanks!

Konrad