Commit e3e5255e authored by Janusz Krzysztofik's avatar Janusz Krzysztofik Committed by Ulf Hansson
Browse files

mmc: omap: Make it CCF clk API compatible



The driver, OMAP specific, now omits clk_prepare/unprepare() steps, not
supported by OMAP custom implementation of clock API.  However, non-CCF
stubs of those functions exist for use on such platforms until converted
to CCF.

Update the driver to be compatible with CCF implementation of clock API.

Signed-off-by: default avatarJanusz Krzysztofik <jmkrzyszt@gmail.com>
Link: https://lore.kernel.org/r/20220402112004.129886-1-jmkrzyszt@gmail.com


Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
parent 25bbf0da
Loading
Loading
Loading
Loading
+14 −9
Original line number Diff line number Diff line
@@ -1374,7 +1374,7 @@ static int mmc_omap_probe(struct platform_device *pdev)
	host->iclk = clk_get(&pdev->dev, "ick");
	if (IS_ERR(host->iclk))
		return PTR_ERR(host->iclk);
	clk_enable(host->iclk);
	clk_prepare_enable(host->iclk);

	host->fclk = clk_get(&pdev->dev, "fck");
	if (IS_ERR(host->fclk)) {
@@ -1382,16 +1382,18 @@ static int mmc_omap_probe(struct platform_device *pdev)
		goto err_free_iclk;
	}

	ret = clk_prepare(host->fclk);
	if (ret)
		goto err_put_fclk;

	host->dma_tx_burst = -1;
	host->dma_rx_burst = -1;

	host->dma_tx = dma_request_chan(&pdev->dev, "tx");
	if (IS_ERR(host->dma_tx)) {
		ret = PTR_ERR(host->dma_tx);
		if (ret == -EPROBE_DEFER) {
			clk_put(host->fclk);
			goto err_free_iclk;
		}
		if (ret == -EPROBE_DEFER)
			goto err_free_fclk;

		host->dma_tx = NULL;
		dev_warn(host->dev, "TX DMA channel request failed\n");
@@ -1403,8 +1405,7 @@ static int mmc_omap_probe(struct platform_device *pdev)
		if (ret == -EPROBE_DEFER) {
			if (host->dma_tx)
				dma_release_channel(host->dma_tx);
			clk_put(host->fclk);
			goto err_free_iclk;
			goto err_free_fclk;
		}

		host->dma_rx = NULL;
@@ -1454,9 +1455,12 @@ static int mmc_omap_probe(struct platform_device *pdev)
		dma_release_channel(host->dma_tx);
	if (host->dma_rx)
		dma_release_channel(host->dma_rx);
err_free_fclk:
	clk_unprepare(host->fclk);
err_put_fclk:
	clk_put(host->fclk);
err_free_iclk:
	clk_disable(host->iclk);
	clk_disable_unprepare(host->iclk);
	clk_put(host->iclk);
	return ret;
}
@@ -1476,8 +1480,9 @@ static int mmc_omap_remove(struct platform_device *pdev)

	mmc_omap_fclk_enable(host, 0);
	free_irq(host->irq, host);
	clk_unprepare(host->fclk);
	clk_put(host->fclk);
	clk_disable(host->iclk);
	clk_disable_unprepare(host->iclk);
	clk_put(host->iclk);

	if (host->dma_tx)