Unverified Commit f64b1600 authored by Li Zetao's avatar Li Zetao Committed by Mark Brown
Browse files

spi: spi-cadence: Use helper function devm_clk_get_enabled()



Since commit 7ef9651e ("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.

Reviewed-by: default avatarJonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: default avatarLi Zetao <lizetao1@huawei.com>
Link: https://lore.kernel.org/r/20230823133938.1359106-9-lizetao1@huawei.com


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 0135a384
Loading
Loading
Loading
Loading
+3 −20
Original line number Diff line number Diff line
@@ -581,31 +581,19 @@ static int cdns_spi_probe(struct platform_device *pdev)
		goto remove_ctlr;
	}

	xspi->pclk = devm_clk_get(&pdev->dev, "pclk");
	xspi->pclk = devm_clk_get_enabled(&pdev->dev, "pclk");
	if (IS_ERR(xspi->pclk)) {
		dev_err(&pdev->dev, "pclk clock not found.\n");
		ret = PTR_ERR(xspi->pclk);
		goto remove_ctlr;
	}

	ret = clk_prepare_enable(xspi->pclk);
	if (ret) {
		dev_err(&pdev->dev, "Unable to enable APB clock.\n");
		goto remove_ctlr;
	}

	if (!spi_controller_is_target(ctlr)) {
		xspi->ref_clk = devm_clk_get(&pdev->dev, "ref_clk");
		xspi->ref_clk = devm_clk_get_enabled(&pdev->dev, "ref_clk");
		if (IS_ERR(xspi->ref_clk)) {
			dev_err(&pdev->dev, "ref_clk clock not found.\n");
			ret = PTR_ERR(xspi->ref_clk);
			goto clk_dis_apb;
		}

		ret = clk_prepare_enable(xspi->ref_clk);
		if (ret) {
			dev_err(&pdev->dev, "Unable to enable device clock.\n");
			goto clk_dis_apb;
			goto remove_ctlr;
		}

		pm_runtime_use_autosuspend(&pdev->dev);
@@ -679,10 +667,7 @@ static int cdns_spi_probe(struct platform_device *pdev)
	if (!spi_controller_is_target(ctlr)) {
		pm_runtime_set_suspended(&pdev->dev);
		pm_runtime_disable(&pdev->dev);
		clk_disable_unprepare(xspi->ref_clk);
	}
clk_dis_apb:
	clk_disable_unprepare(xspi->pclk);
remove_ctlr:
	spi_controller_put(ctlr);
	return ret;
@@ -703,8 +688,6 @@ static void cdns_spi_remove(struct platform_device *pdev)

	cdns_spi_write(xspi, CDNS_SPI_ER, CDNS_SPI_ER_DISABLE);

	clk_disable_unprepare(xspi->ref_clk);
	clk_disable_unprepare(xspi->pclk);
	pm_runtime_set_suspended(&pdev->dev);
	pm_runtime_disable(&pdev->dev);