All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/4] staging: media: omap1: Switch to managed resources
@ 2016-03-22 16:52 Amitoj Kaur Chawla
  2016-03-22 16:52 ` [PATCH 1/4] staging: media: omap1: Replace clk_get with devm_clk_get Amitoj Kaur Chawla
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Amitoj Kaur Chawla @ 2016-03-22 16:52 UTC (permalink / raw)
  To: outreachy-kernel

Switch to managed resource functions that automatically release data
when a driver detaches for the media omap1 driver.

Amitoj Kaur Chawla (4):
  staging: media: omap1: Replace clk_get with devm_clk_get
  staging: media: omap1: Replace kzalloc with devm_kzalloc
  staging: media: omap1: Switch to devm_ioremap_resource
  staging: media: omap1: Replace request_irq with devm_request_irq

 drivers/staging/media/omap1/omap1_camera.c | 68 +++++++-----------------------
 1 file changed, 16 insertions(+), 52 deletions(-)

-- 
1.9.1



^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH 1/4] staging: media: omap1: Replace clk_get with devm_clk_get
  2016-03-22 16:52 [PATCH 0/4] staging: media: omap1: Switch to managed resources Amitoj Kaur Chawla
@ 2016-03-22 16:52 ` Amitoj Kaur Chawla
  2016-03-22 16:52 ` [PATCH 2/4] staging: media: omap1: Replace kzalloc with devm_kzalloc Amitoj Kaur Chawla
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Amitoj Kaur Chawla @ 2016-03-22 16:52 UTC (permalink / raw)
  To: outreachy-kernel

devm_clk_get allocated resources get released when a driver detaches.
Replace clk_get with devm_clk_get and remove corresponding data
releasing function clk_put from probe and remove functions of a
platform device. Also remove an unnecessary label.

This change was made with the help of the following Coccinelle
semantic patch:
@platform@
identifier p, probefn, removefn;
@@
struct platform_driver p = {
  .probe = probefn,
  .remove = removefn,
};

@prb@
identifier platform.probefn, pdev;
expression e;
@@
probefn(struct platform_device *pdev, ...) {
  ...
  e =
- clk_get
+ devm_clk_get
  (...);
   ...
?- clk_put(...);
  ...
}
@remove depends on prb@
identifier platform.removefn;
@@
removefn(...) {
...
?- clk_put(...);
...
}

Signed-off-by: Amitoj Kaur Chawla <amitoj1606@gmail.com>
---
 drivers/staging/media/omap1/omap1_camera.c | 15 ++++-----------
 1 file changed, 4 insertions(+), 11 deletions(-)

diff --git a/drivers/staging/media/omap1/omap1_camera.c b/drivers/staging/media/omap1/omap1_camera.c
index bd721e3..bd00180 100644
--- a/drivers/staging/media/omap1/omap1_camera.c
+++ b/drivers/staging/media/omap1/omap1_camera.c
@@ -1576,17 +1576,14 @@ static int omap1_cam_probe(struct platform_device *pdev)
 		goto exit;
 	}
 
-	clk = clk_get(&pdev->dev, "armper_ck");
-	if (IS_ERR(clk)) {
-		err = PTR_ERR(clk);
-		goto exit;
-	}
+	clk = devm_clk_get(&pdev->dev, "armper_ck");
+	if (IS_ERR(clk))
+		return PTR_ERR(clk);
 
 	pcdev = kzalloc(sizeof(*pcdev) + resource_size(res), GFP_KERNEL);
 	if (!pcdev) {
 		dev_err(&pdev->dev, "Could not allocate pcdev\n");
-		err = -ENOMEM;
-		goto exit_put_clk;
+		return -ENOMEM;
 	}
 
 	pcdev->res = res;
@@ -1685,8 +1682,6 @@ exit_release:
 	release_mem_region(res->start, resource_size(res));
 exit_kfree:
 	kfree(pcdev);
-exit_put_clk:
-	clk_put(clk);
 exit:
 	return err;
 }
@@ -1709,8 +1704,6 @@ static int omap1_cam_remove(struct platform_device *pdev)
 	res = pcdev->res;
 	release_mem_region(res->start, resource_size(res));
 
-	clk_put(pcdev->clk);
-
 	kfree(pcdev);
 
 	dev_info(&pdev->dev, "OMAP1 Camera Interface driver unloaded\n");
-- 
1.9.1



^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH 2/4] staging: media: omap1: Replace kzalloc with devm_kzalloc
  2016-03-22 16:52 [PATCH 0/4] staging: media: omap1: Switch to managed resources Amitoj Kaur Chawla
  2016-03-22 16:52 ` [PATCH 1/4] staging: media: omap1: Replace clk_get with devm_clk_get Amitoj Kaur Chawla
