mirror of
https://github.com/torvalds/linux.git
synced 2026-09-23 22:14:03 +02:00
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:
parent
0c569e2202
commit
bcc6d886e5
|
|
@ -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 = {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user