Commit c53700e7 authored by Binbin Zhou's avatar Binbin Zhou Committed by Ulf Hansson
Browse files

mmc: mxs-mmc: Use devm_mmc_alloc_host() helper



Use new function devm_mmc_alloc_host() to simplify the code.

Cc: Shawn Guo <shawnguo@kernel.org>
Cc: Sascha Hauer <s.hauer@pengutronix.de>
Cc: Fabio Estevam <festevam@gmail.com>
Reviewed-by: default avatarHuacai Chen <chenhuacai@loongson.cn>
Signed-off-by: default avatarBinbin Zhou <zhoubinbin@loongson.cn>
Link: https://lore.kernel.org/r/8ace670e06536fb5c9e28003d487cde870ee8c47.1748933789.git.zhoubinbin@loongson.cn


Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
parent c6aa07ac
Loading
Loading
Loading
Loading
+11 −20
Original line number Diff line number Diff line
@@ -569,7 +569,7 @@ static int mxs_mmc_probe(struct platform_device *pdev)
	if (irq_err < 0)
		return irq_err;

	mmc = mmc_alloc_host(sizeof(struct mxs_mmc_host), &pdev->dev);
	mmc = devm_mmc_alloc_host(&pdev->dev, sizeof(*host));
	if (!mmc)
		return -ENOMEM;

@@ -577,10 +577,8 @@ static int mxs_mmc_probe(struct platform_device *pdev)
	ssp = &host->ssp;
	ssp->dev = &pdev->dev;
	ssp->base = devm_platform_ioremap_resource(pdev, 0);
	if (IS_ERR(ssp->base)) {
		ret = PTR_ERR(ssp->base);
		goto out_mmc_free;
	}
	if (IS_ERR(ssp->base))
		return PTR_ERR(ssp->base);

	ssp->devid = (enum mxs_ssp_id)of_device_get_match_data(&pdev->dev);

@@ -590,26 +588,23 @@ static int mxs_mmc_probe(struct platform_device *pdev)
	reg_vmmc = devm_regulator_get(&pdev->dev, "vmmc");
	if (!IS_ERR(reg_vmmc)) {
		ret = regulator_enable(reg_vmmc);
		if (ret) {
			dev_err(&pdev->dev,
				"Failed to enable vmmc regulator: %d\n", ret);
			goto out_mmc_free;
		}
		if (ret)
			return dev_err_probe(&pdev->dev, ret,
					     "Failed to enable vmmc regulator\n");

		ret = devm_add_action_or_reset(&pdev->dev, mxs_mmc_regulator_disable,
					       reg_vmmc);
		if (ret)
			goto out_mmc_free;
			return ret;
	}

	ssp->clk = devm_clk_get(&pdev->dev, NULL);
	if (IS_ERR(ssp->clk)) {
		ret = PTR_ERR(ssp->clk);
		goto out_mmc_free;
	}
	if (IS_ERR(ssp->clk))
		return PTR_ERR(ssp->clk);

	ret = clk_prepare_enable(ssp->clk);
	if (ret)
		goto out_mmc_free;
		return ret;

	ret = mxs_mmc_reset(host);
	if (ret) {
@@ -668,8 +663,6 @@ static int mxs_mmc_probe(struct platform_device *pdev)
	dma_release_channel(ssp->dmach);
out_clk_disable:
	clk_disable_unprepare(ssp->clk);
out_mmc_free:
	mmc_free_host(mmc);
	return ret;
}

@@ -685,8 +678,6 @@ static void mxs_mmc_remove(struct platform_device *pdev)
		dma_release_channel(ssp->dmach);

	clk_disable_unprepare(ssp->clk);

	mmc_free_host(mmc);
}

#ifdef CONFIG_PM_SLEEP