mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Daniel Lezcano <daniel.lezcano@oss.qualcomm.com>
To: Stephan Gerhold <stephan.gerhold@linaro.org>
Cc: andersson@kernel.org, konradybcio@kernel.org,
	abelvesa@kernel.org, robh@kernel.org, krzk+dt@kernel.org,
	conor+dt@kernel.org, linux-arm-msm@vger.kernel.org,
	devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
	johannes.goede@oss.qualcomm.com
Subject: Re: [PATCH] arm64: dts: qcom: x1e78100-thinkpad-t14s: Add thermal zones for PMICs
Date: Tue, 29 Sep 2026 11:59:45 +0200	[thread overview]
Message-ID: <4846bb08-9317-407a-a25a-8437a599ee7d@oss.qualcomm.com> (raw)
In-Reply-To: <aruFjEq4AfcIOxa3@linaro.org>

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@oss.qualcomm.com>
>> ---
>>   .../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 ?

      reply	other threads:[~2026-09-29  9:59 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-22 18:18 Daniel Lezcano
2026-09-23  9:08 ` Konrad Dybcio
2026-09-23 19:07 ` johannes.goede
2026-09-23 19:43   ` Hans de Goede
2026-09-29  9:31 ` Stephan Gerhold
2026-09-29  9:59   ` Daniel Lezcano [this message]

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=4846bb08-9317-407a-a25a-8437a599ee7d@oss.qualcomm.com \
    --to=daniel.lezcano@oss.qualcomm.com \
    --cc=abelvesa@kernel.org \
    --cc=andersson@kernel.org \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=johannes.goede@oss.qualcomm.com \
    --cc=konradybcio@kernel.org \
    --cc=krzk+dt@kernel.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=robh@kernel.org \
    --cc=stephan.gerhold@linaro.org \
    /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®