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