summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/staging/most/hdm-dim2/dim2_hdm.c33
1 files changed, 5 insertions, 28 deletions
diff --git a/drivers/staging/most/hdm-dim2/dim2_hdm.c b/drivers/staging/most/hdm-dim2/dim2_hdm.c
index 97db334e5867..708b998b953f 100644
--- a/drivers/staging/most/hdm-dim2/dim2_hdm.c
+++ b/drivers/staging/most/hdm-dim2/dim2_hdm.c
@@ -747,29 +747,14 @@ static int dim2_probe(struct platform_device *pdev)
test_dev = dev;
#else
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
- if (!res) {
- pr_err("no memory region defined\n");
- ret = -ENOENT;
- return ret;
- }
-
- if (!request_mem_region(res->start, resource_size(res), pdev->name)) {
- pr_err("failed to request mem region\n");
- ret = -EBUSY;
- return ret;
- }
-
- dev->io_base = ioremap(res->start, resource_size(res));
- if (!dev->io_base) {
- pr_err("failed to ioremap\n");
- ret = -ENOMEM;
- goto err_release_mem;
- }
+ dev->io_base = devm_ioremap_resource(&pdev->dev, res);
+ if (IS_ERR(dev->io_base))
+ return PTR_ERR(dev->io_base);
ret = platform_get_irq(pdev, 0);
if (ret < 0) {
pr_err("failed to get irq\n");
- goto err_unmap_io;
+ return -ENODEV;
}
dev->irq_ahb0 = ret;
@@ -777,7 +762,7 @@ static int dim2_probe(struct platform_device *pdev)
if (ret) {
pr_err("failed to request IRQ: %d, err: %d\n",
dev->irq_ahb0, ret);
- goto err_unmap_io;
+ return ret;
}
#endif
init_waitqueue_head(&dev->netinfo_waitq);
@@ -858,10 +843,6 @@ err_stop_thread:
err_free_irq:
#if !defined(ENABLE_HDM_TEST)
free_irq(dev->irq_ahb0, dev);
-err_unmap_io:
- iounmap(dev->io_base);
-err_release_mem:
- release_mem_region(res->start, resource_size(res));
#endif
return ret;
@@ -876,7 +857,6 @@ err_release_mem:
static int dim2_remove(struct platform_device *pdev)
{
struct dim2_hdm *dev = platform_get_drvdata(pdev);
- struct resource *res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
struct dim2_platform_data *pdata = pdev->dev.platform_data;
unsigned long flags;
@@ -892,10 +872,7 @@ static int dim2_remove(struct platform_device *pdev)
kthread_stop(dev->netinfo_task);
#if !defined(ENABLE_HDM_TEST)
free_irq(dev->irq_ahb0, dev);
- iounmap(dev->io_base);
- release_mem_region(res->start, resource_size(res));
#endif
- platform_set_drvdata(pdev, NULL);
/*
* break link to local platform_device_id struct