mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-23 20:53:53 +08:00
mmc: omap: Convert to devm_ioremap_resource
Simplify probe and cleanup code by using devm_ioremap_resource. This also makes probe code to follow more common allocate private struct followed by other initialization style. Signed-off-by: Jarkko Nikula <jarkko.nikula@bitmer.com> Acked-by: Tony Lindgren <tony@atomide.com> Tested-by: Aaro Koskinen <aaro.koskinen@iki.fi> Signed-off-by: Chris Ball <chris@printf.net>
This commit is contained in:
parent
2ca5dc6ffa
commit
64ac16ec80
@ -1334,22 +1334,19 @@ static int mmc_omap_probe(struct platform_device *pdev)
|
||||
return -EPROBE_DEFER;
|
||||
}
|
||||
|
||||
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||
irq = platform_get_irq(pdev, 0);
|
||||
if (res == NULL || irq < 0)
|
||||
return -ENXIO;
|
||||
|
||||
res = request_mem_region(res->start, resource_size(res),
|
||||
pdev->name);
|
||||
if (res == NULL)
|
||||
return -EBUSY;
|
||||
|
||||
host = devm_kzalloc(&pdev->dev, sizeof(struct mmc_omap_host),
|
||||
GFP_KERNEL);
|
||||
if (host == NULL) {
|
||||
ret = -ENOMEM;
|
||||
goto err_free_mem_region;
|
||||
}
|
||||
if (host == NULL)
|
||||
return -ENOMEM;
|
||||
|
||||
irq = platform_get_irq(pdev, 0);
|
||||
if (irq < 0)
|
||||
return -ENXIO;
|
||||
|
||||
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||
host->virt_base = devm_ioremap_resource(&pdev->dev, res);
|
||||
if (IS_ERR(host->virt_base))
|
||||
return PTR_ERR(host->virt_base);
|
||||
|
||||
INIT_WORK(&host->slot_release_work, mmc_omap_slot_release_work);
|
||||
INIT_WORK(&host->send_stop_work, mmc_omap_send_stop_work);
|
||||
@ -1374,15 +1371,9 @@ static int mmc_omap_probe(struct platform_device *pdev)
|
||||
host->irq = irq;
|
||||
host->use_dma = 1;
|
||||
host->phys_base = res->start;
|
||||
host->virt_base = ioremap(res->start, resource_size(res));
|
||||
if (!host->virt_base)
|
||||
goto err_ioremap;
|
||||
|
||||
host->iclk = clk_get(&pdev->dev, "ick");
|
||||
if (IS_ERR(host->iclk)) {
|
||||
ret = PTR_ERR(host->iclk);
|
||||
goto err_free_mmc_host;
|
||||
}
|
||||
if (IS_ERR(host->iclk))
|
||||
return PTR_ERR(host->iclk);
|
||||
clk_enable(host->iclk);
|
||||
|
||||
host->fclk = clk_get(&pdev->dev, "fck");
|
||||
@ -1460,11 +1451,6 @@ err_free_dma:
|
||||
err_free_iclk:
|
||||
clk_disable(host->iclk);
|
||||
clk_put(host->iclk);
|
||||
err_free_mmc_host:
|
||||
iounmap(host->virt_base);
|
||||
err_ioremap:
|
||||
err_free_mem_region:
|
||||
release_mem_region(res->start, resource_size(res));
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -1492,9 +1478,6 @@ static int mmc_omap_remove(struct platform_device *pdev)
|
||||
if (host->dma_rx)
|
||||
dma_release_channel(host->dma_rx);
|
||||
|
||||
iounmap(host->virt_base);
|
||||
release_mem_region(pdev->resource[0].start,
|
||||
pdev->resource[0].end - pdev->resource[0].start + 1);
|
||||
destroy_workqueue(host->mmc_omap_wq);
|
||||
|
||||
return 0;
|
||||
|
Loading…
Reference in New Issue
Block a user