Re: [PATCH] arm64: dts: qcom: x1e78100-thinkpad-t14s: Add thermal zones for PMICs

From: Daniel Lezcano

Date: Tue Sep 29 2026 - 06:01:00 EST


On 9/29/26 11:31, Stephan Gerhold wrote:
On Tue, Sep 22, 2026 at 08:18:18PM +0200, Daniel Lezcano wrote:
Add the thermal zones for the ThinkPad T14s and describe the board
temperature sensors exposed through the PMK8550 VADC.

The keyboard area is the main thermal constraint under sustained CPU
load. Add a passive thermal zone for it and progressively throttle the
three CPU groups as the temperature approaches the 53°C limit. The
groups are activated at 49°C, 51°C and 53°C respectively, with a
1000 m°C hysteresis and a 500 ms passive polling interval.

The cooling maps limit each CPU cooling device to state 6, which
corresponds to approximately 1.9 GHz. Testing showed that the system can
sustain the workload with all three CPU clusters capped at this
frequency while maintaining the expected performance, making it a
suitable upper cooling state for thermal regulation.

Several configurations were evaluated while tuning the keyboard zone.
Using a single 53°C trip for all CPUs allowed the temperature to rise
quickly but resulted in a stable operating point around 54.3°C, about
1.3°C above the intended limit. Introducing staged cooling before the
target significantly reduced the thermal overshoot. A 49/51/53°C
configuration kept the steady-state temperature close to 53°C, while a
later 49.5/51.5/53°C configuration improved the heating response but
shifted the equilibrium slightly above the target. Based on these
results, keep the earlier 49/51/53°C staging.

Also add a passive back-cover thermal zone which uses the GPU as a
cooling device at 64°C, together with a 73°C critical shutdown trip.

Describe the remaining SMB, SDX, east and west board temperature
sensors as monitoring-only thermal zones, and enable ADC thermal
monitoring on the corresponding PMK8550 VADC channels.

Signed-off-by: Daniel Lezcano <daniel.lezcano@xxxxxxxxxxxxxxxx>
---
.../qcom/x1e78100-lenovo-thinkpad-t14s.dts | 142 ++++++++++++++++++
1 file changed, 142 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dts b/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dts
index 5cc6a63d1ef6..9407868864ad 100644
--- a/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dts
+++ b/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dts
@@ -10,6 +10,117 @@ / {
compatible = "lenovo,thinkpad-t14s-lcd", "lenovo,thinkpad-t14s",
"qcom,x1e78100", "qcom,x1e80100";
+ thermal-zones {
+ soc-thermal {
+ thermal-sensors = <&pmk8550_vadc ADC5_GEN3_AMUX1_GPIO_100K_PU(1)>;
+ };
+
+ keyboard-thermal {
+ critical-action = "shutdown";
+ polling-delay-passive = <500>;
+
+ thermal-sensors = <&pmk8550_vadc ADC5_GEN3_AMUX2_GPIO_100K_PU(1)>;

I believe this is "towards back cover next to heat pipe" on T14s, not
"keyboard".

SYS_THERM1 is RT8502 and you can find that labelled on the top bottom
right in this mainboard picture:
https://download.lenovo.com/Images/Parts/5B21P83385/5B21P83385_A.jpg

In the T14s, the mainboard is mounted 180° rotated, you can see the same
part of the mainboard in the top middle here, above the heat pipe,
facing towards the back cover:
https://www.notebookcheck.net/fileadmin/_processed_/d/c/csm_DSC_0003_aadae1ddd2.jpg

Thanks for pointing it out, I'll double check

+
+ trips {
+
+ keyboard_alert0: trip-point0 {
+ temperature = <49000>;
+ hysteresis = <1000>;
+ type = "passive";
+ };

If I'm reading the Windows ACPI setup correctly, it starts throttling
much later. The main thermal zone used for throttling on Windows is
TZ40, which is thermistor 2 read through the qcom-hamoa-ec interface
(b94000.i2c, 'i2cget -y N 0x36 0x2a b'). TZ39 with thermistor 1 looks
like the SoC thermistor, so TZ40 could be the EC equivalent of
SYS_THERM1, i.e. RT8202 also visible in the mainboard picture above.

On Windows, TZ40 is configured as follows on my T14s:

Passive throttling starting at:
- 3310 dK (57.85°C), power mode "balanced" (current default for EC)
- 3330 dK (59.85°C), power mode "performance"
- 3230 dK (49.85°C), power mode "low power"

Yes, probably it is time to take benefit of the platform profile in order to change the trip points.

Cooling devices:
- CLS0.CPU0-3
- CLS1.CPU0-3
- CLS2.CPU0-3
- GPU0

If we start throttling earlier than Windows, I would be worried that the
EC will not reach the trip point for maximum fan speed, and we'll end up
overly throttling the device.

Mmmh, that is a good point.

I don't know the thermal management in Windows and if it has exactly the same design as the Linux thermal framework.

As we can set multiple passive trip points, may be we can try to step in the different cooling devices instead of making them all together tied with a single trip point.

Or do you think it is better to just make all devices capped at the same time ?