@ 2016-03-22 16:52 ` Amitoj Kaur Chawla
  2016-03-22 16:52 ` [PATCH 3/4] staging: media: omap1: Switch to devm_ioremap_resource Amitoj Kaur Chawla
  2016-03-22 16:53 ` [PATCH 4/4] staging: media: omap1: Replace request_irq with devm_request_irq Amitoj Kaur Chawla
  3 siblings, 0 replies; 5+ messages in thread
From: Amitoj Kaur Chawla @ 2016-03-22 16:52 UTC (permalink / raw)
  To: outreachy-kernel

Replace kzalloc with devm_kzalloc and consequently remove kfrees in
probe and remove functions of a platform device.

As a result of this change, remove unnecessary out of memory message
and an unnecessary label.

Signed-off-by: Amitoj Kaur Chawla <amitoj1606@gmail.com>
---
 drivers/staging/media/omap1/omap1_camera.c | 17 +++++------------
 1 file changed, 5 insertions(+), 12 deletions(-)

diff --git a/drivers/staging/media/omap1/omap1_camera.c b/drivers/staging/media/omap1/omap1_camera.c
index bd00180..8cc4a0a 100644
--- a/drivers/staging/media/omap1/omap1_camera.c
+++ b/drivers/staging/media/omap1/omap1_camera.c
@@ -1580,11 +1580,10 @@ static int omap1_cam_probe(struct platform_device *pdev)
 	if (IS_ERR(clk))
 		return PTR_ERR(clk);
 
-	pcdev = kzalloc(sizeof(*pcdev) + resource_size(res), GFP_KERNEL);
-	if (!pcdev) {
-		dev_err(&pdev->dev, "Could not allocate pcdev\n");
+	pcdev = devm_kzalloc(&pdev->dev, sizeof(*pcdev) + resource_size(res),
+			     GFP_KERNEL);
+	if (!pcdev)
 		return -ENOMEM;
-	}
 
 	pcdev->res = res;
 	pcdev->clk = clk;
@@ -1620,10 +1619,8 @@ static int omap1_cam_probe(struct platform_device *pdev)
 	/*
 	 * Request the region.
 	 */
-	if (!request_mem_region(res->start, resource_size(res), DRIVER_NAME)) {
-		err = -EBUSY;
-		goto exit_kfree;
-	}
+	if (!request_mem_region(res->start, resource_size(res), DRIVER_NAME))
+		return -EBUSY;
 
 	base = ioremap(res->start, resource_size(res));
 	if (!base) {
@@ -1680,8 +1677,6 @@ exit_iounmap:
 	iounmap(base);
 exit_release:
 	release_mem_region(res->start, resource_size(res));
-exit_kfree:
-	kfree(pcdev);
 exit:
 	return err;
 }
@@ -1704,8 +1699,6 @@ static int omap1_cam_remove(struct platform_device *pdev)
 	res = pcdev->res;
 	release_mem_region(res->start, resource_size(res));
 
-	kfree(pcdev);
-
 	dev_info(&pdev->dev, "OMAP1 Camera Interface driver unloaded\n");
 
 	return 0;
-- 
1.9.1



^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH 3/4] staging: media: omap1: Switch to devm_ioremap_resource
  2016-03-22 16:52 [PATCH 0/4] staging: media: omap1: Switch to managed resources Amitoj Kaur Chawla
  2016-03-22 16:52 ` [PATCH 1/4] staging: media: omap1: Replace clk_get with devm_clk_get Amitoj Kaur Chawla
  2016-03-22 16:52 ` [PATCH 2/4] staging: media: omap1: Replace kzalloc with devm_kzalloc Amitoj Kaur Chawla
@ 2016-03-22 16:52 ` Amitoj Kaur Chawla
  2016-03-22 16:53 ` [PATCH 4/4] staging: media: omap1: Replace request_irq with devm_request_irq Amitoj Kaur Chawla
  3 siblings, 0 replies; 5+ messages in thread
From: Amitoj Kaur Chawla @ 2016-03-22 16:52 UTC (permalink / raw)
  To: outreachy-kernel

Replace calls to request_mem_region and ioremap with a direct 
call to devm_ioremap_resource instead and modify error
handling.
Move the call to platform_get_resource adjacent to the call to
devm_ioremap_resource to make the connection between them more
clear.

Also remove unnecessary labels, variable initialisations and
release_mem_region iounmap from probe and remove functions.

Signed-off-by: Amitoj Kaur Chawla <amitoj1606@gmail.com>
---
 drivers/staging/media/omap1/omap1_camera.c | 31 ++++++------------------------
 1 file changed, 6 insertions(+), 25 deletions(-)

diff --git a/drivers/staging/media/omap1/omap1_camera.c b/drivers/staging/media/omap1/omap1_camera.c
index 8cc4a0a..c4450b4 100644
--- a/drivers/staging/media/omap1/omap1_camera.c
+++ b/drivers/staging/media/omap1/omap1_camera.c
@@ -1569,9 +1569,8 @@ static int omap1_cam_probe(struct platform_device *pdev)
 	unsigned int irq;
 	int err = 0;
 
-	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 	irq = platform_get_irq(pdev, 0);
-	if (!res || (int)irq <= 0) {
+	if ((int)irq <= 0) {
 		err = -ENODEV;
 		goto exit;
 	}
@@ -1585,7 +1584,6 @@ static int omap1_cam_probe(struct platform_device *pdev)
 	if (!pcdev)
 		return -ENOMEM;
 
-	pcdev->res = res;
 	pcdev->clk = clk;
 
 	pcdev->pdata = pdev->dev.platform_data;
@@ -1616,17 +1614,11 @@ static int omap1_cam_probe(struct platform_device *pdev)
 	INIT_LIST_HEAD(&pcdev->capture);
 	spin_lock_init(&pcdev->lock);
 
-	/*
-	 * Request the region.
-	 */
-	if (!request_mem_region(res->start, resource_size(res), DRIVER_NAME))
-		return -EBUSY;
+	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+	base = devm_ioremap_resource(&pdev->dev, res);
+	if (IS_ERR(base))
+		return PTR_ERR(base);
 
-	base = ioremap(res->start, resource_size(res));
-	if (!base) {
-		err = -ENOMEM;
-		goto exit_release;
-	}
 	pcdev->irq = irq;
 	pcdev->base = base;
 
@@ -1636,8 +1628,7 @@ static int omap1_cam_probe(struct platform_device *pdev)
 			dma_isr, (void *)pcdev, &pcdev->dma_ch);
 	if (err < 0) {
 		dev_err(&pdev->dev, "Can't request DMA for OMAP1 Camera\n");
-		err = -EBUSY;
-		goto exit_iounmap;
+		return -EBUSY;
 	}
 	dev_dbg(&pdev->dev, "got DMA channel %d\n", pcdev->dma_ch);
 
@@ -1673,10 +1664,6 @@ exit_free_irq:
 	free_irq(pcdev->irq, pcdev);
 exit_free_dma:
 	omap_free_dma(pcdev->dma_ch);
-exit_iounmap:
-	iounmap(base);
-exit_release:
-	release_mem_region(res->start, resource_size(res));
 exit:
 	return err;
 }
@@ -1686,7 +1673,6 @@ static int omap1_cam_remove(struct platform_device *pdev)
 	struct soc_camera_host *soc_host = to_soc_camera_host(&pdev->dev);
 	struct omap1_cam_dev *pcdev = container_of(soc_host,
 					struct omap1_cam_dev, soc_host);
-	struct resource *res;
 
 	free_irq(pcdev->irq, pcdev);
 
@@ -1694,11 +1680,6 @@ static int omap1_cam_remove(struct platform_device *pdev)
 
 	soc_camera_host_unregister(soc_host);
 
-	iounmap(pcdev->base);
-
-	res = pcdev->res;
-	release_mem_region(res->start, resource_size(res));
-
 	dev_info(&pdev->dev, "OMAP1 Camera Interface driver unloaded\n");
 
 	return 0;
-- 
1.9.1



^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH 4/4] staging: media: omap1: Replace request_irq with devm_request_irq
  2016-03-22 16:52 [PATCH 0/4] staging: media: omap1: Switch to managed resources Amitoj Kaur Chawla
                   ` (2 preceding siblings ...)
  2016-03-22 16:52 ` [PATCH 3/4] staging: media: omap1: Switch to devm_ioremap_resource Amitoj Kaur Chawla
@ 2016-03-22 16:53 ` Amitoj Kaur Chawla
  3 siblings, 0 replies; 5+ messages in thread
