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

mmc: pxamci: Use devm_mmc_alloc_host() helper

parent fb2f7310
Loading
Loading
Loading
Loading
+15 −27
Original line number Diff line number Diff line
@@ -615,11 +615,9 @@ static int pxamci_probe(struct platform_device *pdev)
	if (irq < 0)
		return irq;

	mmc = mmc_alloc_host(sizeof(struct pxamci_host), dev);
	if (!mmc) {
		ret = -ENOMEM;
		goto out;
	}
	mmc = devm_mmc_alloc_host(dev, sizeof(*host));
	if (!mmc)
		return -ENOMEM;

	mmc->ops = &pxamci_ops;

@@ -646,7 +644,7 @@ static int pxamci_probe(struct platform_device *pdev)

	ret = pxamci_of_init(pdev, mmc);
	if (ret)
		goto out;
		return ret;

	host = mmc_priv(mmc);
	host->mmc = mmc;
@@ -655,9 +653,8 @@ static int pxamci_probe(struct platform_device *pdev)

	host->clk = devm_clk_get(dev, NULL);
	if (IS_ERR(host->clk)) {
		ret = PTR_ERR(host->clk);
		host->clk = NULL;
		goto out;
		return PTR_ERR(host->clk);
	}

	host->clkrate = clk_get_rate(host->clk);
@@ -670,7 +667,7 @@ static int pxamci_probe(struct platform_device *pdev)

	ret = pxamci_init_ocr(host);
	if (ret < 0)
		goto out;
		return ret;

	mmc->caps = 0;
	host->cmdat = 0;
@@ -686,10 +683,8 @@ static int pxamci_probe(struct platform_device *pdev)
	host->imask = MMC_I_MASK_ALL;

	host->base = devm_platform_get_and_ioremap_resource(pdev, 0, &r);
	if (IS_ERR(host->base)) {
		ret = PTR_ERR(host->base);
		goto out;
	}
	if (IS_ERR(host->base))
		return PTR_ERR(host->base);
	host->res = r;

	/*
@@ -704,16 +699,15 @@ static int pxamci_probe(struct platform_device *pdev)
	ret = devm_request_irq(dev, irq, pxamci_irq, 0,
			       DRIVER_NAME, host);
	if (ret)
		goto out;
		return ret;

	platform_set_drvdata(pdev, mmc);

	host->dma_chan_rx = dma_request_chan(dev, "rx");
	if (IS_ERR(host->dma_chan_rx)) {
		dev_err(dev, "unable to request rx dma channel\n");
		ret = PTR_ERR(host->dma_chan_rx);
		host->dma_chan_rx = NULL;
		goto out;
		return dev_err_probe(dev, PTR_ERR(host->dma_chan_rx),
				     "unable to request rx dma channel\n");
	}

	host->dma_chan_tx = dma_request_chan(dev, "tx");
@@ -771,14 +765,10 @@ static int pxamci_probe(struct platform_device *pdev)
	return 0;

out:
	if (host) {
	if (host->dma_chan_rx)
		dma_release_channel(host->dma_chan_rx);
	if (host->dma_chan_tx)
		dma_release_channel(host->dma_chan_tx);
	}
	if (mmc)
		mmc_free_host(mmc);
	return ret;
}

@@ -803,8 +793,6 @@ static void pxamci_remove(struct platform_device *pdev)
		dmaengine_terminate_all(host->dma_chan_tx);
		dma_release_channel(host->dma_chan_rx);
		dma_release_channel(host->dma_chan_tx);

		mmc_free_host(mmc);
	}
}