Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a2bc74cf authored by Arvind Yadav's avatar Arvind Yadav Committed by Ulf Hansson
Browse files

mmc: mxcmmc: Handle return value of clk_prepare_enable



clk_prepare_enable() can fail here and we must check its return value.

Signed-off-by: default avatarArvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
parent 78bb1fd7
Loading
Loading
Loading
Loading
+19 −6
Original line number Diff line number Diff line
@@ -1103,8 +1103,13 @@ static int mxcmci_probe(struct platform_device *pdev)
		goto out_free;
	}

	clk_prepare_enable(host->clk_per);
	clk_prepare_enable(host->clk_ipg);
	ret = clk_prepare_enable(host->clk_per);
	if (ret)
		goto out_free;

	ret = clk_prepare_enable(host->clk_ipg);
	if (ret)
		goto out_clk_per_put;

	mxcmci_softreset(host);

@@ -1173,8 +1178,9 @@ static int mxcmci_probe(struct platform_device *pdev)
		dma_release_channel(host->dma);

out_clk_put:
	clk_disable_unprepare(host->clk_per);
	clk_disable_unprepare(host->clk_ipg);
out_clk_per_put:
	clk_disable_unprepare(host->clk_per);

out_free:
	mmc_free_host(mmc);
@@ -1217,10 +1223,17 @@ static int __maybe_unused mxcmci_resume(struct device *dev)
{
	struct mmc_host *mmc = dev_get_drvdata(dev);
	struct mxcmci_host *host = mmc_priv(mmc);
	int ret;

	clk_prepare_enable(host->clk_per);
	clk_prepare_enable(host->clk_ipg);
	return 0;
	ret = clk_prepare_enable(host->clk_per);
	if (ret)
		return ret;

	ret = clk_prepare_enable(host->clk_ipg);
	if (ret)
		clk_disable_unprepare(host->clk_per);

	return ret;
}

static SIMPLE_DEV_PM_OPS(mxcmci_pm_ops, mxcmci_suspend, mxcmci_resume);