From: Amitoj Kaur Chawla @ 2016-03-22 16:53 UTC (permalink / raw)
  To: outreachy-kernel

Replace request_irq with devm_request_irq to get the interrupt 
for device which is automatically freed on exit. Remove
corresponding free_irq from probe and remove functions of a 
platform device.

Also, remove an unnecessary label.

Signed-off-by: Amitoj Kaur Chawla <amitoj1606@gmail.com>
---
 drivers/staging/media/omap1/omap1_camera.c | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/drivers/staging/media/omap1/omap1_camera.c b/drivers/staging/media/omap1/omap1_camera.c
index c4450b4..54b8dd2 100644
--- a/drivers/staging/media/omap1/omap1_camera.c
+++ b/drivers/staging/media/omap1/omap1_camera.c
@@ -1640,7 +1640,8 @@ static int omap1_cam_probe(struct platform_device *pdev)
 	/* setup DMA autoinitialization */
 	omap_dma_link_lch(pcdev->dma_ch, pcdev->dma_ch);
 
-	err = request_irq(pcdev->irq, cam_isr, 0, DRIVER_NAME, pcdev);
+	err = devm_request_irq(&pdev->dev, pcdev->irq, cam_isr, 0, DRIVER_NAME,
+			       pcdev);
 	if (err) {
 		dev_err(&pdev->dev, "Camera interrupt register failed\n");
 		goto exit_free_dma;
@@ -1654,14 +1655,12 @@ static int omap1_cam_probe(struct platform_device *pdev)
 
 	err = soc_camera_host_register(&pcdev->soc_host);
 	if (err)
-		goto exit_free_irq;
+		return err;
 
 	dev_info(&pdev->dev, "OMAP1 Camera Interface driver loaded\n");
 
 	return 0;
 
-exit_free_irq:
-	free_irq(pcdev->irq, pcdev);
 exit_free_dma:
 	omap_free_dma(pcdev->dma_ch);
 exit:
@@ -1674,8 +1673,6 @@ static int omap1_cam_remove(struct platform_device *pdev)
 	struct omap1_cam_dev *pcdev = container_of(soc_host,
 					struct omap1_cam_dev, soc_host);
 
-	free_irq(pcdev->irq, pcdev);
-
 	omap_free_dma(pcdev->dma_ch);
 
 	soc_camera_host_unregister(soc_host);
-- 
1.9.1



^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2016-03-22 16:53 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-03-22 16:52 [PATCH 0/4] staging: media: omap1: Switch to managed resources Amitoj Kaur Chawla
2016-03-22 16:52 ` [PATCH 1/4] staging: media: omap1: Replace clk_get with devm_clk_get Amitoj Kaur Chawla
2016-03-22 16:52 ` [PATCH 2/4] staging: media: omap1: Replace kzalloc with devm_kzalloc Amitoj Kaur Chawla
2016-03-22 16:52 ` [PATCH 3/4] staging: media: omap1: Switch to devm_ioremap_resource Amitoj Kaur Chawla
2016-03-22 16:53 ` [PATCH 4/4] staging: media: omap1: Replace request_irq with devm_request_irq Amitoj Kaur Chawla

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.