Re: [PATCH v4 05/17] spi: imx: Simplify clock handling with devm_clk_get_enabled()
Frank Li <[email protected]>
| Newsgroups | org.ozlabs.lists.openbmc,dev.linux.lists.imx,org.infradead.lists.linux-arm-kernel,org.infradead.lists.linux-mediatek,org.infradead.lists.linux-riscv,org.infradead.lists.linux-rockchip,org.kernel.vger.linux-kernel,org.kernel.vger.linux-spi |
|---|---|
| Message-ID | <abqsYybojsX8ni1o@lizhi-Precision-Tower-5810> |
On Wed, Mar 18, 2026 at 10:39:55AM +0800, Pei Xiao wrote: > Replace devm_clk_get() followed by clk_prepare_enable() with > devm_clk_get_enabled() for both "ipg" and "per" clocks. This reduces > boilerplate code and error handling, as the managed API automatically > disables the clocks when the device is removed or if probe fails. > > Remove the now-unnecessary clk_disable_unprepare() calls from the > probe error paths. > > Signed-off-by: Pei Xiao <[email protected]> > --- Reviewed-by: Frank Li <[email protected]> > drivers/spi/spi-imx.c | 15 ++------------- > 1 file changed, 2 insertions(+), 13 deletions(-) > > diff --git a/drivers/spi/spi-imx.c b/drivers/spi/spi-imx.c > index 64c6c09e1e7b..a01c466818de 100644 > --- a/drivers/spi/spi-imx.c > +++ b/drivers/spi/spi-imx.c > @@ -2323,26 +2323,18 @@ static int spi_imx_probe(struct platform_device *pdev) > goto out_controller_put; > } > > - spi_imx->clk_ipg = devm_clk_get(&pdev->dev, "ipg"); > + spi_imx->clk_ipg = devm_clk_get_enabled(&pdev->dev, "ipg"); > if (IS_ERR(spi_imx->clk_ipg)) { > ret = PTR_ERR(spi_imx->clk_ipg); > goto out_controller_put; > } > > - spi_imx->clk_per = devm_clk_get(&pdev->dev, "per"); > + spi_imx->clk_per = devm_clk_get_enabled(&pdev->dev, "per"); > if (IS_ERR(spi_imx->clk_per)) { > ret = PTR_ERR(spi_imx->clk_per); > goto out_controller_put; > } > > - ret = clk_prepare_enable(spi_imx->clk_per); > - if (ret) > - goto out_controller_put; > - > - ret = clk_prepare_enable(spi_imx->clk_ipg); > - if (ret) > - goto out_put_per; > - > pm_runtime_set_autosuspend_delay(spi_imx->dev, MXC_RPM_TIMEOUT); > pm_runtime_use_autosuspend(spi_imx->dev); > pm_runtime_get_noresume(spi_imx->dev); > @@ -2386,9 +2378,6 @@ static int spi_imx_probe(struct platform_device *pdev) > pm_runtime_disable(spi_imx->dev); > pm_runtime_set_suspended(&pdev->dev); > > - clk_disable_unprepare(spi_imx->clk_ipg); > -out_put_per: > - clk_disable_unprepare(spi_imx->clk_per); > out_controller_put: > spi_controller_put(controller); > > -- > 2.25.1 >