Re: [PATCH] thermal/drivers/imx: Disable clock on runtime resume failure

Frank Li <[email protected]>
Newsgroups dev.linux.lists.imx,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-kernel,org.kernel.vger.linux-pm,org.kernel.vger.stable
Message-ID <amDiGlN13RX9J1rC@SMW015318>
On Wed, Jul 22, 2026 at 04:49:09PM +0800, Can Peng wrote:
> 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: 4cf2ddf16e17 ("thermal/drivers/imx: Implement runtime PM support")
> Cc: [email protected]
> Signed-off-by: Can Peng <[email protected]>
> ---

Reviewed-by: Frank Li <[email protected]>

>  drivers/thermal/imx_thermal.c | 9 +++++++--
>  1 file changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/thermal/imx_thermal.c b/drivers/thermal/imx_thermal.c
> index 5aaacbc53478..b0e88b6a9352 100644
> --- a/drivers/thermal/imx_thermal.c
> +++ b/drivers/thermal/imx_thermal.c
> @@ -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 = {
> --
> 2.53.0
>
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.