In airoha_thermal_set_trips(), the low trip validation incorrectly clamps 'high' instead of 'low': low = clamp_t(int, high, RAW_TO_TEMP(priv, 0), ...); This causes TEMPOFFSETL to receive the clamped high-temperature value instead of the requested low-temperature value, making the low-temperature alert threshold identical to the high-temperature threshold. As a result, low-temperature interrupts can never fire independently. Fix by replacing 'high' with 'low' in the clamp expression, matching the symmetric pattern used for the high trip on line 264. Fixes: 42de37f40e1b ("thermal/drivers: Add support for Airoha EN7581 thermal sensor") Signed-off-by: Wayen --- drivers/thermal/airoha_thermal.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/thermal/airoha_thermal.c b/drivers/thermal/airoha_thermal.c index b9fd6bfc88..439aa011b7 100644 --- a/drivers/thermal/airoha_thermal.c +++ b/drivers/thermal/airoha_thermal.c @@ -273,7 +273,7 @@ static int airoha_thermal_set_trips(struct thermal_zone_device *tz, int low, if (low != -INT_MAX) { /* Validate low and clamp it to a supported value */ - low = clamp_t(int, high, RAW_TO_TEMP(priv, 0), + low = clamp_t(int, low, RAW_TO_TEMP(priv, 0), RAW_TO_TEMP(priv, FIELD_MAX(EN7581_DOUT_TADC_MASK))); /* We offset the low temp of 1°C to trigger correct event */ -- 2.51.0