OMAPDSS: use devm_ functions
authorJulia Lawall <Julia.Lawall@lip6.fr>
Tue, 24 Jan 2012 13:00:45 +0000 (14:00 +0100)
committerTomi Valkeinen <tomi.valkeinen@ti.com>
Wed, 25 Jan 2012 11:48:35 +0000 (13:48 +0200)
The various devm_ functions allocate memory that is released when a driver
detaches.  This patch uses these functions for data that is allocated in
the probe function of a platform device and is only freed in the remove
function.

Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
drivers/video/omap2/dss/dispc.c
drivers/video/omap2/dss/dsi.c
drivers/video/omap2/dss/dss.c
drivers/video/omap2/dss/rfbi.c
drivers/video/omap2/dss/venc.c

index a5ec7f37c1857f99fdd411e38e0384f05c3e1936..6fa866a83f1ca4e633ff9b52b2b7a9ee8165b6b4 100644 (file)
@@ -3322,7 +3322,8 @@ static int omap_dispchw_probe(struct platform_device *pdev)
                r = -EINVAL;
                goto err_ioremap;
        }
-       dispc.base = ioremap(dispc_mem->start, resource_size(dispc_mem));
+       dispc.base = devm_ioremap(&pdev->dev, dispc_mem->start,
+                                 resource_size(dispc_mem));
        if (!dispc.base) {
                DSSERR("can't ioremap DISPC\n");
                r = -ENOMEM;
@@ -3332,14 +3333,14 @@ static int omap_dispchw_probe(struct platform_device *pdev)
        if (dispc.irq < 0) {
                DSSERR("platform_get_irq failed\n");
                r = -ENODEV;
-               goto err_irq;
+               goto err_ioremap;
        }
 
-       r = request_irq(dispc.irq, omap_dispc_irq_handler, IRQF_SHARED,
-               "OMAP DISPC", dispc.pdev);
+       r = devm_request_irq(&pdev->dev, dispc.irq, omap_dispc_irq_handler,
+                            IRQF_SHARED, "OMAP DISPC", dispc.pdev);
        if (r < 0) {
                DSSERR("request_irq failed\n");
-               goto err_irq;
+               goto err_ioremap;
        }
 
        pm_runtime_enable(&pdev->dev);
@@ -3362,9 +3363,6 @@ static int omap_dispchw_probe(struct platform_device *pdev)
 
 err_runtime_get:
        pm_runtime_disable(&pdev->dev);
-       free_irq(dispc.irq, dispc.pdev);
-err_irq:
-       iounmap(dispc.base);
 err_ioremap:
        clk_put(dispc.dss_clk);
 err_get_clk:
@@ -3377,8 +3375,6 @@ static int omap_dispchw_remove(struct platform_device *pdev)
 
        clk_put(dispc.dss_clk);
 
-       free_irq(dispc.irq, dispc.pdev);
-       iounmap(dispc.base);
        return 0;
 }
 
index d4d676c82c12fbe9789edc354c85b5a14bd19cbb..52b93597730054197ad5334ca58b0b097f5349bf 100644 (file)
@@ -4695,7 +4695,7 @@ static int omap_dsihw_probe(struct platform_device *dsidev)
        struct resource *dsi_mem;
        struct dsi_data *dsi;
 
-       dsi = kzalloc(sizeof(*dsi), GFP_KERNEL);
+       dsi = devm_kzalloc(&dsidev->dev, sizeof(*dsi), GFP_KERNEL);
        if (!dsi) {
                r = -ENOMEM;
                goto err_alloc;
@@ -4724,7 +4724,7 @@ static int omap_dsihw_probe(struct platform_device *dsidev)
 
        r = dsi_get_clocks(dsidev);
        if (r)
-               goto err_get_clk;
+               goto err_alloc;
 
        pm_runtime_enable(&dsidev->dev);
 
@@ -4742,7 +4742,8 @@ static int omap_dsihw_probe(struct platform_device *dsidev)
                r = -EINVAL;
                goto err_ioremap;
        }
-       dsi->base = ioremap(dsi_mem->start, resource_size(dsi_mem));
+       dsi->base = devm_ioremap(&dsidev->dev, dsi_mem->start,
+                                resource_size(dsi_mem));
        if (!dsi->base) {
                DSSERR("can't ioremap DSI\n");
                r = -ENOMEM;
@@ -4752,14 +4753,14 @@ static int omap_dsihw_probe(struct platform_device *dsidev)
        if (dsi->irq < 0) {
                DSSERR("platform_get_irq failed\n");
                r = -ENODEV;
-               goto err_get_irq;
+               goto err_ioremap;
        }
 
-       r = request_irq(dsi->irq, omap_dsi_irq_handler, IRQF_SHARED,
-               dev_name(&dsidev->dev), dsi->pdev);
+       r = devm_request_irq(&dsidev->dev, dsi->irq, omap_dsi_irq_handler,
+                            IRQF_SHARED, dev_name(&dsidev->dev), dsi->pdev);
        if (r < 0) {
                DSSERR("request_irq failed\n");
-               goto err_get_irq;
+               goto err_ioremap;
        }
 
        /* DSI VCs initialization */
@@ -4773,7 +4774,7 @@ static int omap_dsihw_probe(struct platform_device *dsidev)
 
        r = dsi_runtime_get(dsidev);
        if (r)
-               goto err_get_dsi;
+               goto err_ioremap;
 
        rev = dsi_read_reg(dsidev, DSI_REVISION);
        dev_dbg(&dsidev->dev, "OMAP DSI rev %d.%d\n",
@@ -4791,14 +4792,8 @@ static int omap_dsihw_probe(struct platform_device *dsidev)
 
        return 0;
 
-err_get_dsi:
-       free_irq(dsi->irq, dsi->pdev);
-err_get_irq:
-       iounmap(dsi->base);
 err_ioremap:
        pm_runtime_disable(&dsidev->dev);
-err_get_clk:
-       kfree(dsi);
 err_alloc:
        return r;
 }
@@ -4823,11 +4818,6 @@ static int omap_dsihw_remove(struct platform_device *dsidev)
                dsi->vdds_dsi_reg = NULL;
        }
 
-       free_irq(dsi->irq, dsi->pdev);
-       iounmap(dsi->base);
-
-       kfree(dsi);
-
        return 0;
 }
 
index 17033457ee89baa2e557b4dbd0d53215977ee6ce..e75f837c766cf52a7928154093f18ec0880eeeca 100644 (file)
@@ -751,7 +751,8 @@ static int omap_dsshw_probe(struct platform_device *pdev)
                r = -EINVAL;
                goto err_ioremap;
        }
-       dss.base = ioremap(dss_mem->start, resource_size(dss_mem));
+       dss.base = devm_ioremap(&pdev->dev, dss_mem->start,
+                               resource_size(dss_mem));
        if (!dss.base) {
                DSSERR("can't ioremap DSS\n");
                r = -ENOMEM;
@@ -760,7 +761,7 @@ static int omap_dsshw_probe(struct platform_device *pdev)
 
        r = dss_get_clocks();
        if (r)
-               goto err_clocks;
+               goto err_ioremap;
 
        pm_runtime_enable(&pdev->dev);
 
@@ -808,8 +809,6 @@ err_dpi:
 err_runtime_get:
        pm_runtime_disable(&pdev->dev);
        dss_put_clocks();
-err_clocks:
-       iounmap(dss.base);
 err_ioremap:
        return r;
 }
@@ -819,8 +818,6 @@ static int omap_dsshw_remove(struct platform_device *pdev)
        dpi_exit();
        sdi_exit();
 
-       iounmap(dss.base);
-
        pm_runtime_disable(&pdev->dev);
 
        dss_put_clocks();
index 814bb9500dca77a9b47c6216aedadd361ba5cdaf..159e914063c09f6ca4c9f1baa2943799a77686cc 100644 (file)
@@ -925,7 +925,8 @@ static int omap_rfbihw_probe(struct platform_device *pdev)
                r = -EINVAL;
                goto err_ioremap;
        }
-       rfbi.base = ioremap(rfbi_mem->start, resource_size(rfbi_mem));
+       rfbi.base = devm_ioremap(&pdev->dev, rfbi_mem->start,
+                                resource_size(rfbi_mem));
        if (!rfbi.base) {
                DSSERR("can't ioremap RFBI\n");
                r = -ENOMEM;
@@ -963,7 +964,6 @@ err_get_ick:
        rfbi_runtime_put();
 err_get_rfbi:
        pm_runtime_disable(&pdev->dev);
-       iounmap(rfbi.base);
 err_ioremap:
        return r;
 }
@@ -971,7 +971,6 @@ err_ioremap:
 static int omap_rfbihw_remove(struct platform_device *pdev)
 {
        pm_runtime_disable(&pdev->dev);
-       iounmap(rfbi.base);
        return 0;
 }
 
index 82865bec94572fe36b0361387d4c3a2542ee075a..4172232cdec493f0fa5a49219eae71af938b2b58 100644 (file)
@@ -798,7 +798,8 @@ static int omap_venchw_probe(struct platform_device *pdev)
                r = -EINVAL;
                goto err_ioremap;
        }
-       venc.base = ioremap(venc_mem->start, resource_size(venc_mem));
+       venc.base = devm_ioremap(&pdev->dev, venc_mem->start,
+                                resource_size(venc_mem));
        if (!venc.base) {
                DSSERR("can't ioremap VENC\n");
                r = -ENOMEM;
@@ -807,7 +808,7 @@ static int omap_venchw_probe(struct platform_device *pdev)
 
        r = venc_get_clocks(pdev);
        if (r)
-               goto err_get_clk;
+               goto err_ioremap;
 
        pm_runtime_enable(&pdev->dev);
 
@@ -825,8 +826,6 @@ static int omap_venchw_probe(struct platform_device *pdev)
 err_get_venc:
        pm_runtime_disable(&pdev->dev);
        venc_put_clocks();
-err_get_clk:
-       iounmap(venc.base);
 err_ioremap:
        return r;
 }
@@ -842,7 +841,6 @@ static int omap_venchw_remove(struct platform_device *pdev)
        pm_runtime_disable(&pdev->dev);
        venc_put_clocks();
 
-       iounmap(venc.base);
        return 0;
 }
 
This page took 0.039533 seconds and 5 git commands to generate.