spi: dw-mmio: Use helper function devm_clk_get_*()
authorLi Zetao <lizetao1@huawei.com>
Wed, 23 Aug 2023 13:39:25 +0000 (21:39 +0800)
committerMark Brown <broonie@kernel.org>
Mon, 11 Sep 2023 00:32:02 +0000 (01:32 +0100)
Since commit 7ef9651e9792 ("clk: Provide new devm_clk helpers for prepared
and enabled clocks"), devm_clk_get() and clk_prepare_enable() can now be
replaced by devm_clk_get_enabled() when driver enables (and possibly
prepares) the clocks for the whole lifetime of the device. Moreover, it is
no longer necessary to unprepare and disable the clocks explicitly. Also,
devm_clk_get_optional() and clk_prepare_enable() can now be replaced by
devm_clk_get_optional_enabled(). Moreover, the lable "out_clk" no longer
makes sense, rename it to "out_reset".

Signed-off-by: Li Zetao <lizetao1@huawei.com>
Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Acked-by: Serge Semin <fancer.lancer@gmail.com>
Link: https://lore.kernel.org/r/20230823133938.1359106-13-lizetao1@huawei.com
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi-dw-mmio.c

index 805264c9c65c6518af56163faa5d6ae6e01a55ff..46801189a6510e5f1684a23ebadce1b21767ba9f 100644 (file)
@@ -340,29 +340,20 @@ static int dw_spi_mmio_probe(struct platform_device *pdev)
        if (dws->irq < 0)
                return dws->irq; /* -ENXIO */
 
-       dwsmmio->clk = devm_clk_get(&pdev->dev, NULL);
+       dwsmmio->clk = devm_clk_get_enabled(&pdev->dev, NULL);
        if (IS_ERR(dwsmmio->clk))
                return PTR_ERR(dwsmmio->clk);
-       ret = clk_prepare_enable(dwsmmio->clk);
-       if (ret)
-               return ret;
 
        /* Optional clock needed to access the registers */
-       dwsmmio->pclk = devm_clk_get_optional(&pdev->dev, "pclk");
-       if (IS_ERR(dwsmmio->pclk)) {
-               ret = PTR_ERR(dwsmmio->pclk);
-               goto out_clk;
-       }
-       ret = clk_prepare_enable(dwsmmio->pclk);
-       if (ret)
-               goto out_clk;
+       dwsmmio->pclk = devm_clk_get_optional_enabled(&pdev->dev, "pclk");
+       if (IS_ERR(dwsmmio->pclk))
+               return PTR_ERR(dwsmmio->pclk);
 
        /* find an optional reset controller */
        dwsmmio->rstc = devm_reset_control_get_optional_exclusive(&pdev->dev, "spi");
-       if (IS_ERR(dwsmmio->rstc)) {
-               ret = PTR_ERR(dwsmmio->rstc);
-               goto out_clk;
-       }
+       if (IS_ERR(dwsmmio->rstc))
+               return PTR_ERR(dwsmmio->rstc);
+
        reset_control_deassert(dwsmmio->rstc);
 
        dws->bus_num = pdev->id;
@@ -383,7 +374,7 @@ static int dw_spi_mmio_probe(struct platform_device *pdev)
        if (init_func) {
                ret = init_func(pdev, dwsmmio);
                if (ret)
-                       goto out;
+                       goto out_reset;
        }
 
        pm_runtime_enable(&pdev->dev);
@@ -397,9 +388,7 @@ static int dw_spi_mmio_probe(struct platform_device *pdev)
 
 out:
        pm_runtime_disable(&pdev->dev);
-       clk_disable_unprepare(dwsmmio->pclk);
-out_clk:
-       clk_disable_unprepare(dwsmmio->clk);
+out_reset:
        reset_control_assert(dwsmmio->rstc);
 
        return ret;
@@ -411,8 +400,6 @@ static void dw_spi_mmio_remove(struct platform_device *pdev)
 
        dw_spi_remove_host(&dwsmmio->dws);
        pm_runtime_disable(&pdev->dev);
-       clk_disable_unprepare(dwsmmio->pclk);
-       clk_disable_unprepare(dwsmmio->clk);
        reset_control_assert(dwsmmio->rstc);
 }