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