dri-devel Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [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

* [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

* [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

* [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

* [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 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

* 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

* 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

* 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

* 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