* [PATCH 0/5] drm/exynos: Use devm_* functions and cleanup
@ 2012-08-06 6:46 Sachin Kamat
2012-08-06 6:46 ` [PATCH 1/5] drm/exynos: Remove redundant check in exynos_hdmi.c file Sachin Kamat
` (4 more replies)
0 siblings, 5 replies; 11+ messages in thread
From: Sachin Kamat @ 2012-08-06 6:46 UTC (permalink / raw)
To: dri-devel; +Cc: patches, sachin.kamat
This series adds devm_* functionality in some drivers and cleans up
some code that remained when the same was added to other drivers earlier.
This series is compile tested against the latest (6 Aug 2012) linux-next code.
Sachin Kamat (5):
drm/exynos: Remove redundant check in exynos_hdmi.c file
drm/exynos: Remove redundant check in exynos_drm_fimd.c file
drm/exynos: Use devm_kzalloc in exynos_drm_vidi.c file
drm/exynos: Use devm_kzalloc in exynos_drm_hdmi.c file
drm/exynos: Use devm_* functions in exynos_drm_g2d.c file
drivers/gpu/drm/exynos/exynos_drm_fimd.c | 5 ---
drivers/gpu/drm/exynos/exynos_drm_g2d.c | 50 ++++++------------------------
drivers/gpu/drm/exynos/exynos_drm_hdmi.c | 3 +-
drivers/gpu/drm/exynos/exynos_drm_vidi.c | 4 +--
drivers/gpu/drm/exynos/exynos_hdmi.c | 5 ---
5 files changed, 12 insertions(+), 55 deletions(-)
--
1.7.4.1
^ permalink raw reply [flat|nested] 11+ messages in thread* [PATCH 1/5] drm/exynos: Remove redundant check in exynos_hdmi.c file 2012-08-06 6:46 [PATCH 0/5] drm/exynos: Use devm_* functions and cleanup Sachin Kamat @ 2012-08-06 6:46 ` Sachin Kamat 2012-08-08 1:05 ` Inki Dae 2012-08-06 6:46 ` [PATCH 2/5] drm/exynos: Remove redundant check in exynos_drm_fimd.c file Sachin Kamat ` (3 subsequent siblings) 4 siblings, 1 reply; 11+ messages in thread From: Sachin Kamat @ 2012-08-06 6:46 UTC (permalink / raw) To: dri-devel; +Cc: patches, sachin.kamat devm_request_and_ioremap function checks the validity of the pointer returned by platform_get_resource. Hence an additional check in the probe function is not necessary. Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org> --- drivers/gpu/drm/exynos/exynos_hdmi.c | 5 ----- 1 files changed, 0 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/exynos/exynos_hdmi.c b/drivers/gpu/drm/exynos/exynos_hdmi.c index 409e2ec..bb504cb 100644 --- a/drivers/gpu/drm/exynos/exynos_hdmi.c +++ b/drivers/gpu/drm/exynos/exynos_hdmi.c @@ -2312,11 +2312,6 @@ static int __devinit hdmi_probe(struct platform_device *pdev) } res = platform_get_resource(pdev, IORESOURCE_MEM, 0); - if (!res) { - DRM_ERROR("failed to find registers\n"); - ret = -ENOENT; - goto err_resource; - } hdata->regs = devm_request_and_ioremap(&pdev->dev, res); if (!hdata->regs) { -- 1.7.4.1 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* RE: [PATCH 1/5] drm/exynos: Remove redundant check in exynos_hdmi.c file 2012-08-06 6:46 ` [PATCH 1/5] drm/exynos: Remove redundant check in exynos_hdmi.c file Sachin Kamat @ 2012-08-08 1:05 ` Inki Dae 0 siblings, 0 replies; 11+ messages in thread From: Inki Dae @ 2012-08-08 1:05 UTC (permalink / raw) To: 'Sachin Kamat', dri-devel; +Cc: patches > -----Original Message----- > From: Sachin Kamat [mailto:sachin.kamat@linaro.org] > Sent: Monday, August 06, 2012 3:46 PM > To: dri-devel@lists.freedesktop.org > Cc: inki.dae@samsung.com; airlied@linux.ie; sachin.kamat@linaro.org; > patches@linaro.org > Subject: [PATCH 1/5] drm/exynos: Remove redundant check in exynos_hdmi.c > file > > devm_request_and_ioremap function checks the validity of the > pointer returned by platform_get_resource. Hence an additional check > in the probe function is not necessary. > > Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org> > --- > drivers/gpu/drm/exynos/exynos_hdmi.c | 5 ----- > 1 files changed, 0 insertions(+), 5 deletions(-) > > diff --git a/drivers/gpu/drm/exynos/exynos_hdmi.c > b/drivers/gpu/drm/exynos/exynos_hdmi.c > index 409e2ec..bb504cb 100644 > --- a/drivers/gpu/drm/exynos/exynos_hdmi.c > +++ b/drivers/gpu/drm/exynos/exynos_hdmi.c > @@ -2312,11 +2312,6 @@ static int __devinit hdmi_probe(struct > platform_device *pdev) > } > > res = platform_get_resource(pdev, IORESOURCE_MEM, 0); > - if (!res) { > - DRM_ERROR("failed to find registers\n"); > - ret = -ENOENT; > - goto err_resource; > - } > > hdata->regs = devm_request_and_ioremap(&pdev->dev, res); > if (!hdata->regs) { > -- > 1.7.4.1 Applied. Thanks for your patch. ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 2/5] drm/exynos: Remove redundant check in exynos_drm_fimd.c file 2012-08-06 6:46 [PATCH 0/5] drm/exynos: Use devm_* functions and cleanup Sachin Kamat 2012-08-06 6:46 ` [PATCH 1/5] drm/exynos: Remove redundant check in exynos_hdmi.c file Sachin Kamat @ 2012-08-06 6:46 ` Sachin Kamat 2012-08-08 1:07 ` Inki Dae 2012-08-06 6:46 ` [PATCH 3/5] drm/exynos: Use devm_kzalloc in exynos_drm_vidi.c file Sachin Kamat ` (2 subsequent siblings) 4 siblings, 1 reply; 11+ messages in thread From: Sachin Kamat @ 2012-08-06 6:46 UTC (permalink / raw) To: dri-devel; +Cc: patches, sachin.kamat devm_request_and_ioremap function checks the validity of the pointer returned by platform_get_resource. Hence an additional check in the probe function is not necessary. Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org> --- drivers/gpu/drm/exynos/exynos_drm_fimd.c | 5 ----- 1 files changed, 0 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/exynos/exynos_drm_fimd.c b/drivers/gpu/drm/exynos/exynos_drm_fimd.c index a68d2b3..b19cd93 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_fimd.c +++ b/drivers/gpu/drm/exynos/exynos_drm_fimd.c @@ -831,11 +831,6 @@ static int __devinit fimd_probe(struct platform_device *pdev) } res = platform_get_resource(pdev, IORESOURCE_MEM, 0); - if (!res) { - dev_err(dev, "failed to find registers\n"); - ret = -ENOENT; - goto err_clk; - } ctx->regs = devm_request_and_ioremap(&pdev->dev, res); if (!ctx->regs) { -- 1.7.4.1 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* RE: [PATCH 2/5] drm/exynos: Remove redundant check in exynos_drm_fimd.c file 2012-08-06 6:46 ` [PATCH 2/5] drm/exynos: Remove redundant check in exynos_drm_fimd.c file Sachin Kamat @ 2012-08-08 1:07 ` Inki Dae 0 siblings, 0 replies; 11+ messages in thread From: Inki Dae @ 2012-08-08 1:07 UTC (permalink / raw) To: 'Sachin Kamat', dri-devel; +Cc: patches > -----Original Message----- > From: Sachin Kamat [mailto:sachin.kamat@linaro.org] > Sent: Monday, August 06, 2012 3:46 PM > To: dri-devel@lists.freedesktop.org > Cc: inki.dae@samsung.com; airlied@linux.ie; sachin.kamat@linaro.org; > patches@linaro.org > Subject: [PATCH 2/5] drm/exynos: Remove redundant check in > exynos_drm_fimd.c file > > devm_request_and_ioremap function checks the validity of the > pointer returned by platform_get_resource. Hence an additional check > in the probe function is not necessary. > > Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org> > --- > drivers/gpu/drm/exynos/exynos_drm_fimd.c | 5 ----- > 1 files changed, 0 insertions(+), 5 deletions(-) > > diff --git a/drivers/gpu/drm/exynos/exynos_drm_fimd.c > b/drivers/gpu/drm/exynos/exynos_drm_fimd.c > index a68d2b3..b19cd93 100644 > --- a/drivers/gpu/drm/exynos/exynos_drm_fimd.c > +++ b/drivers/gpu/drm/exynos/exynos_drm_fimd.c > @@ -831,11 +831,6 @@ static int __devinit fimd_probe(struct > platform_device *pdev) > } > > res = platform_get_resource(pdev, IORESOURCE_MEM, 0); > - if (!res) { > - dev_err(dev, "failed to find registers\n"); > - ret = -ENOENT; > - goto err_clk; > - } > > ctx->regs = devm_request_and_ioremap(&pdev->dev, res); > if (!ctx->regs) { > -- > 1.7.4.1 Applied. Thanks for your patch. ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 3/5] drm/exynos: Use devm_kzalloc in exynos_drm_vidi.c file 2012-08-06 6:46 [PATCH 0/5] drm/exynos: Use devm_* functions and cleanup Sachin Kamat 2012-08-06 6:46 ` [PATCH 1/5] drm/exynos: Remove redundant check in exynos_hdmi.c file Sachin Kamat 2012-08-06 6:46 ` [PATCH 2/5] drm/exynos: Remove redundant check in exynos_drm_fimd.c file Sachin Kamat @ 2012-08-06 6:46 ` Sachin Kamat 2012-08-08 1:08 ` Inki Dae 2012-08-06 6:46 ` [PATCH 4/5] drm/exynos: Use devm_kzalloc in exynos_drm_hdmi.c file Sachin Kamat 2012-08-06 6:46 ` [PATCH 5/5] drm/exynos: Use devm_* functions in exynos_drm_g2d.c file Sachin Kamat 4 siblings, 1 reply; 11+ messages in thread From: Sachin Kamat @ 2012-08-06 6:46 UTC (permalink / raw) To: dri-devel; +Cc: patches, sachin.kamat devm_kzalloc is a device managed function and makes freeing and error handling simpler. Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org> --- drivers/gpu/drm/exynos/exynos_drm_vidi.c | 4 +--- 1 files changed, 1 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/exynos/exynos_drm_vidi.c b/drivers/gpu/drm/exynos/exynos_drm_vidi.c index bb1550c..537027a 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_vidi.c +++ b/drivers/gpu/drm/exynos/exynos_drm_vidi.c @@ -633,7 +633,7 @@ static int __devinit vidi_probe(struct platform_device *pdev) DRM_DEBUG_KMS("%s\n", __FILE__); - ctx = kzalloc(sizeof(*ctx), GFP_KERNEL); + ctx = devm_kzalloc(&pdev->dev, sizeof(*ctx), GFP_KERNEL); if (!ctx) return -ENOMEM; @@ -673,8 +673,6 @@ static int __devexit vidi_remove(struct platform_device *pdev) ctx->raw_edid = NULL; } - kfree(ctx); - return 0; } -- 1.7.4.1 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* RE: [PATCH 3/5] drm/exynos: Use devm_kzalloc in exynos_drm_vidi.c file 2012-08-06 6:46 ` [PATCH 3/5] drm/exynos: Use devm_kzalloc in exynos_drm_vidi.c file Sachin Kamat @ 2012-08-08 1:08 ` Inki Dae 0 siblings, 0 replies; 11+ messages in thread From: Inki Dae @ 2012-08-08 1:08 UTC (permalink / raw) To: 'Sachin Kamat', dri-devel; +Cc: patches > -----Original Message----- > From: Sachin Kamat [mailto:sachin.kamat@linaro.org] > Sent: Monday, August 06, 2012 3:46 PM > To: dri-devel@lists.freedesktop.org > Cc: inki.dae@samsung.com; airlied@linux.ie; sachin.kamat@linaro.org; > patches@linaro.org > Subject: [PATCH 3/5] drm/exynos: Use devm_kzalloc in exynos_drm_vidi.c > file > > devm_kzalloc is a device managed function and makes freeing and error > handling simpler. > > Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org> > --- > drivers/gpu/drm/exynos/exynos_drm_vidi.c | 4 +--- > 1 files changed, 1 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/exynos/exynos_drm_vidi.c > b/drivers/gpu/drm/exynos/exynos_drm_vidi.c > index bb1550c..537027a 100644 > --- a/drivers/gpu/drm/exynos/exynos_drm_vidi.c > +++ b/drivers/gpu/drm/exynos/exynos_drm_vidi.c > @@ -633,7 +633,7 @@ static int __devinit vidi_probe(struct platform_device > *pdev) > > DRM_DEBUG_KMS("%s\n", __FILE__); > > - ctx = kzalloc(sizeof(*ctx), GFP_KERNEL); > + ctx = devm_kzalloc(&pdev->dev, sizeof(*ctx), GFP_KERNEL); > if (!ctx) > return -ENOMEM; > > @@ -673,8 +673,6 @@ static int __devexit vidi_remove(struct > platform_device *pdev) > ctx->raw_edid = NULL; > } > > - kfree(ctx); > - > return 0; > } > > -- > 1.7.4.1 Applied. Thanks for your patch. ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 4/5] drm/exynos: Use devm_kzalloc in exynos_drm_hdmi.c file 2012-08-06 6:46 [PATCH 0/5] drm/exynos: Use devm_* functions and cleanup Sachin Kamat ` (2 preceding siblings ...) 2012-08-06 6:46 ` [PATCH 3/5] drm/exynos: Use devm_kzalloc in exynos_drm_vidi.c file Sachin Kamat @ 2012-08-06 6:46 ` Sachin Kamat 2012-08-08 1:09 ` Inki Dae 2012-08-06 6:46 ` [PATCH 5/5] drm/exynos: Use devm_* functions in exynos_drm_g2d.c file Sachin Kamat 4 siblings, 1 reply; 11+ messages in thread From: Sachin Kamat @ 2012-08-06 6:46 UTC (permalink / raw) To: dri-devel; +Cc: patches, sachin.kamat devm_kzalloc is a device managed function and makes freeing and error handling simpler. Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org> --- drivers/gpu/drm/exynos/exynos_drm_hdmi.c | 3 +-- 1 files changed, 1 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/exynos/exynos_drm_hdmi.c b/drivers/gpu/drm/exynos/exynos_drm_hdmi.c index 8ffcdf8..3fdf0b6 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_hdmi.c +++ b/drivers/gpu/drm/exynos/exynos_drm_hdmi.c @@ -345,7 +345,7 @@ static int __devinit exynos_drm_hdmi_probe(struct platform_device *pdev) DRM_DEBUG_KMS("%s\n", __FILE__); - ctx = kzalloc(sizeof(*ctx), GFP_KERNEL); + ctx = devm_kzalloc(&pdev->dev, sizeof(*ctx), GFP_KERNEL); if (!ctx) { DRM_LOG_KMS("failed to alloc common hdmi context.\n"); return -ENOMEM; @@ -371,7 +371,6 @@ static int __devexit exynos_drm_hdmi_remove(struct platform_device *pdev) DRM_DEBUG_KMS("%s\n", __FILE__); exynos_drm_subdrv_unregister(&ctx->subdrv); - kfree(ctx); return 0; } -- 1.7.4.1 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* RE: [PATCH 4/5] drm/exynos: Use devm_kzalloc in exynos_drm_hdmi.c file 2012-08-06 6:46 ` [PATCH 4/5] drm/exynos: Use devm_kzalloc in exynos_drm_hdmi.c file Sachin Kamat @ 2012-08-08 1:09 ` Inki Dae 0 siblings, 0 replies; 11+ messages in thread From: Inki Dae @ 2012-08-08 1:09 UTC (permalink / raw) To: 'Sachin Kamat', dri-devel; +Cc: patches > -----Original Message----- > From: Sachin Kamat [mailto:sachin.kamat@linaro.org] > Sent: Monday, August 06, 2012 3:46 PM > To: dri-devel@lists.freedesktop.org > Cc: inki.dae@samsung.com; airlied@linux.ie; sachin.kamat@linaro.org; > patches@linaro.org > Subject: [PATCH 4/5] drm/exynos: Use devm_kzalloc in exynos_drm_hdmi.c > file > > devm_kzalloc is a device managed function and makes freeing and error > handling simpler. > > Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org> > --- > drivers/gpu/drm/exynos/exynos_drm_hdmi.c | 3 +-- > 1 files changed, 1 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/exynos/exynos_drm_hdmi.c > b/drivers/gpu/drm/exynos/exynos_drm_hdmi.c > index 8ffcdf8..3fdf0b6 100644 > --- a/drivers/gpu/drm/exynos/exynos_drm_hdmi.c > +++ b/drivers/gpu/drm/exynos/exynos_drm_hdmi.c > @@ -345,7 +345,7 @@ static int __devinit exynos_drm_hdmi_probe(struct > platform_device *pdev) > > DRM_DEBUG_KMS("%s\n", __FILE__); > > - ctx = kzalloc(sizeof(*ctx), GFP_KERNEL); > + ctx = devm_kzalloc(&pdev->dev, sizeof(*ctx), GFP_KERNEL); > if (!ctx) { > DRM_LOG_KMS("failed to alloc common hdmi context.\n"); > return -ENOMEM; > @@ -371,7 +371,6 @@ static int __devexit exynos_drm_hdmi_remove(struct > platform_device *pdev) > DRM_DEBUG_KMS("%s\n", __FILE__); > > exynos_drm_subdrv_unregister(&ctx->subdrv); > - kfree(ctx); > > return 0; > } > -- > 1.7.4.1 Applied. Thanks for your patch. ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 5/5] drm/exynos: Use devm_* functions in exynos_drm_g2d.c file 2012-08-06 6:46 [PATCH 0/5] drm/exynos: Use devm_* functions and cleanup Sachin Kamat ` (3 preceding siblings ...) 2012-08-06 6:46 ` [PATCH 4/5] drm/exynos: Use devm_kzalloc in exynos_drm_hdmi.c file Sachin Kamat @ 2012-08-06 6:46 ` Sachin Kamat 2012-08-08 1:18 ` Inki Dae 4 siblings, 1 reply; 11+ messages in thread From: Sachin Kamat @ 2012-08-06 6:46 UTC (permalink / raw) To: dri-devel; +Cc: patches, sachin.kamat devm_* functions are device managed functions and make error handling and cleanup cleaner and simpler. Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org> --- drivers/gpu/drm/exynos/exynos_drm_g2d.c | 50 ++++++------------------------ 1 files changed, 10 insertions(+), 40 deletions(-) diff --git a/drivers/gpu/drm/exynos/exynos_drm_g2d.c b/drivers/gpu/drm/exynos/exynos_drm_g2d.c index d2d88f2..6adfa4e 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_g2d.c +++ b/drivers/gpu/drm/exynos/exynos_drm_g2d.c @@ -129,7 +129,6 @@ struct g2d_runqueue_node { struct g2d_data { struct device *dev; struct clk *gate_clk; - struct resource *regs_res; void __iomem *regs; int irq; struct workqueue_struct *g2d_workq; @@ -751,7 +750,7 @@ static int __devinit g2d_probe(struct platform_device *pdev) struct exynos_drm_subdrv *subdrv; int ret; - g2d = kzalloc(sizeof(*g2d), GFP_KERNEL); + g2d = devm_kzalloc(&pdev->dev, sizeof(*g2d), GFP_KERNEL); if (!g2d) { dev_err(dev, "failed to allocate driver data\n"); return -ENOMEM; @@ -759,10 +758,8 @@ static int __devinit g2d_probe(struct platform_device *pdev) g2d->runqueue_slab = kmem_cache_create("g2d_runqueue_slab", sizeof(struct g2d_runqueue_node), 0, 0, NULL); - if (!g2d->runqueue_slab) { - ret = -ENOMEM; - goto err_free_mem; - } + if (!g2d->runqueue_slab) + return -ENOMEM; g2d->dev = dev; @@ -794,38 +791,26 @@ static int __devinit g2d_probe(struct platform_device *pdev) pm_runtime_enable(dev); res = platform_get_resource(pdev, IORESOURCE_MEM, 0); - if (!res) { - dev_err(dev, "failed to get I/O memory\n"); - ret = -ENOENT; - goto err_put_clk; - } - g2d->regs_res = request_mem_region(res->start, resource_size(res), - dev_name(dev)); - if (!g2d->regs_res) { - dev_err(dev, "failed to request I/O memory\n"); - ret = -ENOENT; - goto err_put_clk; - } - - g2d->regs = ioremap(res->start, resource_size(res)); + g2d->regs = devm_request_and_ioremap(&pdev->dev, res); if (!g2d->regs) { dev_err(dev, "failed to remap I/O memory\n"); ret = -ENXIO; - goto err_release_res; + goto err_put_clk; } g2d->irq = platform_get_irq(pdev, 0); if (g2d->irq < 0) { dev_err(dev, "failed to get irq\n"); ret = g2d->irq; - goto err_unmap_base; + goto err_put_clk; } - ret = request_irq(g2d->irq, g2d_irq_handler, 0, "drm_g2d", g2d); + ret = devm_request_irq(&pdev->dev, g2d->irq, g2d_irq_handler, 0, + "drm_g2d", g2d); if (ret < 0) { dev_err(dev, "irq request failed\n"); - goto err_unmap_base; + goto err_put_clk; } platform_set_drvdata(pdev, g2d); @@ -838,7 +823,7 @@ static int __devinit g2d_probe(struct platform_device *pdev) ret = exynos_drm_subdrv_register(subdrv); if (ret < 0) { dev_err(dev, "failed to register drm g2d device\n"); - goto err_free_irq; + goto err_put_clk; } dev_info(dev, "The exynos g2d(ver %d.%d) successfully probed\n", @@ -846,13 +831,6 @@ static int __devinit g2d_probe(struct platform_device *pdev) return 0; -err_free_irq: - free_irq(g2d->irq, g2d); -err_unmap_base: - iounmap(g2d->regs); -err_release_res: - release_resource(g2d->regs_res); - kfree(g2d->regs_res); err_put_clk: pm_runtime_disable(dev); clk_put(g2d->gate_clk); @@ -862,8 +840,6 @@ err_destroy_workqueue: destroy_workqueue(g2d->g2d_workq); err_destroy_slab: kmem_cache_destroy(g2d->runqueue_slab); -err_free_mem: - kfree(g2d); return ret; } @@ -873,24 +849,18 @@ static int __devexit g2d_remove(struct platform_device *pdev) cancel_work_sync(&g2d->runqueue_work); exynos_drm_subdrv_unregister(&g2d->subdrv); - free_irq(g2d->irq, g2d); while (g2d->runqueue_node) { g2d_free_runqueue_node(g2d, g2d->runqueue_node); g2d->runqueue_node = g2d_get_runqueue_node(g2d); } - iounmap(g2d->regs); - release_resource(g2d->regs_res); - kfree(g2d->regs_res); - pm_runtime_disable(&pdev->dev); clk_put(g2d->gate_clk); g2d_fini_cmdlist(g2d); destroy_workqueue(g2d->g2d_workq); kmem_cache_destroy(g2d->runqueue_slab); - kfree(g2d); return 0; } -- 1.7.4.1 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* RE: [PATCH 5/5] drm/exynos: Use devm_* functions in exynos_drm_g2d.c file 2012-08-06 6:46 ` [PATCH 5/5] drm/exynos: Use devm_* functions in exynos_drm_g2d.c file Sachin Kamat @ 2012-08-08 1:18 ` Inki Dae 0 siblings, 0 replies; 11+ messages in thread From: Inki Dae @ 2012-08-08 1:18 UTC (permalink / raw) To: 'Sachin Kamat', dri-devel; +Cc: patches > -----Original Message----- > From: Sachin Kamat [mailto:sachin.kamat@linaro.org] > Sent: Monday, August 06, 2012 3:46 PM > To: dri-devel@lists.freedesktop.org > Cc: inki.dae@samsung.com; airlied@linux.ie; sachin.kamat@linaro.org; > patches@linaro.org > Subject: [PATCH 5/5] drm/exynos: Use devm_* functions in exynos_drm_g2d.c > file > > devm_* functions are device managed functions and make error handling > and cleanup cleaner and simpler. > > Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org> > --- > drivers/gpu/drm/exynos/exynos_drm_g2d.c | 50 ++++++--------------------- > --- > 1 files changed, 10 insertions(+), 40 deletions(-) > > diff --git a/drivers/gpu/drm/exynos/exynos_drm_g2d.c > b/drivers/gpu/drm/exynos/exynos_drm_g2d.c > index d2d88f2..6adfa4e 100644 > --- a/drivers/gpu/drm/exynos/exynos_drm_g2d.c > +++ b/drivers/gpu/drm/exynos/exynos_drm_g2d.c > @@ -129,7 +129,6 @@ struct g2d_runqueue_node { > struct g2d_data { > struct device *dev; > struct clk *gate_clk; > - struct resource *regs_res; > void __iomem *regs; > int irq; > struct workqueue_struct *g2d_workq; > @@ -751,7 +750,7 @@ static int __devinit g2d_probe(struct platform_device > *pdev) > struct exynos_drm_subdrv *subdrv; > int ret; > > - g2d = kzalloc(sizeof(*g2d), GFP_KERNEL); > + g2d = devm_kzalloc(&pdev->dev, sizeof(*g2d), GFP_KERNEL); > if (!g2d) { > dev_err(dev, "failed to allocate driver data\n"); > return -ENOMEM; > @@ -759,10 +758,8 @@ static int __devinit g2d_probe(struct platform_device > *pdev) > > g2d->runqueue_slab = kmem_cache_create("g2d_runqueue_slab", > sizeof(struct g2d_runqueue_node), 0, 0, NULL); > - if (!g2d->runqueue_slab) { > - ret = -ENOMEM; > - goto err_free_mem; > - } > + if (!g2d->runqueue_slab) > + return -ENOMEM; > > g2d->dev = dev; > > @@ -794,38 +791,26 @@ static int __devinit g2d_probe(struct > platform_device *pdev) > pm_runtime_enable(dev); > > res = platform_get_resource(pdev, IORESOURCE_MEM, 0); > - if (!res) { > - dev_err(dev, "failed to get I/O memory\n"); > - ret = -ENOENT; > - goto err_put_clk; > - } > > - g2d->regs_res = request_mem_region(res->start, resource_size(res), > - dev_name(dev)); > - if (!g2d->regs_res) { > - dev_err(dev, "failed to request I/O memory\n"); > - ret = -ENOENT; > - goto err_put_clk; > - } > - > - g2d->regs = ioremap(res->start, resource_size(res)); > + g2d->regs = devm_request_and_ioremap(&pdev->dev, res); > if (!g2d->regs) { > dev_err(dev, "failed to remap I/O memory\n"); > ret = -ENXIO; > - goto err_release_res; > + goto err_put_clk; > } > > g2d->irq = platform_get_irq(pdev, 0); > if (g2d->irq < 0) { > dev_err(dev, "failed to get irq\n"); > ret = g2d->irq; > - goto err_unmap_base; > + goto err_put_clk; > } > > - ret = request_irq(g2d->irq, g2d_irq_handler, 0, "drm_g2d", g2d); > + ret = devm_request_irq(&pdev->dev, g2d->irq, g2d_irq_handler, 0, > + "drm_g2d", g2d); > if (ret < 0) { > dev_err(dev, "irq request failed\n"); > - goto err_unmap_base; > + goto err_put_clk; > } > > platform_set_drvdata(pdev, g2d); > @@ -838,7 +823,7 @@ static int __devinit g2d_probe(struct platform_device > *pdev) > ret = exynos_drm_subdrv_register(subdrv); > if (ret < 0) { > dev_err(dev, "failed to register drm g2d device\n"); > - goto err_free_irq; > + goto err_put_clk; > } > > dev_info(dev, "The exynos g2d(ver %d.%d) successfully probed\n", > @@ -846,13 +831,6 @@ static int __devinit g2d_probe(struct platform_device > *pdev) > > return 0; > > -err_free_irq: > - free_irq(g2d->irq, g2d); > -err_unmap_base: > - iounmap(g2d->regs); > -err_release_res: > - release_resource(g2d->regs_res); > - kfree(g2d->regs_res); > err_put_clk: > pm_runtime_disable(dev); > clk_put(g2d->gate_clk); > @@ -862,8 +840,6 @@ err_destroy_workqueue: > destroy_workqueue(g2d->g2d_workq); > err_destroy_slab: > kmem_cache_destroy(g2d->runqueue_slab); > -err_free_mem: > - kfree(g2d); > return ret; > } > > @@ -873,24 +849,18 @@ static int __devexit g2d_remove(struct > platform_device *pdev) > > cancel_work_sync(&g2d->runqueue_work); > exynos_drm_subdrv_unregister(&g2d->subdrv); > - free_irq(g2d->irq, g2d); > > while (g2d->runqueue_node) { > g2d_free_runqueue_node(g2d, g2d->runqueue_node); > g2d->runqueue_node = g2d_get_runqueue_node(g2d); > } > > - iounmap(g2d->regs); > - release_resource(g2d->regs_res); > - kfree(g2d->regs_res); > - > pm_runtime_disable(&pdev->dev); > clk_put(g2d->gate_clk); > > g2d_fini_cmdlist(g2d); > destroy_workqueue(g2d->g2d_workq); > kmem_cache_destroy(g2d->runqueue_slab); > - kfree(g2d); > > return 0; > } > -- > 1.7.4.1 Applied. Thanks for your patch. ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2012-08-08 1:18 UTC | newest] Thread overview: 11+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2012-08-06 6:46 [PATCH 0/5] drm/exynos: Use devm_* functions and cleanup Sachin Kamat 2012-08-06 6:46 ` [PATCH 1/5] drm/exynos: Remove redundant check in exynos_hdmi.c file Sachin Kamat 2012-08-08 1:05 ` Inki Dae 2012-08-06 6:46 ` [PATCH 2/5] drm/exynos: Remove redundant check in exynos_drm_fimd.c file Sachin Kamat 2012-08-08 1:07 ` Inki Dae 2012-08-06 6:46 ` [PATCH 3/5] drm/exynos: Use devm_kzalloc in exynos_drm_vidi.c file Sachin Kamat 2012-08-08 1:08 ` Inki Dae 2012-08-06 6:46 ` [PATCH 4/5] drm/exynos: Use devm_kzalloc in exynos_drm_hdmi.c file Sachin Kamat 2012-08-08 1:09 ` Inki Dae 2012-08-06 6:46 ` [PATCH 5/5] drm/exynos: Use devm_* functions in exynos_drm_g2d.c file Sachin Kamat 2012-08-08 1:18 ` Inki Dae
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox