Thread (14 messages) 14 messages, 4 authors, 2d ago

Re: [PATCH v8 3/3] thermal/drivers/imx: Add calibration offset support

From: CHENG Haoning (BCSC/ENG1) <hidden>
Date: 2026-07-20 02:10:15
Also in: imx, linux-devicetree, linux-pm, lkml

On 2026-07-17 06:23:44+00:00, CHENG Haoning (BCSC/ENG1) wrote:
On Wed, Jul 15, 2026 at 11:06:07AM +0200, Frieder Schrempf wrote:
quoted
On 14.07.26 12:28, Haoning CHENG via B4 Relay wrote:

Sorry to chime in so late. I just want to understand what this
calibration offset is about. Why would there be a need of a
board-specific offset? The sensor is in the SoC and if you add a
board-specific offset, you no longer measure the SoC core temperature,
right?

How would you determine the offset in the first place? How would I know
what fsl,temp-calibration-offset-millicelsius should be set to? I could
put a sensor on the SoC case and use the delta as offset, but then I
would just account for the thermal resistance of the casing and not
measure the SoC core temperature anymore, right?
Hi Frieder,

Thanks for pointing this out. Your understanding is correct: after
applying the offset, the reported value no longer represents the raw
SoC die or junction temperature.

For this board, the required "SoC temperature" is the package-surface
temperature. The offset was derived by comparing the TEMPMON reading
against a calibrated external sensor placed near the SoC package
surface under steady-state thermal conditions, and is used to
approximate the package-surface temperature from the internal TEMPMON
reading.

The Linux thermal framework does not require a thermal zone to use a
specific temperature reference. It only requires the reported
temperature and trip points to use the same temperature domain.

In this driver, the offset is added in get_temp() and subtracted in
set_alarm() and set_panic() when programming the hardware thresholds.
This keeps the reported temperature and trip points in the same
package-surface temperature domain. Doing this in the driver is
necessary because the hardware alarm thresholds must also be offset-
corrected; applying the offset only in userspace would cause the
TEMPMON IRQ to fire at the wrong die temperature.

I agree that "calibration offset" is misleading, since this does not
calibrate TEMPMON to a more accurate junction temperature. In the next
revision, the commit messages and DT binding have been updated to
describe this as a board-specific conversion offset from the internal
sensor reading to an estimated package-surface temperature.

Thanks,
Haoning
Hi Frieder,

I need to correct my previous reply. After further discussion with our hardware team, the offset does NOT convert die temperature to package-surface temperature.

Their thermal characterization shows that the raw TEMPMON sensor reading itself deviates from the theoretical junction temperature - this deviation exists even at the die level, before any board or package influence. The offset corrects the sensor reading toward the actual junction temperature, so it is a genuine sensor calibration.

Board-level effects may contribute additionally, but they are not the primary reason for this feature. I apologize for the confusion - my earlier description was inaccurate. The v10 series reflects this corrected understanding.

Thanks,
Haoning
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help