thermal/drivers/imx: Disable clock on runtime resume failure

imx_thermal_runtime_resume() enables the thermal clock before
powering up the sensor and enabling measurements.

If either regmap_write() fails, the function returns with the clock
still enabled. This leaves the clock enable count unbalanced after a
failed runtime resume.

Disable the clock on those failure paths before returning the error.

Fixes: 4cf2ddf16e ("thermal/drivers/imx: Implement runtime PM support")
Cc: stable@vger.kernel.org
Signed-off-by: Can Peng <pengcan@kylinos.cn>
Signed-off-by: Daniel Lezcano <daniel.lezcano@kernel.org>
Reviewed-by: Frank Li <Frank.Li@nxp.com>
Link: https://patch.msgid.link/20260722084909.463437-1-pengcan@kylinos.cn
This commit is contained in:
Can Peng 2026-07-22 16:49:09 +08:00 committed by Daniel Lezcano
parent 0c569e2202
commit bcc6d886e5
No known key found for this signature in database
GPG Key ID: A832238A2A4FE84F

View File

@ -832,12 +832,12 @@ static int imx_thermal_runtime_resume(struct device *dev)
ret = regmap_write(map, socdata->sensor_ctrl + REG_CLR,
socdata->power_down_mask);
if (ret)
return ret;
goto disable_clk;
ret = regmap_write(map, socdata->sensor_ctrl + REG_SET,
socdata->measure_temp_mask);
if (ret)
return ret;
goto disable_clk;
/*
* According to the temp sensor designers, it may require up to ~17us
@ -846,6 +846,11 @@ static int imx_thermal_runtime_resume(struct device *dev)
usleep_range(20, 50);
return 0;
disable_clk:
clk_disable_unprepare(data->thermal_clk);
return ret;
}
static const struct dev_pm_ops imx_thermal_pm_ops = {