* [PATCH] i2c: davinci: update to devm_* API
@ 2013-02-05 8:24 Vishwanathrao Badarkhe, Manish
[not found] ` <1360052699-1985-1-git-send-email-manishv.b-l0cyMroinI0@public.gmane.org>
0 siblings, 1 reply; 3+ messages in thread
From: Vishwanathrao Badarkhe, Manish @ 2013-02-05 8:24 UTC (permalink / raw)
To: davinci-linux-open-source-VycZQUHpC/PFrsHnngEfi1aTQe2KTcn/,
linux-i2c-u79uwXL29TY76Z2rM5mHXA,
linux-kernel-u79uwXL29TY76Z2rM5mHXA
Cc: w.sang-bIcnvbaLZ9MEGnE8C9+IrQ, ben-linux-elnMNo+KYs3YtjvyW6yDsg
Update the code to use devm_* API so that driver
core will manage resources.
Signed-off-by: Vishwanathrao Badarkhe, Manish <manishv.b-l0cyMroinI0@public.gmane.org>
---
:100644 100644 6a0a553... f3dfffb... M drivers/i2c/busses/i2c-davinci.c
drivers/i2c/busses/i2c-davinci.c | 41 +++++++++++--------------------------
1 files changed, 12 insertions(+), 29 deletions(-)
diff --git a/drivers/i2c/busses/i2c-davinci.c b/drivers/i2c/busses/i2c-davinci.c
index 6a0a553..f3dfffb 100644
--- a/drivers/i2c/busses/i2c-davinci.c
+++ b/drivers/i2c/busses/i2c-davinci.c
@@ -643,7 +643,7 @@ static int davinci_i2c_probe(struct platform_device *pdev)
{
struct davinci_i2c_dev *dev;
struct i2c_adapter *adap;
- struct resource *mem, *irq, *ioarea;
+ struct resource *mem, *irq;
int r;
/* NOTE: driver uses the static register mapping */
@@ -659,17 +659,11 @@ static int davinci_i2c_probe(struct platform_device *pdev)
return -ENODEV;
}
- ioarea = request_mem_region(mem->start, resource_size(mem),
- pdev->name);
- if (!ioarea) {
- dev_err(&pdev->dev, "I2C region already claimed\n");
- return -EBUSY;
- }
-
- dev = kzalloc(sizeof(struct davinci_i2c_dev), GFP_KERNEL);
+ dev = devm_kzalloc(&pdev->dev, sizeof(struct davinci_i2c_dev),
+ GFP_KERNEL);
if (!dev) {
- r = -ENOMEM;
- goto err_release_region;
+ dev_err(&pdev->dev, "Memory allocation failed\n");
+ return -ENOMEM;
}
init_completion(&dev->cmd_complete);
@@ -706,15 +700,17 @@ static int davinci_i2c_probe(struct platform_device *pdev)
}
clk_prepare_enable(dev->clk);
- dev->base = ioremap(mem->start, resource_size(mem));
+ dev->base = devm_request_and_ioremap(&pdev->dev, mem);
if (!dev->base) {
r = -EBUSY;
- goto err_mem_ioremap;
+ dev_err(&pdev->dev, "I2C region already claimed\n");
+ goto err_unuse_clocks;
}
i2c_davinci_init(dev);
- r = request_irq(dev->irq, i2c_davinci_isr, 0, pdev->name, dev);
+ r = devm_request_irq(&pdev->dev, dev->irq, i2c_davinci_isr, 0,
+ pdev->name, dev);
if (r) {
dev_err(&pdev->dev, "failure requesting irq %i\n", dev->irq);
goto err_unuse_clocks;
@@ -723,7 +719,7 @@ static int davinci_i2c_probe(struct platform_device *pdev)
r = i2c_davinci_cpufreq_register(dev);
if (r) {
dev_err(&pdev->dev, "failed to register cpufreq\n");
- goto err_free_irq;
+ goto err_unuse_clocks;
}
adap = &dev->adapter;
@@ -740,26 +736,19 @@ static int davinci_i2c_probe(struct platform_device *pdev)
r = i2c_add_numbered_adapter(adap);
if (r) {
dev_err(&pdev->dev, "failure adding adapter\n");
- goto err_free_irq;
+ goto err_unuse_clocks;
}
of_i2c_register_devices(adap);
return 0;
-err_free_irq:
- free_irq(dev->irq, dev);
err_unuse_clocks:
- iounmap(dev->base);
-err_mem_ioremap:
clk_disable_unprepare(dev->clk);
clk_put(dev->clk);
dev->clk = NULL;
err_free_mem:
platform_set_drvdata(pdev, NULL);
put_device(&pdev->dev);
- kfree(dev);
-err_release_region:
- release_mem_region(mem->start, resource_size(mem));
return r;
}
@@ -767,7 +756,6 @@ err_release_region:
static int davinci_i2c_remove(struct platform_device *pdev)
{
struct davinci_i2c_dev *dev = platform_get_drvdata(pdev);
- struct resource *mem;
i2c_davinci_cpufreq_deregister(dev);
@@ -780,12 +768,7 @@ static int davinci_i2c_remove(struct platform_device *pdev)
dev->clk = NULL;
davinci_i2c_write_reg(dev, DAVINCI_I2C_MDR_REG, 0);
- free_irq(dev->irq, dev);
- iounmap(dev->base);
- kfree(dev);
- mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
- release_mem_region(mem->start, resource_size(mem));
return 0;
}
--
1.7.4.1
^ permalink raw reply related [flat|nested] 3+ messages in thread[parent not found: <1360052699-1985-1-git-send-email-manishv.b-l0cyMroinI0@public.gmane.org>]
* Re: [PATCH] i2c: davinci: update to devm_* API [not found] ` <1360052699-1985-1-git-send-email-manishv.b-l0cyMroinI0@public.gmane.org> @ 2013-02-05 11:47 ` Sekhar Nori [not found] ` <5110F14D.8090005-l0cyMroinI0@public.gmane.org> 0 siblings, 1 reply; 3+ messages in thread From: Sekhar Nori @ 2013-02-05 11:47 UTC (permalink / raw) To: Vishwanathrao Badarkhe, Manish Cc: davinci-linux-open-source-VycZQUHpC/PFrsHnngEfi1aTQe2KTcn/, linux-i2c-u79uwXL29TY76Z2rM5mHXA, linux-kernel-u79uwXL29TY76Z2rM5mHXA, khilman-1D3HCaltpLuhEniVeURVKkEOCMrvLtNR, ben-linux-elnMNo+KYs3YtjvyW6yDsg, w.sang-bIcnvbaLZ9MEGnE8C9+IrQ On 2/5/2013 1:54 PM, Vishwanathrao Badarkhe, Manish wrote: > Update the code to use devm_* API so that driver > core will manage resources. > > Signed-off-by: Vishwanathrao Badarkhe, Manish <manishv.b-l0cyMroinI0@public.gmane.org> You can use devm_clk_get() as well. We should also move to runtime PM but that can be a different patch. Thanks, Sekhar > --- > :100644 100644 6a0a553... f3dfffb... M drivers/i2c/busses/i2c-davinci.c > drivers/i2c/busses/i2c-davinci.c | 41 +++++++++++-------------------------- > 1 files changed, 12 insertions(+), 29 deletions(-) > > diff --git a/drivers/i2c/busses/i2c-davinci.c b/drivers/i2c/busses/i2c-davinci.c > index 6a0a553..f3dfffb 100644 > --- a/drivers/i2c/busses/i2c-davinci.c > +++ b/drivers/i2c/busses/i2c-davinci.c > @@ -643,7 +643,7 @@ static int davinci_i2c_probe(struct platform_device *pdev) > { > struct davinci_i2c_dev *dev; > struct i2c_adapter *adap; > - struct resource *mem, *irq, *ioarea; > + struct resource *mem, *irq; > int r; > > /* NOTE: driver uses the static register mapping */ > @@ -659,17 +659,11 @@ static int davinci_i2c_probe(struct platform_device *pdev) > return -ENODEV; > } > > - ioarea = request_mem_region(mem->start, resource_size(mem), > - pdev->name); > - if (!ioarea) { > - dev_err(&pdev->dev, "I2C region already claimed\n"); > - return -EBUSY; > - } > - > - dev = kzalloc(sizeof(struct davinci_i2c_dev), GFP_KERNEL); > + dev = devm_kzalloc(&pdev->dev, sizeof(struct davinci_i2c_dev), > + GFP_KERNEL); > if (!dev) { > - r = -ENOMEM; > - goto err_release_region; > + dev_err(&pdev->dev, "Memory allocation failed\n"); > + return -ENOMEM; > } > > init_completion(&dev->cmd_complete); > @@ -706,15 +700,17 @@ static int davinci_i2c_probe(struct platform_device *pdev) > } > clk_prepare_enable(dev->clk); > > - dev->base = ioremap(mem->start, resource_size(mem)); > + dev->base = devm_request_and_ioremap(&pdev->dev, mem); > if (!dev->base) { > r = -EBUSY; > - goto err_mem_ioremap; > + dev_err(&pdev->dev, "I2C region already claimed\n"); > + goto err_unuse_clocks; > } > > i2c_davinci_init(dev); > > - r = request_irq(dev->irq, i2c_davinci_isr, 0, pdev->name, dev); > + r = devm_request_irq(&pdev->dev, dev->irq, i2c_davinci_isr, 0, > + pdev->name, dev); > if (r) { > dev_err(&pdev->dev, "failure requesting irq %i\n", dev->irq); > goto err_unuse_clocks; > @@ -723,7 +719,7 @@ static int davinci_i2c_probe(struct platform_device *pdev) > r = i2c_davinci_cpufreq_register(dev); > if (r) { > dev_err(&pdev->dev, "failed to register cpufreq\n"); > - goto err_free_irq; > + goto err_unuse_clocks; > } > > adap = &dev->adapter; > @@ -740,26 +736,19 @@ static int davinci_i2c_probe(struct platform_device *pdev) > r = i2c_add_numbered_adapter(adap); > if (r) { > dev_err(&pdev->dev, "failure adding adapter\n"); > - goto err_free_irq; > + goto err_unuse_clocks; > } > of_i2c_register_devices(adap); > > return 0; > > -err_free_irq: > - free_irq(dev->irq, dev); > err_unuse_clocks: > - iounmap(dev->base); > -err_mem_ioremap: > clk_disable_unprepare(dev->clk); > clk_put(dev->clk); > dev->clk = NULL; > err_free_mem: > platform_set_drvdata(pdev, NULL); > put_device(&pdev->dev); > - kfree(dev); > -err_release_region: > - release_mem_region(mem->start, resource_size(mem)); > > return r; > } > @@ -767,7 +756,6 @@ err_release_region: > static int davinci_i2c_remove(struct platform_device *pdev) > { > struct davinci_i2c_dev *dev = platform_get_drvdata(pdev); > - struct resource *mem; > > i2c_davinci_cpufreq_deregister(dev); > > @@ -780,12 +768,7 @@ static int davinci_i2c_remove(struct platform_device *pdev) > dev->clk = NULL; > > davinci_i2c_write_reg(dev, DAVINCI_I2C_MDR_REG, 0); > - free_irq(dev->irq, dev); > - iounmap(dev->base); > - kfree(dev); > > - mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); > - release_mem_region(mem->start, resource_size(mem)); > return 0; > } > > ^ permalink raw reply [flat|nested] 3+ messages in thread
[parent not found: <5110F14D.8090005-l0cyMroinI0@public.gmane.org>]
* RE: [PATCH] i2c: davinci: update to devm_* API [not found] ` <5110F14D.8090005-l0cyMroinI0@public.gmane.org> @ 2013-02-06 3:53 ` Vishwanathrao Badarkhe, Manish 0 siblings, 0 replies; 3+ messages in thread From: Vishwanathrao Badarkhe, Manish @ 2013-02-06 3:53 UTC (permalink / raw) To: Nori, Sekhar Cc: davinci-linux-open-source-VycZQUHpC/PFrsHnngEfi1aTQe2KTcn/@public.gmane.org, w.sang-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-i2c-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, ben-linux-elnMNo+KYs3YtjvyW6yDsg@public.gmane.org Hi Sekhar On Tue, Feb 05, 2013 at 17:17:25, Nori, Sekhar wrote: > > > On 2/5/2013 1:54 PM, Vishwanathrao Badarkhe, Manish wrote: > > Update the code to use devm_* API so that driver core will manage > > resources. > > > > Signed-off-by: Vishwanathrao Badarkhe, Manish <manishv.b-l0cyMroinI0@public.gmane.org> > > You can use devm_clk_get() as well. We should also move to runtime PM but that can be a different patch. Sure, I will apply devm operation for clk_get also in next version. Ok, will move to runtime PM in a different patch. Thanks, Manish Badarkhe > > --- > > :100644 100644 6a0a553... f3dfffb... M drivers/i2c/busses/i2c-davinci.c > > drivers/i2c/busses/i2c-davinci.c | 41 +++++++++++-------------------------- > > 1 files changed, 12 insertions(+), 29 deletions(-) > > > > diff --git a/drivers/i2c/busses/i2c-davinci.c > > b/drivers/i2c/busses/i2c-davinci.c > > index 6a0a553..f3dfffb 100644 > > --- a/drivers/i2c/busses/i2c-davinci.c > > +++ b/drivers/i2c/busses/i2c-davinci.c > > @@ -643,7 +643,7 @@ static int davinci_i2c_probe(struct > > platform_device *pdev) { > > struct davinci_i2c_dev *dev; > > struct i2c_adapter *adap; > > - struct resource *mem, *irq, *ioarea; > > + struct resource *mem, *irq; > > int r; > > > > /* NOTE: driver uses the static register mapping */ @@ -659,17 > > +659,11 @@ static int davinci_i2c_probe(struct platform_device *pdev) > > return -ENODEV; > > } > > > > - ioarea = request_mem_region(mem->start, resource_size(mem), > > - pdev->name); > > - if (!ioarea) { > > - dev_err(&pdev->dev, "I2C region already claimed\n"); > > - return -EBUSY; > > - } > > - > > - dev = kzalloc(sizeof(struct davinci_i2c_dev), GFP_KERNEL); > > + dev = devm_kzalloc(&pdev->dev, sizeof(struct davinci_i2c_dev), > > + GFP_KERNEL); > > if (!dev) { > > - r = -ENOMEM; > > - goto err_release_region; > > + dev_err(&pdev->dev, "Memory allocation failed\n"); > > + return -ENOMEM; > > } > > > > init_completion(&dev->cmd_complete); > > @@ -706,15 +700,17 @@ static int davinci_i2c_probe(struct platform_device *pdev) > > } > > clk_prepare_enable(dev->clk); > > > > - dev->base = ioremap(mem->start, resource_size(mem)); > > + dev->base = devm_request_and_ioremap(&pdev->dev, mem); > > if (!dev->base) { > > r = -EBUSY; > > - goto err_mem_ioremap; > > + dev_err(&pdev->dev, "I2C region already claimed\n"); > > + goto err_unuse_clocks; > > } > > > > i2c_davinci_init(dev); > > > > - r = request_irq(dev->irq, i2c_davinci_isr, 0, pdev->name, dev); > > + r = devm_request_irq(&pdev->dev, dev->irq, i2c_davinci_isr, 0, > > + pdev->name, dev); > > if (r) { > > dev_err(&pdev->dev, "failure requesting irq %i\n", dev->irq); > > goto err_unuse_clocks; > > @@ -723,7 +719,7 @@ static int davinci_i2c_probe(struct platform_device *pdev) > > r = i2c_davinci_cpufreq_register(dev); > > if (r) { > > dev_err(&pdev->dev, "failed to register cpufreq\n"); > > - goto err_free_irq; > > + goto err_unuse_clocks; > > } > > > > adap = &dev->adapter; > > @@ -740,26 +736,19 @@ static int davinci_i2c_probe(struct platform_device *pdev) > > r = i2c_add_numbered_adapter(adap); > > if (r) { > > dev_err(&pdev->dev, "failure adding adapter\n"); > > - goto err_free_irq; > > + goto err_unuse_clocks; > > } > > of_i2c_register_devices(adap); > > > > return 0; > > > > -err_free_irq: > > - free_irq(dev->irq, dev); > > err_unuse_clocks: > > - iounmap(dev->base); > > -err_mem_ioremap: > > clk_disable_unprepare(dev->clk); > > clk_put(dev->clk); > > dev->clk = NULL; > > err_free_mem: > > platform_set_drvdata(pdev, NULL); > > put_device(&pdev->dev); > > - kfree(dev); > > -err_release_region: > > - release_mem_region(mem->start, resource_size(mem)); > > > > return r; > > } > > @@ -767,7 +756,6 @@ err_release_region: > > static int davinci_i2c_remove(struct platform_device *pdev) { > > struct davinci_i2c_dev *dev = platform_get_drvdata(pdev); > > - struct resource *mem; > > > > i2c_davinci_cpufreq_deregister(dev); > > > > @@ -780,12 +768,7 @@ static int davinci_i2c_remove(struct platform_device *pdev) > > dev->clk = NULL; > > > > davinci_i2c_write_reg(dev, DAVINCI_I2C_MDR_REG, 0); > > - free_irq(dev->irq, dev); > > - iounmap(dev->base); > > - kfree(dev); > > > > - mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); > > - release_mem_region(mem->start, resource_size(mem)); > > return 0; > > } > > > > > ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2013-02-06 3:53 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-02-05 8:24 [PATCH] i2c: davinci: update to devm_* API Vishwanathrao Badarkhe, Manish
[not found] ` <1360052699-1985-1-git-send-email-manishv.b-l0cyMroinI0@public.gmane.org>
2013-02-05 11:47 ` Sekhar Nori
[not found] ` <5110F14D.8090005-l0cyMroinI0@public.gmane.org>
2013-02-06 3:53 ` Vishwanathrao Badarkhe, Manish
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox