* [PATCH 01/27] rtc: rtc-ab8500: use devm_*() functions
@ 2013-04-01 9:42 Jingoo Han
2013-04-01 9:42 ` [PATCH 02/27] rtc: rtc-at91sam9: " Jingoo Han
` (25 more replies)
0 siblings, 26 replies; 27+ messages in thread
From: Jingoo Han @ 2013-04-01 9:42 UTC (permalink / raw)
To: 'Andrew Morton'
Cc: linux-kernel, 'Alessandro Zummo', rtc-linux,
'Jingoo Han'
Use devm_*() functions to make cleanup paths simpler.
Signed-off-by: Jingoo Han <jg1.han@samsung.com>
---
drivers/rtc/rtc-ab8500.c | 18 ++++++------------
1 files changed, 6 insertions(+), 12 deletions(-)
diff --git a/drivers/rtc/rtc-ab8500.c b/drivers/rtc/rtc-ab8500.c
index 57cde2b..63cfa31 100644
--- a/drivers/rtc/rtc-ab8500.c
+++ b/drivers/rtc/rtc-ab8500.c
@@ -422,20 +422,19 @@ static int ab8500_rtc_probe(struct platform_device *pdev)
device_init_wakeup(&pdev->dev, true);
- rtc = rtc_device_register("ab8500-rtc", &pdev->dev, &ab8500_rtc_ops,
- THIS_MODULE);
+ rtc = devm_rtc_device_register(&pdev->dev, "ab8500-rtc",
+ &ab8500_rtc_ops, THIS_MODULE);
if (IS_ERR(rtc)) {
dev_err(&pdev->dev, "Registration failed\n");
err = PTR_ERR(rtc);
return err;
}
- err = request_threaded_irq(irq, NULL, rtc_alarm_handler,
- IRQF_NO_SUSPEND | IRQF_ONESHOT, "ab8500-rtc", rtc);
- if (err < 0) {
- rtc_device_unregister(rtc);
+ err = devm_request_threaded_irq(&pdev->dev, irq, NULL,
+ rtc_alarm_handler, IRQF_NO_SUSPEND | IRQF_ONESHOT,
+ "ab8500-rtc", rtc);
+ if (err < 0)
return err;
- }
platform_set_drvdata(pdev, rtc);
@@ -450,13 +449,8 @@ static int ab8500_rtc_probe(struct platform_device *pdev)
static int ab8500_rtc_remove(struct platform_device *pdev)
{
- struct rtc_device *rtc = platform_get_drvdata(pdev);
- int irq = platform_get_irq_byname(pdev, "ALARM");
-
ab8500_sysfs_rtc_unregister(&pdev->dev);
- free_irq(irq, rtc);
- rtc_device_unregister(rtc);
platform_set_drvdata(pdev, NULL);
return 0;
--
1.7.2.5
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH 02/27] rtc: rtc-at91sam9: use devm_*() functions
2013-04-01 9:42 [PATCH 01/27] rtc: rtc-ab8500: use devm_*() functions Jingoo Han
@ 2013-04-01 9:42 ` Jingoo Han
2013-04-01 9:43 ` [PATCH 03/27] rtc: rtc-bfin: " Jingoo Han
` (24 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Jingoo Han @ 2013-04-01 9:42 UTC (permalink / raw)
To: 'Andrew Morton'
Cc: linux-kernel, 'Alessandro Zummo', rtc-linux,
'Jingoo Han'
Use devm_*() functions to make cleanup paths simpler.
Signed-off-by: Jingoo Han <jg1.han@samsung.com>
---
drivers/rtc/rtc-at91sam9.c | 34 ++++++++++++----------------------
1 files changed, 12 insertions(+), 22 deletions(-)
diff --git a/drivers/rtc/rtc-at91sam9.c b/drivers/rtc/rtc-at91sam9.c
index 39cfd2e..7b77c27 100644
--- a/drivers/rtc/rtc-at91sam9.c
+++ b/drivers/rtc/rtc-at91sam9.c
@@ -20,6 +20,7 @@
#include <linux/ioctl.h>
#include <linux/slab.h>
#include <linux/platform_data/atmel.h>
+#include <linux/io.h>
#include <mach/at91_rtt.h>
#include <mach/cpu.h>
@@ -309,7 +310,7 @@ static int at91_rtc_probe(struct platform_device *pdev)
return irq;
}
- rtc = kzalloc(sizeof *rtc, GFP_KERNEL);
+ rtc = devm_kzalloc(&pdev->dev, sizeof(*rtc), GFP_KERNEL);
if (!rtc)
return -ENOMEM;
@@ -320,18 +321,19 @@ static int at91_rtc_probe(struct platform_device *pdev)
device_init_wakeup(&pdev->dev, 1);
platform_set_drvdata(pdev, rtc);
- rtc->rtt = ioremap(r->start, resource_size(r));
+ rtc->rtt = devm_ioremap(&pdev->dev, r->start, resource_size(r));
if (!rtc->rtt) {
dev_err(&pdev->dev, "failed to map registers, aborting.\n");
ret = -ENOMEM;
goto fail;
}
- rtc->gpbr = ioremap(r_gpbr->start, resource_size(r_gpbr));
+ rtc->gpbr = devm_ioremap(&pdev->dev, r_gpbr->start,
+ resource_size(r_gpbr));
if (!rtc->gpbr) {
dev_err(&pdev->dev, "failed to map gpbr registers, aborting.\n");
ret = -ENOMEM;
- goto fail_gpbr;
+ goto fail;
}
mr = rtt_readl(rtc, MR);
@@ -346,20 +348,19 @@ static int at91_rtc_probe(struct platform_device *pdev)
mr &= ~(AT91_RTT_ALMIEN | AT91_RTT_RTTINCIEN);
rtt_writel(rtc, MR, mr);
- rtc->rtcdev = rtc_device_register(pdev->name, &pdev->dev,
- &at91_rtc_ops, THIS_MODULE);
+ rtc->rtcdev = devm_rtc_device_register(&pdev->dev, pdev->name,
+ &at91_rtc_ops, THIS_MODULE);
if (IS_ERR(rtc->rtcdev)) {
ret = PTR_ERR(rtc->rtcdev);
- goto fail_register;
+ goto fail;
}
/* register irq handler after we know what name we'll use */
- ret = request_irq(rtc->irq, at91_rtc_interrupt, IRQF_SHARED,
- dev_name(&rtc->rtcdev->dev), rtc);
+ ret = devm_request_irq(&pdev->dev, rtc->irq, at91_rtc_interrupt,
+ IRQF_SHARED, dev_name(&rtc->rtcdev->dev), rtc);
if (ret) {
dev_dbg(&pdev->dev, "can't share IRQ %d?\n", rtc->irq);
- rtc_device_unregister(rtc->rtcdev);
- goto fail_register;
+ goto fail;
}
/* NOTE: sam9260 rev A silicon has a ROM bug which resets the
@@ -374,13 +375,8 @@ static int at91_rtc_probe(struct platform_device *pdev)
return 0;
-fail_register:
- iounmap(rtc->gpbr);
-fail_gpbr:
- iounmap(rtc->rtt);
fail:
platform_set_drvdata(pdev, NULL);
- kfree(rtc);
return ret;
}
@@ -394,14 +390,8 @@ static int at91_rtc_remove(struct platform_device *pdev)
/* disable all interrupts */
rtt_writel(rtc, MR, mr & ~(AT91_RTT_ALMIEN | AT91_RTT_RTTINCIEN));
- free_irq(rtc->irq, rtc);
-
- rtc_device_unregister(rtc->rtcdev);
- iounmap(rtc->gpbr);
- iounmap(rtc->rtt);
platform_set_drvdata(pdev, NULL);
- kfree(rtc);
return 0;
}
--
1.7.2.5
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH 03/27] rtc: rtc-bfin: use devm_*() functions
2013-04-01 9:42 [PATCH 01/27] rtc: rtc-ab8500: use devm_*() functions Jingoo Han
2013-04-01 9:42 ` [PATCH 02/27] rtc: rtc-at91sam9: " Jingoo Han
@ 2013-04-01 9:43 ` Jingoo Han
2013-04-01 9:43 ` [PATCH 04/27] rtc: rtc-bq4802: " Jingoo Han
` (23 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Jingoo Han @ 2013-04-01 9:43 UTC (permalink / raw)
To: 'Andrew Morton'
Cc: linux-kernel, 'Alessandro Zummo', rtc-linux,
'Jingoo Han'
Use devm_*() functions to make cleanup paths simpler.
Signed-off-by: Jingoo Han <jg1.han@samsung.com>
---
drivers/rtc/rtc-bfin.c | 16 +++++-----------
1 files changed, 5 insertions(+), 11 deletions(-)
diff --git a/drivers/rtc/rtc-bfin.c b/drivers/rtc/rtc-bfin.c
index 4ec614b..d8b06f5 100644
--- a/drivers/rtc/rtc-bfin.c
+++ b/drivers/rtc/rtc-bfin.c
@@ -352,14 +352,14 @@ static int bfin_rtc_probe(struct platform_device *pdev)
dev_dbg_stamp(dev);
/* Allocate memory for our RTC struct */
- rtc = kzalloc(sizeof(*rtc), GFP_KERNEL);
+ rtc = devm_kzalloc(dev, sizeof(*rtc), GFP_KERNEL);
if (unlikely(!rtc))
return -ENOMEM;
platform_set_drvdata(pdev, rtc);
device_init_wakeup(dev, 1);
/* Register our RTC with the RTC framework */
- rtc->rtc_dev = rtc_device_register(pdev->name, dev, &bfin_rtc_ops,
+ rtc->rtc_dev = devm_rtc_device_register(dev, pdev->name, &bfin_rtc_ops,
THIS_MODULE);
if (unlikely(IS_ERR(rtc->rtc_dev))) {
ret = PTR_ERR(rtc->rtc_dev);
@@ -367,9 +367,10 @@ static int bfin_rtc_probe(struct platform_device *pdev)
}
/* Grab the IRQ and init the hardware */
- ret = request_irq(IRQ_RTC, bfin_rtc_interrupt, 0, pdev->name, dev);
+ ret = devm_request_irq(dev, IRQ_RTC, bfin_rtc_interrupt, 0,
+ pdev->name, dev);
if (unlikely(ret))
- goto err_reg;
+ goto err;
/* sometimes the bootloader touched things, but the write complete was not
* enabled, so let's just do a quick timeout here since the IRQ will not fire ...
*/
@@ -381,23 +382,16 @@ static int bfin_rtc_probe(struct platform_device *pdev)
return 0;
-err_reg:
- rtc_device_unregister(rtc->rtc_dev);
err:
- kfree(rtc);
return ret;
}
static int bfin_rtc_remove(struct platform_device *pdev)
{
- struct bfin_rtc *rtc = platform_get_drvdata(pdev);
struct device *dev = &pdev->dev;
bfin_rtc_reset(dev, 0);
- free_irq(IRQ_RTC, dev);
- rtc_device_unregister(rtc->rtc_dev);
platform_set_drvdata(pdev, NULL);
- kfree(rtc);
return 0;
}
--
1.7.2.5
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH 04/27] rtc: rtc-bq4802: use devm_*() functions
2013-04-01 9:42 [PATCH 01/27] rtc: rtc-ab8500: use devm_*() functions Jingoo Han
2013-04-01 9:42 ` [PATCH 02/27] rtc: rtc-at91sam9: " Jingoo Han
2013-04-01 9:43 ` [PATCH 03/27] rtc: rtc-bfin: " Jingoo Han
@ 2013-04-01 9:43 ` Jingoo Han
2013-04-01 9:43 ` [PATCH 05/27] rtc: rtc-ds1216: " Jingoo Han
` (22 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Jingoo Han @ 2013-04-01 9:43 UTC (permalink / raw)
To: 'Andrew Morton'
Cc: linux-kernel, 'Alessandro Zummo', rtc-linux,
'Jingoo Han'
Use devm_*() functions to make cleanup paths simpler.
Signed-off-by: Jingoo Han <jg1.han@samsung.com>
---
drivers/rtc/rtc-bq4802.c | 29 ++++++++---------------------
1 files changed, 8 insertions(+), 21 deletions(-)
diff --git a/drivers/rtc/rtc-bq4802.c b/drivers/rtc/rtc-bq4802.c
index 693be71..af28867 100644
--- a/drivers/rtc/rtc-bq4802.c
+++ b/drivers/rtc/rtc-bq4802.c
@@ -142,7 +142,7 @@ static const struct rtc_class_ops bq4802_ops = {
static int bq4802_probe(struct platform_device *pdev)
{
- struct bq4802 *p = kzalloc(sizeof(*p), GFP_KERNEL);
+ struct bq4802 *p = devm_kzalloc(&pdev->dev, sizeof(*p), GFP_KERNEL);
int err = -ENOMEM;
if (!p)
@@ -155,54 +155,41 @@ static int bq4802_probe(struct platform_device *pdev)
p->r = platform_get_resource(pdev, IORESOURCE_IO, 0);
err = -EINVAL;
if (!p->r)
- goto out_free;
+ goto out;
}
if (p->r->flags & IORESOURCE_IO) {
p->ioport = p->r->start;
p->read = bq4802_read_io;
p->write = bq4802_write_io;
} else if (p->r->flags & IORESOURCE_MEM) {
- p->regs = ioremap(p->r->start, resource_size(p->r));
+ p->regs = devm_ioremap(&pdev->dev, p->r->start,
+ resource_size(p->r));
p->read = bq4802_read_mem;
p->write = bq4802_write_mem;
} else {
err = -EINVAL;
- goto out_free;
+ goto out;
}
platform_set_drvdata(pdev, p);
- p->rtc = rtc_device_register("bq4802", &pdev->dev,
- &bq4802_ops, THIS_MODULE);
+ p->rtc = devm_rtc_device_register(&pdev->dev, "bq4802",
+ &bq4802_ops, THIS_MODULE);
if (IS_ERR(p->rtc)) {
err = PTR_ERR(p->rtc);
- goto out_iounmap;
+ goto out;
}
err = 0;
out:
return err;
-out_iounmap:
- if (p->r->flags & IORESOURCE_MEM)
- iounmap(p->regs);
-out_free:
- kfree(p);
- goto out;
}
static int bq4802_remove(struct platform_device *pdev)
{
- struct bq4802 *p = platform_get_drvdata(pdev);
-
- rtc_device_unregister(p->rtc);
- if (p->r->flags & IORESOURCE_MEM)
- iounmap(p->regs);
-
platform_set_drvdata(pdev, NULL);
- kfree(p);
-
return 0;
}
--
1.7.2.5
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH 05/27] rtc: rtc-ds1216: use devm_*() functions
2013-04-01 9:42 [PATCH 01/27] rtc: rtc-ab8500: use devm_*() functions Jingoo Han
` (2 preceding siblings ...)
2013-04-01 9:43 ` [PATCH 04/27] rtc: rtc-bq4802: " Jingoo Han
@ 2013-04-01 9:43 ` Jingoo Han
2013-04-01 9:44 ` [PATCH 06/27] rtc: rtc-ds1286: " Jingoo Han
` (21 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Jingoo Han @ 2013-04-01 9:43 UTC (permalink / raw)
To: 'Andrew Morton'
Cc: linux-kernel, 'Alessandro Zummo', rtc-linux,
'Jingoo Han'
Use devm_*() functions to make cleanup paths simpler.
Signed-off-by: Jingoo Han <jg1.han@samsung.com>
---
drivers/rtc/rtc-ds1216.c | 44 +++++++++-----------------------------------
1 files changed, 9 insertions(+), 35 deletions(-)
diff --git a/drivers/rtc/rtc-ds1216.c b/drivers/rtc/rtc-ds1216.c
index 45cd8c9..c7702b7 100644
--- a/drivers/rtc/rtc-ds1216.c
+++ b/drivers/rtc/rtc-ds1216.c
@@ -30,8 +30,6 @@ struct ds1216_regs {
struct ds1216_priv {
struct rtc_device *rtc;
void __iomem *ioaddr;
- size_t size;
- unsigned long baseaddr;
};
static const u8 magic[] = {
@@ -144,57 +142,33 @@ static int __init ds1216_rtc_probe(struct platform_device *pdev)
{
struct resource *res;
struct ds1216_priv *priv;
- int ret = 0;
u8 dummy[8];
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
if (!res)
return -ENODEV;
- priv = kzalloc(sizeof *priv, GFP_KERNEL);
+ priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL);
if (!priv)
return -ENOMEM;
platform_set_drvdata(pdev, priv);
- priv->size = resource_size(res);
- if (!request_mem_region(res->start, priv->size, pdev->name)) {
- ret = -EBUSY;
- goto out;
- }
- priv->baseaddr = res->start;
- priv->ioaddr = ioremap(priv->baseaddr, priv->size);
- if (!priv->ioaddr) {
- ret = -ENOMEM;
- goto out;
- }
- priv->rtc = rtc_device_register("ds1216", &pdev->dev,
- &ds1216_rtc_ops, THIS_MODULE);
- if (IS_ERR(priv->rtc)) {
- ret = PTR_ERR(priv->rtc);
- goto out;
- }
+ priv->ioaddr = devm_ioremap_resource(&pdev->dev, res);
+ if (IS_ERR(priv->ioaddr))
+ return PTR_ERR(priv->ioaddr);
+
+ priv->rtc = devm_rtc_device_register(&pdev->dev, "ds1216",
+ &ds1216_rtc_ops, THIS_MODULE);
+ if (IS_ERR(priv->rtc))
+ return PTR_ERR(priv->rtc);
/* dummy read to get clock into a known state */
ds1216_read(priv->ioaddr, dummy);
return 0;
-
-out:
- if (priv->ioaddr)
- iounmap(priv->ioaddr);
- if (priv->baseaddr)
- release_mem_region(priv->baseaddr, priv->size);
- kfree(priv);
- return ret;
}
static int __exit ds1216_rtc_remove(struct platform_device *pdev)
{
- struct ds1216_priv *priv = platform_get_drvdata(pdev);
-
- rtc_device_unregister(priv->rtc);
- iounmap(priv->ioaddr);
- release_mem_region(priv->baseaddr, priv->size);
- kfree(priv);
return 0;
}
--
1.7.2.5
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH 06/27] rtc: rtc-ds1286: use devm_*() functions
2013-04-01 9:42 [PATCH 01/27] rtc: rtc-ab8500: use devm_*() functions Jingoo Han
` (3 preceding siblings ...)
2013-04-01 9:43 ` [PATCH 05/27] rtc: rtc-ds1216: " Jingoo Han
@ 2013-04-01 9:44 ` Jingoo Han
2013-04-01 9:44 ` [PATCH 07/27] rtc: rtc-ds1390: " Jingoo Han
` (20 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Jingoo Han @ 2013-04-01 9:44 UTC (permalink / raw)
To: 'Andrew Morton'
Cc: linux-kernel, 'Alessandro Zummo', rtc-linux,
'Jingoo Han'
Use devm_*() functions to make cleanup paths simpler.
Signed-off-by: Jingoo Han <jg1.han@samsung.com>
---
drivers/rtc/rtc-ds1286.c | 46 +++++++++-------------------------------------
1 files changed, 9 insertions(+), 37 deletions(-)
diff --git a/drivers/rtc/rtc-ds1286.c b/drivers/rtc/rtc-ds1286.c
index d120cb8..398c96a 100644
--- a/drivers/rtc/rtc-ds1286.c
+++ b/drivers/rtc/rtc-ds1286.c
@@ -25,8 +25,6 @@
struct ds1286_priv {
struct rtc_device *rtc;
u32 __iomem *rtcregs;
- size_t size;
- unsigned long baseaddr;
spinlock_t lock;
};
@@ -333,56 +331,30 @@ static int ds1286_probe(struct platform_device *pdev)
struct rtc_device *rtc;
struct resource *res;
struct ds1286_priv *priv;
- int ret = 0;
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
if (!res)
return -ENODEV;
- priv = kzalloc(sizeof(struct ds1286_priv), GFP_KERNEL);
+ priv = devm_kzalloc(&pdev->dev, sizeof(struct ds1286_priv), GFP_KERNEL);
if (!priv)
return -ENOMEM;
- priv->size = resource_size(res);
- if (!request_mem_region(res->start, priv->size, pdev->name)) {
- ret = -EBUSY;
- goto out;
- }
- priv->baseaddr = res->start;
- priv->rtcregs = ioremap(priv->baseaddr, priv->size);
- if (!priv->rtcregs) {
- ret = -ENOMEM;
- goto out;
- }
+ priv->rtcregs = devm_ioremap_resource(&pdev->dev, res);
+ if (IS_ERR(priv->rtcregs))
+ return PTR_ERR(priv->rtcregs);
+
spin_lock_init(&priv->lock);
platform_set_drvdata(pdev, priv);
- rtc = rtc_device_register("ds1286", &pdev->dev,
- &ds1286_ops, THIS_MODULE);
- if (IS_ERR(rtc)) {
- ret = PTR_ERR(rtc);
- goto out;
- }
+ rtc = devm_rtc_device_register(&pdev->dev, "ds1286", &ds1286_ops,
+ THIS_MODULE);
+ if (IS_ERR(rtc))
+ return PTR_ERR(rtc);
priv->rtc = rtc;
return 0;
-
-out:
- if (priv->rtc)
- rtc_device_unregister(priv->rtc);
- if (priv->rtcregs)
- iounmap(priv->rtcregs);
- if (priv->baseaddr)
- release_mem_region(priv->baseaddr, priv->size);
- kfree(priv);
- return ret;
}
static int ds1286_remove(struct platform_device *pdev)
{
- struct ds1286_priv *priv = platform_get_drvdata(pdev);
-
- rtc_device_unregister(priv->rtc);
- iounmap(priv->rtcregs);
- release_mem_region(priv->baseaddr, priv->size);
- kfree(priv);
return 0;
}
--
1.7.2.5
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH 07/27] rtc: rtc-ds1390: use devm_*() functions
2013-04-01 9:42 [PATCH 01/27] rtc: rtc-ab8500: use devm_*() functions Jingoo Han
` (4 preceding siblings ...)
2013-04-01 9:44 ` [PATCH 06/27] rtc: rtc-ds1286: " Jingoo Han
@ 2013-04-01 9:44 ` Jingoo Han
2013-04-01 9:44 ` [PATCH 08/27] rtc: rtc-ds2404: " Jingoo Han
` (19 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Jingoo Han @ 2013-04-01 9:44 UTC (permalink / raw)
To: 'Andrew Morton'
Cc: linux-kernel, 'Alessandro Zummo', rtc-linux,
'Jingoo Han'
Use devm_*() functions to make cleanup paths simpler.
Signed-off-by: Jingoo Han <jg1.han@samsung.com>
---
drivers/rtc/rtc-ds1390.c | 13 +++----------
1 files changed, 3 insertions(+), 10 deletions(-)
diff --git a/drivers/rtc/rtc-ds1390.c b/drivers/rtc/rtc-ds1390.c
index f994257..33e51c6 100644
--- a/drivers/rtc/rtc-ds1390.c
+++ b/drivers/rtc/rtc-ds1390.c
@@ -131,7 +131,7 @@ static int ds1390_probe(struct spi_device *spi)
spi->bits_per_word = 8;
spi_setup(spi);
- chip = kzalloc(sizeof *chip, GFP_KERNEL);
+ chip = devm_kzalloc(&spi->dev, sizeof(*chip), GFP_KERNEL);
if (!chip) {
dev_err(&spi->dev, "unable to allocate device memory\n");
return -ENOMEM;
@@ -141,16 +141,14 @@ static int ds1390_probe(struct spi_device *spi)
res = ds1390_get_reg(&spi->dev, DS1390_REG_SECONDS, &tmp);
if (res != 0) {
dev_err(&spi->dev, "unable to read device\n");
- kfree(chip);
return res;
}
- chip->rtc = rtc_device_register("ds1390",
- &spi->dev, &ds1390_rtc_ops, THIS_MODULE);
+ chip->rtc = devm_rtc_device_register(&spi->dev, "ds1390",
+ &ds1390_rtc_ops, THIS_MODULE);
if (IS_ERR(chip->rtc)) {
dev_err(&spi->dev, "unable to register device\n");
res = PTR_ERR(chip->rtc);
- kfree(chip);
}
return res;
@@ -158,11 +156,6 @@ static int ds1390_probe(struct spi_device *spi)
static int ds1390_remove(struct spi_device *spi)
{
- struct ds1390 *chip = spi_get_drvdata(spi);
-
- rtc_device_unregister(chip->rtc);
- kfree(chip);
-
return 0;
}
--
1.7.2.5
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH 08/27] rtc: rtc-ds2404: use devm_*() functions
2013-04-01 9:42 [PATCH 01/27] rtc: rtc-ab8500: use devm_*() functions Jingoo Han
` (5 preceding siblings ...)
2013-04-01 9:44 ` [PATCH 07/27] rtc: rtc-ds1390: " Jingoo Han
@ 2013-04-01 9:44 ` Jingoo Han
2013-04-01 9:45 ` [PATCH 09/27] rtc: rtc-fm3130: " Jingoo Han
` (18 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Jingoo Han @ 2013-04-01 9:44 UTC (permalink / raw)
To: 'Andrew Morton'
Cc: linux-kernel, 'Alessandro Zummo', rtc-linux,
'Jingoo Han'
Use devm_*() functions to make cleanup paths simpler.
Signed-off-by: Jingoo Han <jg1.han@samsung.com>
---
drivers/rtc/rtc-ds2404.c | 12 +++---------
1 files changed, 3 insertions(+), 9 deletions(-)
diff --git a/drivers/rtc/rtc-ds2404.c b/drivers/rtc/rtc-ds2404.c
index b04fc42..2ca5a23 100644
--- a/drivers/rtc/rtc-ds2404.c
+++ b/drivers/rtc/rtc-ds2404.c
@@ -228,7 +228,7 @@ static int rtc_probe(struct platform_device *pdev)
struct ds2404 *chip;
int retval = -EBUSY;
- chip = kzalloc(sizeof(struct ds2404), GFP_KERNEL);
+ chip = devm_kzalloc(&pdev->dev, sizeof(struct ds2404), GFP_KERNEL);
if (!chip)
return -ENOMEM;
@@ -244,8 +244,8 @@ static int rtc_probe(struct platform_device *pdev)
platform_set_drvdata(pdev, chip);
- chip->rtc = rtc_device_register("ds2404",
- &pdev->dev, &ds2404_rtc_ops, THIS_MODULE);
+ chip->rtc = devm_rtc_device_register(&pdev->dev, "ds2404",
+ &ds2404_rtc_ops, THIS_MODULE);
if (IS_ERR(chip->rtc)) {
retval = PTR_ERR(chip->rtc);
goto err_io;
@@ -257,20 +257,14 @@ static int rtc_probe(struct platform_device *pdev)
err_io:
chip->ops->unmap_io(chip);
err_chip:
- kfree(chip);
return retval;
}
static int rtc_remove(struct platform_device *dev)
{
struct ds2404 *chip = platform_get_drvdata(dev);
- struct rtc_device *rtc = chip->rtc;
-
- if (rtc)
- rtc_device_unregister(rtc);
chip->ops->unmap_io(chip);
- kfree(chip);
return 0;
}
--
1.7.2.5
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH 09/27] rtc: rtc-fm3130: use devm_*() functions
2013-04-01 9:42 [PATCH 01/27] rtc: rtc-ab8500: use devm_*() functions Jingoo Han
` (6 preceding siblings ...)
2013-04-01 9:44 ` [PATCH 08/27] rtc: rtc-ds2404: " Jingoo Han
@ 2013-04-01 9:45 ` Jingoo Han
2013-04-01 9:45 ` [PATCH 10/27] rtc: rtc-isl12022: " Jingoo Han
` (17 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Jingoo Han @ 2013-04-01 9:45 UTC (permalink / raw)
To: 'Andrew Morton'
Cc: linux-kernel, 'Alessandro Zummo', rtc-linux,
'Jingoo Han'
Use devm_*() functions to make cleanup paths simpler.
Signed-off-by: Jingoo Han <jg1.han@samsung.com>
---
drivers/rtc/rtc-fm3130.c | 9 ++-------
1 files changed, 2 insertions(+), 7 deletions(-)
diff --git a/drivers/rtc/rtc-fm3130.c b/drivers/rtc/rtc-fm3130.c
index 4d4ad3f..2835fb6 100644
--- a/drivers/rtc/rtc-fm3130.c
+++ b/drivers/rtc/rtc-fm3130.c
@@ -358,7 +358,7 @@ static int fm3130_probe(struct i2c_client *client,
I2C_FUNC_I2C | I2C_FUNC_SMBUS_WRITE_BYTE_DATA))
return -EIO;
- fm3130 = kzalloc(sizeof(struct fm3130), GFP_KERNEL);
+ fm3130 = devm_kzalloc(&client->dev, sizeof(struct fm3130), GFP_KERNEL);
if (!fm3130)
return -ENOMEM;
@@ -507,7 +507,7 @@ bad_clock:
/* We won't bail out here because we just got invalid data.
Time setting from u-boot doesn't work anyway */
- fm3130->rtc = rtc_device_register(client->name, &client->dev,
+ fm3130->rtc = devm_rtc_device_register(&client->dev, client->name,
&fm3130_rtc_ops, THIS_MODULE);
if (IS_ERR(fm3130->rtc)) {
err = PTR_ERR(fm3130->rtc);
@@ -517,16 +517,11 @@ bad_clock:
}
return 0;
exit_free:
- kfree(fm3130);
return err;
}
static int fm3130_remove(struct i2c_client *client)
{
- struct fm3130 *fm3130 = i2c_get_clientdata(client);
-
- rtc_device_unregister(fm3130->rtc);
- kfree(fm3130);
return 0;
}
--
1.7.2.5
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH 10/27] rtc: rtc-isl12022: use devm_*() functions
2013-04-01 9:42 [PATCH 01/27] rtc: rtc-ab8500: use devm_*() functions Jingoo Han
` (7 preceding siblings ...)
2013-04-01 9:45 ` [PATCH 09/27] rtc: rtc-fm3130: " Jingoo Han
@ 2013-04-01 9:45 ` Jingoo Han
2013-04-01 9:45 ` [PATCH 11/27] rtc: rtc-m41t80: " Jingoo Han
` (16 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Jingoo Han @ 2013-04-01 9:45 UTC (permalink / raw)
To: 'Andrew Morton'
Cc: linux-kernel, 'Alessandro Zummo', rtc-linux,
'Jingoo Han'
Use devm_*() functions to make cleanup paths simpler.
Signed-off-by: Jingoo Han <jg1.han@samsung.com>
---
drivers/rtc/rtc-isl12022.c | 29 +++++++----------------------
1 files changed, 7 insertions(+), 22 deletions(-)
diff --git a/drivers/rtc/rtc-isl12022.c b/drivers/rtc/rtc-isl12022.c
index 6b4298e..1af0aa5 100644
--- a/drivers/rtc/rtc-isl12022.c
+++ b/drivers/rtc/rtc-isl12022.c
@@ -252,12 +252,11 @@ static int isl12022_probe(struct i2c_client *client,
{
struct isl12022 *isl12022;
- int ret = 0;
-
if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C))
return -ENODEV;
- isl12022 = kzalloc(sizeof(struct isl12022), GFP_KERNEL);
+ isl12022 = devm_kzalloc(&client->dev, sizeof(struct isl12022),
+ GFP_KERNEL);
if (!isl12022)
return -ENOMEM;
@@ -265,31 +264,17 @@ static int isl12022_probe(struct i2c_client *client,
i2c_set_clientdata(client, isl12022);
- isl12022->rtc = rtc_device_register(isl12022_driver.driver.name,
- &client->dev,
- &isl12022_rtc_ops,
- THIS_MODULE);
-
- if (IS_ERR(isl12022->rtc)) {
- ret = PTR_ERR(isl12022->rtc);
- goto exit_kfree;
- }
+ isl12022->rtc = devm_rtc_device_register(&client->dev,
+ isl12022_driver.driver.name,
+ &isl12022_rtc_ops, THIS_MODULE);
+ if (IS_ERR(isl12022->rtc))
+ return PTR_ERR(isl12022->rtc);
return 0;
-
-exit_kfree:
- kfree(isl12022);
-
- return ret;
}
static int isl12022_remove(struct i2c_client *client)
{
- struct isl12022 *isl12022 = i2c_get_clientdata(client);
-
- rtc_device_unregister(isl12022->rtc);
- kfree(isl12022);
-
return 0;
}
--
1.7.2.5
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH 11/27] rtc: rtc-m41t80: use devm_*() functions
2013-04-01 9:42 [PATCH 01/27] rtc: rtc-ab8500: use devm_*() functions Jingoo Han
` (8 preceding siblings ...)
2013-04-01 9:45 ` [PATCH 10/27] rtc: rtc-isl12022: " Jingoo Han
@ 2013-04-01 9:45 ` Jingoo Han
2013-04-01 9:46 ` [PATCH 12/27] rtc: rtc-max8998: " Jingoo Han
` (15 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Jingoo Han @ 2013-04-01 9:45 UTC (permalink / raw)
To: 'Andrew Morton'
Cc: linux-kernel, 'Alessandro Zummo', rtc-linux,
'Jingoo Han'
Use devm_*() functions to make cleanup paths simpler.
Signed-off-by: Jingoo Han <jg1.han@samsung.com>
---
drivers/rtc/rtc-m41t80.c | 16 +++++-----------
1 files changed, 5 insertions(+), 11 deletions(-)
diff --git a/drivers/rtc/rtc-m41t80.c b/drivers/rtc/rtc-m41t80.c
index b885bcd..89674b5 100644
--- a/drivers/rtc/rtc-m41t80.c
+++ b/drivers/rtc/rtc-m41t80.c
@@ -637,7 +637,8 @@ static int m41t80_probe(struct i2c_client *client,
dev_info(&client->dev,
"chip found, driver version " DRV_VERSION "\n");
- clientdata = kzalloc(sizeof(*clientdata), GFP_KERNEL);
+ clientdata = devm_kzalloc(&client->dev, sizeof(*clientdata),
+ GFP_KERNEL);
if (!clientdata) {
rc = -ENOMEM;
goto exit;
@@ -646,8 +647,8 @@ static int m41t80_probe(struct i2c_client *client,
clientdata->features = id->driver_data;
i2c_set_clientdata(client, clientdata);
- rtc = rtc_device_register(client->name, &client->dev,
- &m41t80_rtc_ops, THIS_MODULE);
+ rtc = devm_rtc_device_register(&client->dev, client->name,
+ &m41t80_rtc_ops, THIS_MODULE);
if (IS_ERR(rtc)) {
rc = PTR_ERR(rtc);
rtc = NULL;
@@ -718,26 +719,19 @@ ht_err:
goto exit;
exit:
- if (rtc)
- rtc_device_unregister(rtc);
- kfree(clientdata);
return rc;
}
static int m41t80_remove(struct i2c_client *client)
{
+#ifdef CONFIG_RTC_DRV_M41T80_WDT
struct m41t80_data *clientdata = i2c_get_clientdata(client);
- struct rtc_device *rtc = clientdata->rtc;
-#ifdef CONFIG_RTC_DRV_M41T80_WDT
if (clientdata->features & M41T80_FEATURE_HT) {
misc_deregister(&wdt_dev);
unregister_reboot_notifier(&wdt_notifier);
}
#endif
- if (rtc)
- rtc_device_unregister(rtc);
- kfree(clientdata);
return 0;
}
--
1.7.2.5
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH 12/27] rtc: rtc-max8998: use devm_*() functions
2013-04-01 9:42 [PATCH 01/27] rtc: rtc-ab8500: use devm_*() functions Jingoo Han
` (9 preceding siblings ...)
2013-04-01 9:45 ` [PATCH 11/27] rtc: rtc-m41t80: " Jingoo Han
@ 2013-04-01 9:46 ` Jingoo Han
2013-04-01 9:46 ` [PATCH 13/27] rtc: rtc-mc13xxx: " Jingoo Han
` (14 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Jingoo Han @ 2013-04-01 9:46 UTC (permalink / raw)
To: 'Andrew Morton'
Cc: linux-kernel, 'Alessandro Zummo', rtc-linux,
'Jingoo Han'
Use devm_*() functions to make cleanup paths simpler.
Signed-off-by: Jingoo Han <jg1.han@samsung.com>
---
drivers/rtc/rtc-max8998.c | 18 +++++-------------
1 files changed, 5 insertions(+), 13 deletions(-)
diff --git a/drivers/rtc/rtc-max8998.c b/drivers/rtc/rtc-max8998.c
index 8f234a0..48b6612 100644
--- a/drivers/rtc/rtc-max8998.c
+++ b/drivers/rtc/rtc-max8998.c
@@ -256,7 +256,8 @@ static int max8998_rtc_probe(struct platform_device *pdev)
struct max8998_rtc_info *info;
int ret;
- info = kzalloc(sizeof(struct max8998_rtc_info), GFP_KERNEL);
+ info = devm_kzalloc(&pdev->dev, sizeof(struct max8998_rtc_info),
+ GFP_KERNEL);
if (!info)
return -ENOMEM;
@@ -267,7 +268,7 @@ static int max8998_rtc_probe(struct platform_device *pdev)
platform_set_drvdata(pdev, info);
- info->rtc_dev = rtc_device_register("max8998-rtc", &pdev->dev,
+ info->rtc_dev = devm_rtc_device_register(&pdev->dev, "max8998-rtc",
&max8998_rtc_ops, THIS_MODULE);
if (IS_ERR(info->rtc_dev)) {
@@ -276,8 +277,8 @@ static int max8998_rtc_probe(struct platform_device *pdev)
goto out_rtc;
}
- ret = request_threaded_irq(info->irq, NULL, max8998_rtc_alarm_irq, 0,
- "rtc-alarm0", info);
+ ret = devm_request_threaded_irq(&pdev->dev, info->irq, NULL,
+ max8998_rtc_alarm_irq, 0, "rtc-alarm0", info);
if (ret < 0)
dev_err(&pdev->dev, "Failed to request alarm IRQ: %d: %d\n",
@@ -294,20 +295,11 @@ static int max8998_rtc_probe(struct platform_device *pdev)
out_rtc:
platform_set_drvdata(pdev, NULL);
- kfree(info);
return ret;
}
static int max8998_rtc_remove(struct platform_device *pdev)
{
- struct max8998_rtc_info *info = platform_get_drvdata(pdev);
-
- if (info) {
- free_irq(info->irq, info);
- rtc_device_unregister(info->rtc_dev);
- kfree(info);
- }
-
return 0;
}
--
1.7.2.5
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH 13/27] rtc: rtc-mc13xxx: use devm_*() functions
2013-04-01 9:42 [PATCH 01/27] rtc: rtc-ab8500: use devm_*() functions Jingoo Han
` (10 preceding siblings ...)
2013-04-01 9:46 ` [PATCH 12/27] rtc: rtc-max8998: " Jingoo Han
@ 2013-04-01 9:46 ` Jingoo Han
2013-04-01 9:46 ` [PATCH 14/27] rtc: rtc-msm6242: " Jingoo Han
` (13 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Jingoo Han @ 2013-04-01 9:46 UTC (permalink / raw)
To: 'Andrew Morton'
Cc: linux-kernel, 'Alessandro Zummo', rtc-linux,
'Jingoo Han'
Use devm_*() functions to make cleanup paths simpler.
Signed-off-by: Jingoo Han <jg1.han@samsung.com>
---
drivers/rtc/rtc-mc13xxx.c | 11 +++--------
1 files changed, 3 insertions(+), 8 deletions(-)
diff --git a/drivers/rtc/rtc-mc13xxx.c b/drivers/rtc/rtc-mc13xxx.c
index 5391b15..7a8ed27 100644
--- a/drivers/rtc/rtc-mc13xxx.c
+++ b/drivers/rtc/rtc-mc13xxx.c
@@ -316,7 +316,7 @@ static int __init mc13xxx_rtc_probe(struct platform_device *pdev)
struct mc13xxx *mc13xxx;
int rtcrst_pending;
- priv = kzalloc(sizeof(*priv), GFP_KERNEL);
+ priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL);
if (!priv)
return -ENOMEM;
@@ -351,8 +351,8 @@ static int __init mc13xxx_rtc_probe(struct platform_device *pdev)
mc13xxx_unlock(mc13xxx);
- priv->rtc = rtc_device_register(pdev->name,
- &pdev->dev, &mc13xxx_rtc_ops, THIS_MODULE);
+ priv->rtc = devm_rtc_device_register(&pdev->dev, pdev->name,
+ &mc13xxx_rtc_ops, THIS_MODULE);
if (IS_ERR(priv->rtc)) {
ret = PTR_ERR(priv->rtc);
@@ -372,7 +372,6 @@ err_reset_irq_request:
mc13xxx_unlock(mc13xxx);
platform_set_drvdata(pdev, NULL);
- kfree(priv);
}
return ret;
@@ -384,8 +383,6 @@ static int __exit mc13xxx_rtc_remove(struct platform_device *pdev)
mc13xxx_lock(priv->mc13xxx);
- rtc_device_unregister(priv->rtc);
-
mc13xxx_irq_free(priv->mc13xxx, MC13XXX_IRQ_TODA, priv);
mc13xxx_irq_free(priv->mc13xxx, MC13XXX_IRQ_1HZ, priv);
mc13xxx_irq_free(priv->mc13xxx, MC13XXX_IRQ_RTCRST, priv);
@@ -394,8 +391,6 @@ static int __exit mc13xxx_rtc_remove(struct platform_device *pdev)
platform_set_drvdata(pdev, NULL);
- kfree(priv);
-
return 0;
}
--
1.7.2.5
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH 14/27] rtc: rtc-msm6242: use devm_*() functions
2013-04-01 9:42 [PATCH 01/27] rtc: rtc-ab8500: use devm_*() functions Jingoo Han
` (11 preceding siblings ...)
2013-04-01 9:46 ` [PATCH 13/27] rtc: rtc-mc13xxx: " Jingoo Han
@ 2013-04-01 9:46 ` Jingoo Han
2013-04-01 9:47 ` [PATCH 15/27] rtc: rtc-nuc900: " Jingoo Han
` (12 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Jingoo Han @ 2013-04-01 9:46 UTC (permalink / raw)
To: 'Andrew Morton'
Cc: linux-kernel, 'Alessandro Zummo', rtc-linux,
'Jingoo Han'
Use devm_*() functions to make cleanup paths simpler.
Signed-off-by: Jingoo Han <jg1.han@samsung.com>
---
drivers/rtc/rtc-msm6242.c | 32 +++++++++++---------------------
1 files changed, 11 insertions(+), 21 deletions(-)
diff --git a/drivers/rtc/rtc-msm6242.c b/drivers/rtc/rtc-msm6242.c
index 3ac1e8e..771f86a 100644
--- a/drivers/rtc/rtc-msm6242.c
+++ b/drivers/rtc/rtc-msm6242.c
@@ -194,30 +194,28 @@ static const struct rtc_class_ops msm6242_rtc_ops = {
.set_time = msm6242_set_time,
};
-static int __init msm6242_rtc_probe(struct platform_device *dev)
+static int __init msm6242_rtc_probe(struct platform_device *pdev)
{
struct resource *res;
struct msm6242_priv *priv;
struct rtc_device *rtc;
int error;
- res = platform_get_resource(dev, IORESOURCE_MEM, 0);
+ res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
if (!res)
return -ENODEV;
- priv = kzalloc(sizeof(*priv), GFP_KERNEL);
+ priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL);
if (!priv)
return -ENOMEM;
- priv->regs = ioremap(res->start, resource_size(res));
- if (!priv->regs) {
- error = -ENOMEM;
- goto out_free_priv;
- }
- platform_set_drvdata(dev, priv);
+ priv->regs = devm_ioremap(&pdev->dev, res->start, resource_size(res));
+ if (!priv->regs)
+ return -ENOMEM;
+ platform_set_drvdata(pdev, priv);
- rtc = rtc_device_register("rtc-msm6242", &dev->dev, &msm6242_rtc_ops,
- THIS_MODULE);
+ rtc = devm_rtc_device_register(&pdev->dev, "rtc-msm6242",
+ &msm6242_rtc_ops, THIS_MODULE);
if (IS_ERR(rtc)) {
error = PTR_ERR(rtc);
goto out_unmap;
@@ -227,20 +225,12 @@ static int __init msm6242_rtc_probe(struct platform_device *dev)
return 0;
out_unmap:
- platform_set_drvdata(dev, NULL);
- iounmap(priv->regs);
-out_free_priv:
- kfree(priv);
+ platform_set_drvdata(pdev, NULL);
return error;
}
-static int __exit msm6242_rtc_remove(struct platform_device *dev)
+static int __exit msm6242_rtc_remove(struct platform_device *pdev)
{
- struct msm6242_priv *priv = platform_get_drvdata(dev);
-
- rtc_device_unregister(priv->rtc);
- iounmap(priv->regs);
- kfree(priv);
return 0;
}
--
1.7.2.5
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH 15/27] rtc: rtc-nuc900: use devm_*() functions
2013-04-01 9:42 [PATCH 01/27] rtc: rtc-ab8500: use devm_*() functions Jingoo Han
` (12 preceding siblings ...)
2013-04-01 9:46 ` [PATCH 14/27] rtc: rtc-msm6242: " Jingoo Han
@ 2013-04-01 9:47 ` Jingoo Han
2013-04-01 9:47 ` [PATCH 16/27] rtc: rtc-pcap: " Jingoo Han
` (11 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Jingoo Han @ 2013-04-01 9:47 UTC (permalink / raw)
To: 'Andrew Morton'
Cc: linux-kernel, 'Alessandro Zummo', rtc-linux,
'Jingoo Han'
Use devm_*() functions to make cleanup paths simpler.
Signed-off-by: Jingoo Han <jg1.han@samsung.com>
---
drivers/rtc/rtc-nuc900.c | 53 +++++++++------------------------------------
1 files changed, 11 insertions(+), 42 deletions(-)
diff --git a/drivers/rtc/rtc-nuc900.c b/drivers/rtc/rtc-nuc900.c
index 4d9525c..f5dfb6e 100644
--- a/drivers/rtc/rtc-nuc900.c
+++ b/drivers/rtc/rtc-nuc900.c
@@ -226,9 +226,9 @@ static int __init nuc900_rtc_probe(struct platform_device *pdev)
{
struct resource *res;
struct nuc900_rtc *nuc900_rtc;
- int err = 0;
- nuc900_rtc = kzalloc(sizeof(struct nuc900_rtc), GFP_KERNEL);
+ nuc900_rtc = devm_kzalloc(&pdev->dev, sizeof(struct nuc900_rtc),
+ GFP_KERNEL);
if (!nuc900_rtc) {
dev_err(&pdev->dev, "kzalloc nuc900_rtc failed\n");
return -ENOMEM;
@@ -236,68 +236,37 @@ static int __init nuc900_rtc_probe(struct platform_device *pdev)
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
if (!res) {
dev_err(&pdev->dev, "platform_get_resource failed\n");
- err = -ENXIO;
- goto fail1;
+ return -ENXIO;
}
- if (!request_mem_region(res->start, resource_size(res),
- pdev->name)) {
- dev_err(&pdev->dev, "request_mem_region failed\n");
- err = -EBUSY;
- goto fail1;
- }
-
- nuc900_rtc->rtc_reg = ioremap(res->start, resource_size(res));
- if (!nuc900_rtc->rtc_reg) {
- dev_err(&pdev->dev, "ioremap rtc_reg failed\n");
- err = -ENOMEM;
- goto fail2;
- }
+ nuc900_rtc->rtc_reg = devm_ioremap_resource(&pdev->dev, res);
+ if (IS_ERR(nuc900_rtc->rtc_reg))
+ return PTR_ERR(nuc900_rtc->rtc_reg);
platform_set_drvdata(pdev, nuc900_rtc);
- nuc900_rtc->rtcdev = rtc_device_register(pdev->name, &pdev->dev,
+ nuc900_rtc->rtcdev = devm_rtc_device_register(&pdev->dev, pdev->name,
&nuc900_rtc_ops, THIS_MODULE);
if (IS_ERR(nuc900_rtc->rtcdev)) {
dev_err(&pdev->dev, "rtc device register failed\n");
- err = PTR_ERR(nuc900_rtc->rtcdev);
- goto fail3;
+ return PTR_ERR(nuc900_rtc->rtcdev);
}
__raw_writel(__raw_readl(nuc900_rtc->rtc_reg + REG_RTC_TSSR) | MODE24,
nuc900_rtc->rtc_reg + REG_RTC_TSSR);
nuc900_rtc->irq_num = platform_get_irq(pdev, 0);
- if (request_irq(nuc900_rtc->irq_num, nuc900_rtc_interrupt,
- 0, "nuc900rtc", nuc900_rtc)) {
+ if (devm_request_irq(&pdev->dev, nuc900_rtc->irq_num,
+ nuc900_rtc_interrupt, 0, "nuc900rtc", nuc900_rtc)) {
dev_err(&pdev->dev, "NUC900 RTC request irq failed\n");
- err = -EBUSY;
- goto fail4;
+ return -EBUSY;
}
return 0;
-
-fail4: rtc_device_unregister(nuc900_rtc->rtcdev);
-fail3: iounmap(nuc900_rtc->rtc_reg);
-fail2: release_mem_region(res->start, resource_size(res));
-fail1: kfree(nuc900_rtc);
- return err;
}
static int __exit nuc900_rtc_remove(struct platform_device *pdev)
{
- struct nuc900_rtc *nuc900_rtc = platform_get_drvdata(pdev);
- struct resource *res;
-
- free_irq(nuc900_rtc->irq_num, nuc900_rtc);
- rtc_device_unregister(nuc900_rtc->rtcdev);
- iounmap(nuc900_rtc->rtc_reg);
-
- res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
- release_mem_region(res->start, resource_size(res));
-
- kfree(nuc900_rtc);
-
platform_set_drvdata(pdev, NULL);
return 0;
--
1.7.2.5
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH 16/27] rtc: rtc-pcap: use devm_*() functions
2013-04-01 9:42 [PATCH 01/27] rtc: rtc-ab8500: use devm_*() functions Jingoo Han
` (13 preceding siblings ...)
2013-04-01 9:47 ` [PATCH 15/27] rtc: rtc-nuc900: " Jingoo Han
@ 2013-04-01 9:47 ` Jingoo Han
2013-04-01 9:47 ` [PATCH 17/27] rtc: rtc-pcf2123: " Jingoo Han
` (10 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Jingoo Han @ 2013-04-01 9:47 UTC (permalink / raw)
To: 'Andrew Morton'
Cc: linux-kernel, 'Alessandro Zummo', rtc-linux,
'Jingoo Han'
Use devm_*() functions to make cleanup paths simpler.
Signed-off-by: Jingoo Han <jg1.han@samsung.com>
---
drivers/rtc/rtc-pcap.c | 34 ++++++++++++----------------------
1 files changed, 12 insertions(+), 22 deletions(-)
diff --git a/drivers/rtc/rtc-pcap.c b/drivers/rtc/rtc-pcap.c
index ce09824..539a90b 100644
--- a/drivers/rtc/rtc-pcap.c
+++ b/drivers/rtc/rtc-pcap.c
@@ -145,7 +145,8 @@ static int __init pcap_rtc_probe(struct platform_device *pdev)
int timer_irq, alarm_irq;
int err = -ENOMEM;
- pcap_rtc = kmalloc(sizeof(struct pcap_rtc), GFP_KERNEL);
+ pcap_rtc = devm_kzalloc(&pdev->dev, sizeof(struct pcap_rtc),
+ GFP_KERNEL);
if (!pcap_rtc)
return err;
@@ -153,45 +154,34 @@ static int __init pcap_rtc_probe(struct platform_device *pdev)
platform_set_drvdata(pdev, pcap_rtc);
- pcap_rtc->rtc = rtc_device_register("pcap", &pdev->dev,
- &pcap_rtc_ops, THIS_MODULE);
+ pcap_rtc->rtc = devm_rtc_device_register(&pdev->dev, "pcap",
+ &pcap_rtc_ops, THIS_MODULE);
if (IS_ERR(pcap_rtc->rtc)) {
err = PTR_ERR(pcap_rtc->rtc);
- goto fail_rtc;
+ goto fail;
}
-
timer_irq = pcap_to_irq(pcap_rtc->pcap, PCAP_IRQ_1HZ);
alarm_irq = pcap_to_irq(pcap_rtc->pcap, PCAP_IRQ_TODA);
- err = request_irq(timer_irq, pcap_rtc_irq, 0, "RTC Timer", pcap_rtc);
+ err = devm_request_irq(&pdev->dev, timer_irq, pcap_rtc_irq, 0,
+ "RTC Timer", pcap_rtc);
if (err)
- goto fail_timer;
+ goto fail;
- err = request_irq(alarm_irq, pcap_rtc_irq, 0, "RTC Alarm", pcap_rtc);
+ err = devm_request_irq(&pdev->dev, alarm_irq, pcap_rtc_irq, 0,
+ "RTC Alarm", pcap_rtc);
if (err)
- goto fail_alarm;
+ goto fail;
return 0;
-fail_alarm:
- free_irq(timer_irq, pcap_rtc);
-fail_timer:
- rtc_device_unregister(pcap_rtc->rtc);
-fail_rtc:
+fail:
platform_set_drvdata(pdev, NULL);
- kfree(pcap_rtc);
return err;
}
static int __exit pcap_rtc_remove(struct platform_device *pdev)
{
- struct pcap_rtc *pcap_rtc = platform_get_drvdata(pdev);
-
- free_irq(pcap_to_irq(pcap_rtc->pcap, PCAP_IRQ_1HZ), pcap_rtc);
- free_irq(pcap_to_irq(pcap_rtc->pcap, PCAP_IRQ_TODA), pcap_rtc);
- rtc_device_unregister(pcap_rtc->rtc);
- kfree(pcap_rtc);
-
return 0;
}
--
1.7.2.5
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH 17/27] rtc: rtc-pcf2123: use devm_*() functions
2013-04-01 9:42 [PATCH 01/27] rtc: rtc-ab8500: use devm_*() functions Jingoo Han
` (14 preceding siblings ...)
2013-04-01 9:47 ` [PATCH 16/27] rtc: rtc-pcap: " Jingoo Han
@ 2013-04-01 9:47 ` Jingoo Han
2013-04-01 9:48 ` [PATCH 18/27] rtc: rtc-pcf50633: " Jingoo Han
` (9 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Jingoo Han @ 2013-04-01 9:47 UTC (permalink / raw)
To: 'Andrew Morton'
Cc: linux-kernel, 'Alessandro Zummo', rtc-linux,
'Jingoo Han'
Use devm_*() functions to make cleanup paths simpler.
Signed-off-by: Jingoo Han <jg1.han@samsung.com>
---
drivers/rtc/rtc-pcf2123.c | 11 +++--------
1 files changed, 3 insertions(+), 8 deletions(-)
diff --git a/drivers/rtc/rtc-pcf2123.c b/drivers/rtc/rtc-pcf2123.c
index 02b742a..6a3f329 100644
--- a/drivers/rtc/rtc-pcf2123.c
+++ b/drivers/rtc/rtc-pcf2123.c
@@ -226,7 +226,8 @@ static int pcf2123_probe(struct spi_device *spi)
u8 txbuf[2], rxbuf[2];
int ret, i;
- pdata = kzalloc(sizeof(struct pcf2123_plat_data), GFP_KERNEL);
+ pdata = devm_kzalloc(&spi->dev, sizeof(struct pcf2123_plat_data),
+ GFP_KERNEL);
if (!pdata)
return -ENOMEM;
spi->dev.platform_data = pdata;
@@ -281,7 +282,7 @@ static int pcf2123_probe(struct spi_device *spi)
pcf2123_delay_trec();
/* Finalize the initialization */
- rtc = rtc_device_register(pcf2123_driver.driver.name, &spi->dev,
+ rtc = devm_rtc_device_register(&spi->dev, pcf2123_driver.driver.name,
&pcf2123_rtc_ops, THIS_MODULE);
if (IS_ERR(rtc)) {
@@ -314,7 +315,6 @@ sysfs_exit:
device_remove_file(&spi->dev, &pdata->regs[i].attr);
kfree_exit:
- kfree(pdata);
spi->dev.platform_data = NULL;
return ret;
}
@@ -325,15 +325,10 @@ static int pcf2123_remove(struct spi_device *spi)
int i;
if (pdata) {
- struct rtc_device *rtc = pdata->rtc;
-
- if (rtc)
- rtc_device_unregister(rtc);
for (i = 0; i < 16; i++)
if (pdata->regs[i].name[0])
device_remove_file(&spi->dev,
&pdata->regs[i].attr);
- kfree(pdata);
}
return 0;
--
1.7.2.5
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH 18/27] rtc: rtc-pcf50633: use devm_*() functions
2013-04-01 9:42 [PATCH 01/27] rtc: rtc-ab8500: use devm_*() functions Jingoo Han
` (15 preceding siblings ...)
2013-04-01 9:47 ` [PATCH 17/27] rtc: rtc-pcf2123: " Jingoo Han
@ 2013-04-01 9:48 ` Jingoo Han
2013-04-01 9:48 ` [PATCH 19/27] rtc: rtc-pcf8563: " Jingoo Han
` (8 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Jingoo Han @ 2013-04-01 9:48 UTC (permalink / raw)
To: 'Andrew Morton'
Cc: linux-kernel, 'Alessandro Zummo', rtc-linux,
'Jingoo Han'
Use devm_*() functions to make cleanup paths simpler.
Signed-off-by: Jingoo Han <jg1.han@samsung.com>
---
drivers/rtc/rtc-pcf50633.c | 15 ++++-----------
1 files changed, 4 insertions(+), 11 deletions(-)
diff --git a/drivers/rtc/rtc-pcf50633.c b/drivers/rtc/rtc-pcf50633.c
index e9f3135..e6b6911 100644
--- a/drivers/rtc/rtc-pcf50633.c
+++ b/drivers/rtc/rtc-pcf50633.c
@@ -252,20 +252,17 @@ static int pcf50633_rtc_probe(struct platform_device *pdev)
{
struct pcf50633_rtc *rtc;
- rtc = kzalloc(sizeof(*rtc), GFP_KERNEL);
+ rtc = devm_kzalloc(&pdev->dev, sizeof(*rtc), GFP_KERNEL);
if (!rtc)
return -ENOMEM;
rtc->pcf = dev_to_pcf50633(pdev->dev.parent);
platform_set_drvdata(pdev, rtc);
- rtc->rtc_dev = rtc_device_register("pcf50633-rtc", &pdev->dev,
+ rtc->rtc_dev = devm_rtc_device_register(&pdev->dev, "pcf50633-rtc",
&pcf50633_rtc_ops, THIS_MODULE);
- if (IS_ERR(rtc->rtc_dev)) {
- int ret = PTR_ERR(rtc->rtc_dev);
- kfree(rtc);
- return ret;
- }
+ if (IS_ERR(rtc->rtc_dev))
+ return PTR_ERR(rtc->rtc_dev);
pcf50633_register_irq(rtc->pcf, PCF50633_IRQ_ALARM,
pcf50633_rtc_irq, rtc);
@@ -277,12 +274,8 @@ static int pcf50633_rtc_remove(struct platform_device *pdev)
struct pcf50633_rtc *rtc;
rtc = platform_get_drvdata(pdev);
-
pcf50633_free_irq(rtc->pcf, PCF50633_IRQ_ALARM);
- rtc_device_unregister(rtc->rtc_dev);
- kfree(rtc);
-
return 0;
}
--
1.7.2.5
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH 19/27] rtc: rtc-pcf8563: use devm_*() functions
2013-04-01 9:42 [PATCH 01/27] rtc: rtc-ab8500: use devm_*() functions Jingoo Han
` (16 preceding siblings ...)
2013-04-01 9:48 ` [PATCH 18/27] rtc: rtc-pcf50633: " Jingoo Han
@ 2013-04-01 9:48 ` Jingoo Han
2013-04-01 9:48 ` [PATCH 20/27] rtc: rtc-pcf8583: " Jingoo Han
` (7 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Jingoo Han @ 2013-04-01 9:48 UTC (permalink / raw)
To: 'Andrew Morton'
Cc: linux-kernel, 'Alessandro Zummo', rtc-linux,
'Jingoo Han'
Use devm_*() functions to make cleanup paths simpler.
Signed-off-by: Jingoo Han <jg1.han@samsung.com>
---
drivers/rtc/rtc-pcf8563.c | 28 +++++++---------------------
1 files changed, 7 insertions(+), 21 deletions(-)
diff --git a/drivers/rtc/rtc-pcf8563.c b/drivers/rtc/rtc-pcf8563.c
index f7daf18..97b354a 100644
--- a/drivers/rtc/rtc-pcf8563.c
+++ b/drivers/rtc/rtc-pcf8563.c
@@ -245,14 +245,13 @@ static int pcf8563_probe(struct i2c_client *client,
{
struct pcf8563 *pcf8563;
- int err = 0;
-
dev_dbg(&client->dev, "%s\n", __func__);
if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C))
return -ENODEV;
- pcf8563 = kzalloc(sizeof(struct pcf8563), GFP_KERNEL);
+ pcf8563 = devm_kzalloc(&client->dev, sizeof(struct pcf8563),
+ GFP_KERNEL);
if (!pcf8563)
return -ENOMEM;
@@ -260,31 +259,18 @@ static int pcf8563_probe(struct i2c_client *client,
i2c_set_clientdata(client, pcf8563);
- pcf8563->rtc = rtc_device_register(pcf8563_driver.driver.name,
- &client->dev, &pcf8563_rtc_ops, THIS_MODULE);
+ pcf8563->rtc = devm_rtc_device_register(&client->dev,
+ pcf8563_driver.driver.name,
+ &pcf8563_rtc_ops, THIS_MODULE);
- if (IS_ERR(pcf8563->rtc)) {
- err = PTR_ERR(pcf8563->rtc);
- goto exit_kfree;
- }
+ if (IS_ERR(pcf8563->rtc))
+ return PTR_ERR(pcf8563->rtc);
return 0;
-
-exit_kfree:
- kfree(pcf8563);
-
- return err;
}
static int pcf8563_remove(struct i2c_client *client)
{
- struct pcf8563 *pcf8563 = i2c_get_clientdata(client);
-
- if (pcf8563->rtc)
- rtc_device_unregister(pcf8563->rtc);
-
- kfree(pcf8563);
-
return 0;
}
--
1.7.2.5
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH 20/27] rtc: rtc-pcf8583: use devm_*() functions
2013-04-01 9:42 [PATCH 01/27] rtc: rtc-ab8500: use devm_*() functions Jingoo Han
` (17 preceding siblings ...)
2013-04-01 9:48 ` [PATCH 19/27] rtc: rtc-pcf8563: " Jingoo Han
@ 2013-04-01 9:48 ` Jingoo Han
2013-04-01 9:48 ` [PATCH 21/27] rtc: rtc-rp5c01: " Jingoo Han
` (6 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Jingoo Han @ 2013-04-01 9:48 UTC (permalink / raw)
To: 'Andrew Morton'
Cc: linux-kernel, 'Alessandro Zummo', rtc-linux,
'Jingoo Han'
Use devm_*() functions to make cleanup paths simpler.
Signed-off-by: Jingoo Han <jg1.han@samsung.com>
---
drivers/rtc/rtc-pcf8583.c | 24 +++++++-----------------
1 files changed, 7 insertions(+), 17 deletions(-)
diff --git a/drivers/rtc/rtc-pcf8583.c b/drivers/rtc/rtc-pcf8583.c
index 5f97c61..95886dc 100644
--- a/drivers/rtc/rtc-pcf8583.c
+++ b/drivers/rtc/rtc-pcf8583.c
@@ -268,39 +268,29 @@ static int pcf8583_probe(struct i2c_client *client,
const struct i2c_device_id *id)
{
struct pcf8583 *pcf8583;
- int err;
if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C))
return -ENODEV;
- pcf8583 = kzalloc(sizeof(struct pcf8583), GFP_KERNEL);
+ pcf8583 = devm_kzalloc(&client->dev, sizeof(struct pcf8583),
+ GFP_KERNEL);
if (!pcf8583)
return -ENOMEM;
i2c_set_clientdata(client, pcf8583);
- pcf8583->rtc = rtc_device_register(pcf8583_driver.driver.name,
- &client->dev, &pcf8583_rtc_ops, THIS_MODULE);
+ pcf8583->rtc = devm_rtc_device_register(&client->dev,
+ pcf8583_driver.driver.name,
+ &pcf8583_rtc_ops, THIS_MODULE);
- if (IS_ERR(pcf8583->rtc)) {
- err = PTR_ERR(pcf8583->rtc);
- goto exit_kfree;
- }
+ if (IS_ERR(pcf8583->rtc))
+ return PTR_ERR(pcf8583->rtc);
return 0;
-
-exit_kfree:
- kfree(pcf8583);
- return err;
}
static int pcf8583_remove(struct i2c_client *client)
{
- struct pcf8583 *pcf8583 = i2c_get_clientdata(client);
-
- if (pcf8583->rtc)
- rtc_device_unregister(pcf8583->rtc);
- kfree(pcf8583);
return 0;
}
--
1.7.2.5
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH 21/27] rtc: rtc-rp5c01: use devm_*() functions
2013-04-01 9:42 [PATCH 01/27] rtc: rtc-ab8500: use devm_*() functions Jingoo Han
` (18 preceding siblings ...)
2013-04-01 9:48 ` [PATCH 20/27] rtc: rtc-pcf8583: " Jingoo Han
@ 2013-04-01 9:48 ` Jingoo Han
2013-04-01 9:49 ` [PATCH 22/27] rtc: rtc-rs5c348: " Jingoo Han
` (5 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Jingoo Han @ 2013-04-01 9:48 UTC (permalink / raw)
To: 'Andrew Morton'
Cc: linux-kernel, 'Alessandro Zummo', rtc-linux,
'Jingoo Han'
Use devm_*() functions to make cleanup paths simpler.
Signed-off-by: Jingoo Han <jg1.han@samsung.com>
---
drivers/rtc/rtc-rp5c01.c | 26 ++++++++------------------
1 files changed, 8 insertions(+), 18 deletions(-)
diff --git a/drivers/rtc/rtc-rp5c01.c b/drivers/rtc/rtc-rp5c01.c
index d25d2f6..873c689 100644
--- a/drivers/rtc/rtc-rp5c01.c
+++ b/drivers/rtc/rtc-rp5c01.c
@@ -230,15 +230,13 @@ static int __init rp5c01_rtc_probe(struct platform_device *dev)
if (!res)
return -ENODEV;
- priv = kzalloc(sizeof(*priv), GFP_KERNEL);
+ priv = devm_kzalloc(&dev->dev, sizeof(*priv), GFP_KERNEL);
if (!priv)
return -ENOMEM;
- priv->regs = ioremap(res->start, resource_size(res));
- if (!priv->regs) {
- error = -ENOMEM;
- goto out_free_priv;
- }
+ priv->regs = devm_ioremap(&dev->dev, res->start, resource_size(res));
+ if (!priv->regs)
+ return -ENOMEM;
sysfs_bin_attr_init(&priv->nvram_attr);
priv->nvram_attr.attr.name = "nvram";
@@ -251,27 +249,22 @@ static int __init rp5c01_rtc_probe(struct platform_device *dev)
platform_set_drvdata(dev, priv);
- rtc = rtc_device_register("rtc-rp5c01", &dev->dev, &rp5c01_rtc_ops,
+ rtc = devm_rtc_device_register(&dev->dev, "rtc-rp5c01", &rp5c01_rtc_ops,
THIS_MODULE);
if (IS_ERR(rtc)) {
error = PTR_ERR(rtc);
- goto out_unmap;
+ goto out;
}
priv->rtc = rtc;
error = sysfs_create_bin_file(&dev->dev.kobj, &priv->nvram_attr);
if (error)
- goto out_unregister;
+ goto out;
return 0;
-out_unregister:
- rtc_device_unregister(rtc);
-out_unmap:
+out:
platform_set_drvdata(dev, NULL);
- iounmap(priv->regs);
-out_free_priv:
- kfree(priv);
return error;
}
@@ -280,9 +273,6 @@ static int __exit rp5c01_rtc_remove(struct platform_device *dev)
struct rp5c01_priv *priv = platform_get_drvdata(dev);
sysfs_remove_bin_file(&dev->dev.kobj, &priv->nvram_attr);
- rtc_device_unregister(priv->rtc);
- iounmap(priv->regs);
- kfree(priv);
return 0;
}
--
1.7.2.5
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH 22/27] rtc: rtc-rs5c348: use devm_*() functions
2013-04-01 9:42 [PATCH 01/27] rtc: rtc-ab8500: use devm_*() functions Jingoo Han
` (19 preceding siblings ...)
2013-04-01 9:48 ` [PATCH 21/27] rtc: rtc-rp5c01: " Jingoo Han
@ 2013-04-01 9:49 ` Jingoo Han
2013-04-01 9:49 ` [PATCH 23/27] rtc: rtc-rs5c372: " Jingoo Han
` (4 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Jingoo Han @ 2013-04-01 9:49 UTC (permalink / raw)
To: 'Andrew Morton'
Cc: linux-kernel, 'Alessandro Zummo', rtc-linux,
'Jingoo Han'
Use devm_*() functions to make cleanup paths simpler.
Signed-off-by: Jingoo Han <jg1.han@samsung.com>
---
drivers/rtc/rtc-rs5c348.c | 12 +++---------
1 files changed, 3 insertions(+), 9 deletions(-)
diff --git a/drivers/rtc/rtc-rs5c348.c b/drivers/rtc/rtc-rs5c348.c
index 72ef10b..2c37df3 100644
--- a/drivers/rtc/rtc-rs5c348.c
+++ b/drivers/rtc/rtc-rs5c348.c
@@ -158,7 +158,8 @@ static int rs5c348_probe(struct spi_device *spi)
struct rtc_device *rtc;
struct rs5c348_plat_data *pdata;
- pdata = kzalloc(sizeof(struct rs5c348_plat_data), GFP_KERNEL);
+ pdata = devm_kzalloc(&spi->dev, sizeof(struct rs5c348_plat_data),
+ GFP_KERNEL);
if (!pdata)
return -ENOMEM;
spi->dev.platform_data = pdata;
@@ -202,7 +203,7 @@ static int rs5c348_probe(struct spi_device *spi)
if (ret & RS5C348_BIT_24H)
pdata->rtc_24h = 1;
- rtc = rtc_device_register(rs5c348_driver.driver.name, &spi->dev,
+ rtc = devm_rtc_device_register(&spi->dev, rs5c348_driver.driver.name,
&rs5c348_rtc_ops, THIS_MODULE);
if (IS_ERR(rtc)) {
@@ -214,18 +215,11 @@ static int rs5c348_probe(struct spi_device *spi)
return 0;
kfree_exit:
- kfree(pdata);
return ret;
}
static int rs5c348_remove(struct spi_device *spi)
{
- struct rs5c348_plat_data *pdata = spi->dev.platform_data;
- struct rtc_device *rtc = pdata->rtc;
-
- if (rtc)
- rtc_device_unregister(rtc);
- kfree(pdata);
return 0;
}
--
1.7.2.5
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH 23/27] rtc: rtc-rs5c372: use devm_*() functions
2013-04-01 9:42 [PATCH 01/27] rtc: rtc-ab8500: use devm_*() functions Jingoo Han
` (20 preceding siblings ...)
2013-04-01 9:49 ` [PATCH 22/27] rtc: rtc-rs5c348: " Jingoo Han
@ 2013-04-01 9:49 ` Jingoo Han
2013-04-01 9:49 ` [PATCH 24/27] rtc: rtc-s35390a: " Jingoo Han
` (3 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Jingoo Han @ 2013-04-01 9:49 UTC (permalink / raw)
To: 'Andrew Morton'
Cc: linux-kernel, 'Alessandro Zummo', rtc-linux,
'Jingoo Han'
Use devm_*() functions to make cleanup paths simpler.
Signed-off-by: Jingoo Han <jg1.han@samsung.com>
---
drivers/rtc/rtc-rs5c372.c | 30 +++++++++++-------------------
1 files changed, 11 insertions(+), 19 deletions(-)
diff --git a/drivers/rtc/rtc-rs5c372.c b/drivers/rtc/rtc-rs5c372.c
index 581739f..224d634 100644
--- a/drivers/rtc/rtc-rs5c372.c
+++ b/drivers/rtc/rtc-rs5c372.c
@@ -579,7 +579,9 @@ static int rs5c372_probe(struct i2c_client *client,
}
}
- if (!(rs5c372 = kzalloc(sizeof(struct rs5c372), GFP_KERNEL))) {
+ rs5c372 = devm_kzalloc(&client->dev, sizeof(struct rs5c372),
+ GFP_KERNEL);
+ if (!rs5c372) {
err = -ENOMEM;
goto exit;
}
@@ -594,7 +596,7 @@ static int rs5c372_probe(struct i2c_client *client,
err = rs5c_get_regs(rs5c372);
if (err < 0)
- goto exit_kfree;
+ goto exit;
/* clock may be set for am/pm or 24 hr time */
switch (rs5c372->type) {
@@ -617,7 +619,7 @@ static int rs5c372_probe(struct i2c_client *client,
break;
default:
dev_err(&client->dev, "unknown RTC type\n");
- goto exit_kfree;
+ goto exit;
}
/* if the oscillator lost power and no other software (like
@@ -629,7 +631,7 @@ static int rs5c372_probe(struct i2c_client *client,
err = rs5c_oscillator_setup(rs5c372);
if (unlikely(err < 0)) {
dev_err(&client->dev, "setup error\n");
- goto exit_kfree;
+ goto exit;
}
if (rs5c372_get_datetime(client, &tm) < 0)
@@ -648,38 +650,28 @@ static int rs5c372_probe(struct i2c_client *client,
);
/* REVISIT use client->irq to register alarm irq ... */
-
- rs5c372->rtc = rtc_device_register(rs5c372_driver.driver.name,
- &client->dev, &rs5c372_rtc_ops, THIS_MODULE);
+ rs5c372->rtc = devm_rtc_device_register(&client->dev,
+ rs5c372_driver.driver.name,
+ &rs5c372_rtc_ops, THIS_MODULE);
if (IS_ERR(rs5c372->rtc)) {
err = PTR_ERR(rs5c372->rtc);
- goto exit_kfree;
+ goto exit;
}
err = rs5c_sysfs_register(&client->dev);
if (err)
- goto exit_devreg;
+ goto exit;
return 0;
-exit_devreg:
- rtc_device_unregister(rs5c372->rtc);
-
-exit_kfree:
- kfree(rs5c372);
-
exit:
return err;
}
static int rs5c372_remove(struct i2c_client *client)
{
- struct rs5c372 *rs5c372 = i2c_get_clientdata(client);
-
- rtc_device_unregister(rs5c372->rtc);
rs5c_sysfs_unregister(&client->dev);
- kfree(rs5c372);
return 0;
}
--
1.7.2.5
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH 24/27] rtc: rtc-s35390a: use devm_*() functions
2013-04-01 9:42 [PATCH 01/27] rtc: rtc-ab8500: use devm_*() functions Jingoo Han
` (21 preceding siblings ...)
2013-04-01 9:49 ` [PATCH 23/27] rtc: rtc-rs5c372: " Jingoo Han
@ 2013-04-01 9:49 ` Jingoo Han
2013-04-01 9:50 ` [PATCH 25/27] rtc: rtc-sa1100: " Jingoo Han
` (2 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Jingoo Han @ 2013-04-01 9:49 UTC (permalink / raw)
To: 'Andrew Morton'
Cc: linux-kernel, 'Alessandro Zummo', rtc-linux,
'Jingoo Han'
Use devm_*() functions to make cleanup paths simpler.
Signed-off-by: Jingoo Han <jg1.han@samsung.com>
---
drivers/rtc/rtc-s35390a.c | 14 ++++++--------
1 files changed, 6 insertions(+), 8 deletions(-)
diff --git a/drivers/rtc/rtc-s35390a.c b/drivers/rtc/rtc-s35390a.c
index 8a09232..f40afdd 100644
--- a/drivers/rtc/rtc-s35390a.c
+++ b/drivers/rtc/rtc-s35390a.c
@@ -338,7 +338,8 @@ static int s35390a_probe(struct i2c_client *client,
goto exit;
}
- s35390a = kzalloc(sizeof(struct s35390a), GFP_KERNEL);
+ s35390a = devm_kzalloc(&client->dev, sizeof(struct s35390a),
+ GFP_KERNEL);
if (!s35390a) {
err = -ENOMEM;
goto exit;
@@ -386,8 +387,9 @@ static int s35390a_probe(struct i2c_client *client,
device_set_wakeup_capable(&client->dev, 1);
- s35390a->rtc = rtc_device_register(s35390a_driver.driver.name,
- &client->dev, &s35390a_rtc_ops, THIS_MODULE);
+ s35390a->rtc = devm_rtc_device_register(&client->dev,
+ s35390a_driver.driver.name,
+ &s35390a_rtc_ops, THIS_MODULE);
if (IS_ERR(s35390a->rtc)) {
err = PTR_ERR(s35390a->rtc);
@@ -399,7 +401,6 @@ exit_dummy:
for (i = 1; i < 8; ++i)
if (s35390a->client[i])
i2c_unregister_device(s35390a->client[i]);
- kfree(s35390a);
exit:
return err;
@@ -408,15 +409,12 @@ exit:
static int s35390a_remove(struct i2c_client *client)
{
unsigned int i;
-
struct s35390a *s35390a = i2c_get_clientdata(client);
+
for (i = 1; i < 8; ++i)
if (s35390a->client[i])
i2c_unregister_device(s35390a->client[i]);
- rtc_device_unregister(s35390a->rtc);
- kfree(s35390a);
-
return 0;
}
--
1.7.2.5
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH 25/27] rtc: rtc-sa1100: use devm_*() functions
2013-04-01 9:42 [PATCH 01/27] rtc: rtc-ab8500: use devm_*() functions Jingoo Han
` (22 preceding siblings ...)
2013-04-01 9:49 ` [PATCH 24/27] rtc: rtc-s35390a: " Jingoo Han
@ 2013-04-01 9:50 ` Jingoo Han
2013-04-01 9:50 ` [PATCH 26/27] rtc: rtc-stmp3xxx: " Jingoo Han
2013-04-01 9:50 ` [PATCH 27/27] rtc: rtc-v3020: " Jingoo Han
25 siblings, 0 replies; 27+ messages in thread
From: Jingoo Han @ 2013-04-01 9:50 UTC (permalink / raw)
To: 'Andrew Morton'
Cc: linux-kernel, 'Alessandro Zummo', rtc-linux,
'Jingoo Han'
Use devm_*() functions to make cleanup paths simpler.
Signed-off-by: Jingoo Han <jg1.han@samsung.com>
---
drivers/rtc/rtc-sa1100.c | 17 +++++------------
1 files changed, 5 insertions(+), 12 deletions(-)
diff --git a/drivers/rtc/rtc-sa1100.c b/drivers/rtc/rtc-sa1100.c
index 7e0a088..0060560 100644
--- a/drivers/rtc/rtc-sa1100.c
+++ b/drivers/rtc/rtc-sa1100.c
@@ -234,14 +234,13 @@ static int sa1100_rtc_probe(struct platform_device *pdev)
if (irq_1hz < 0 || irq_alarm < 0)
return -ENODEV;
- info = kzalloc(sizeof(struct sa1100_rtc), GFP_KERNEL);
+ info = devm_kzalloc(&pdev->dev, sizeof(struct sa1100_rtc), GFP_KERNEL);
if (!info)
return -ENOMEM;
- info->clk = clk_get(&pdev->dev, NULL);
+ info->clk = devm_clk_get(&pdev->dev, NULL);
if (IS_ERR(info->clk)) {
dev_err(&pdev->dev, "failed to find rtc clock source\n");
- ret = PTR_ERR(info->clk);
- goto err_clk;
+ return PTR_ERR(info->clk);
}
info->irq_1hz = irq_1hz;
info->irq_alarm = irq_alarm;
@@ -268,8 +267,8 @@ static int sa1100_rtc_probe(struct platform_device *pdev)
device_init_wakeup(&pdev->dev, 1);
- rtc = rtc_device_register(pdev->name, &pdev->dev, &sa1100_rtc_ops,
- THIS_MODULE);
+ rtc = devm_rtc_device_register(&pdev->dev, pdev->name, &sa1100_rtc_ops,
+ THIS_MODULE);
if (IS_ERR(rtc)) {
ret = PTR_ERR(rtc);
@@ -306,9 +305,6 @@ err_dev:
clk_disable_unprepare(info->clk);
err_enable_clk:
platform_set_drvdata(pdev, NULL);
- clk_put(info->clk);
-err_clk:
- kfree(info);
return ret;
}
@@ -317,11 +313,8 @@ static int sa1100_rtc_remove(struct platform_device *pdev)
struct sa1100_rtc *info = platform_get_drvdata(pdev);
if (info) {
- rtc_device_unregister(info->rtc);
clk_disable_unprepare(info->clk);
- clk_put(info->clk);
platform_set_drvdata(pdev, NULL);
- kfree(info);
}
return 0;
--
1.7.2.5
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH 26/27] rtc: rtc-stmp3xxx: use devm_*() functions
2013-04-01 9:42 [PATCH 01/27] rtc: rtc-ab8500: use devm_*() functions Jingoo Han
` (23 preceding siblings ...)
2013-04-01 9:50 ` [PATCH 25/27] rtc: rtc-sa1100: " Jingoo Han
@ 2013-04-01 9:50 ` Jingoo Han
2013-04-01 9:50 ` [PATCH 27/27] rtc: rtc-v3020: " Jingoo Han
25 siblings, 0 replies; 27+ messages in thread
From: Jingoo Han @ 2013-04-01 9:50 UTC (permalink / raw)
To: 'Andrew Morton'
Cc: linux-kernel, 'Alessandro Zummo', rtc-linux,
'Jingoo Han'
Use devm_*() functions to make cleanup paths simpler.
Signed-off-by: Jingoo Han <jg1.han@samsung.com>
---
drivers/rtc/rtc-stmp3xxx.c | 34 +++++++++++-----------------------
1 files changed, 11 insertions(+), 23 deletions(-)
diff --git a/drivers/rtc/rtc-stmp3xxx.c b/drivers/rtc/rtc-stmp3xxx.c
index 98f0d3c..0930f27 100644
--- a/drivers/rtc/rtc-stmp3xxx.c
+++ b/drivers/rtc/rtc-stmp3xxx.c
@@ -227,11 +227,7 @@ static int stmp3xxx_rtc_remove(struct platform_device *pdev)
writel(STMP3XXX_RTC_CTRL_ALARM_IRQ_EN,
rtc_data->io + STMP3XXX_RTC_CTRL_CLR);
- free_irq(rtc_data->irq_alarm, &pdev->dev);
- rtc_device_unregister(rtc_data->rtc);
platform_set_drvdata(pdev, NULL);
- iounmap(rtc_data->io);
- kfree(rtc_data);
return 0;
}
@@ -242,22 +238,20 @@ static int stmp3xxx_rtc_probe(struct platform_device *pdev)
struct resource *r;
int err;
- rtc_data = kzalloc(sizeof *rtc_data, GFP_KERNEL);
+ rtc_data = devm_kzalloc(&pdev->dev, sizeof(*rtc_data), GFP_KERNEL);
if (!rtc_data)
return -ENOMEM;
r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
if (!r) {
dev_err(&pdev->dev, "failed to get resource\n");
- err = -ENXIO;
- goto out_free;
+ return -ENXIO;
}
- rtc_data->io = ioremap(r->start, resource_size(r));
+ rtc_data->io = devm_ioremap(&pdev->dev, r->start, resource_size(r));
if (!rtc_data->io) {
dev_err(&pdev->dev, "ioremap failed\n");
- err = -EIO;
- goto out_free;
+ return -EIO;
}
rtc_data->irq_alarm = platform_get_irq(pdev, 0);
@@ -265,8 +259,7 @@ static int stmp3xxx_rtc_probe(struct platform_device *pdev)
if (!(readl(STMP3XXX_RTC_STAT + rtc_data->io) &
STMP3XXX_RTC_STAT_RTC_PRESENT)) {
dev_err(&pdev->dev, "no device onboard\n");
- err = -ENODEV;
- goto out_remap;
+ return -ENODEV;
}
platform_set_drvdata(pdev, rtc_data);
@@ -281,31 +274,26 @@ static int stmp3xxx_rtc_probe(struct platform_device *pdev)
STMP3XXX_RTC_CTRL_ALARM_IRQ_EN,
rtc_data->io + STMP3XXX_RTC_CTRL_CLR);
- rtc_data->rtc = rtc_device_register(pdev->name, &pdev->dev,
+ rtc_data->rtc = devm_rtc_device_register(&pdev->dev, pdev->name,
&stmp3xxx_rtc_ops, THIS_MODULE);
if (IS_ERR(rtc_data->rtc)) {
err = PTR_ERR(rtc_data->rtc);
- goto out_remap;
+ goto out;
}
- err = request_irq(rtc_data->irq_alarm, stmp3xxx_rtc_interrupt, 0,
- "RTC alarm", &pdev->dev);
+ err = devm_request_irq(&pdev->dev, rtc_data->irq_alarm,
+ stmp3xxx_rtc_interrupt, 0, "RTC alarm", &pdev->dev);
if (err) {
dev_err(&pdev->dev, "Cannot claim IRQ%d\n",
rtc_data->irq_alarm);
- goto out_irq_alarm;
+ goto out;
}
stmp3xxx_wdt_register(pdev);
return 0;
-out_irq_alarm:
- rtc_device_unregister(rtc_data->rtc);
-out_remap:
+out:
platform_set_drvdata(pdev, NULL);
- iounmap(rtc_data->io);
-out_free:
- kfree(rtc_data);
return err;
}
--
1.7.2.5
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH 27/27] rtc: rtc-v3020: use devm_*() functions
2013-04-01 9:42 [PATCH 01/27] rtc: rtc-ab8500: use devm_*() functions Jingoo Han
` (24 preceding siblings ...)
2013-04-01 9:50 ` [PATCH 26/27] rtc: rtc-stmp3xxx: " Jingoo Han
@ 2013-04-01 9:50 ` Jingoo Han
25 siblings, 0 replies; 27+ messages in thread
From: Jingoo Han @ 2013-04-01 9:50 UTC (permalink / raw)
To: 'Andrew Morton'
Cc: linux-kernel, 'Alessandro Zummo', rtc-linux,
'Jingoo Han'
Use devm_*() functions to make cleanup paths simpler.
Signed-off-by: Jingoo Han <jg1.han@samsung.com>
---
drivers/rtc/rtc-v3020.c | 13 +++----------
1 files changed, 3 insertions(+), 10 deletions(-)
diff --git a/drivers/rtc/rtc-v3020.c b/drivers/rtc/rtc-v3020.c
index 600798c..d87878e 100644
--- a/drivers/rtc/rtc-v3020.c
+++ b/drivers/rtc/rtc-v3020.c
@@ -296,7 +296,7 @@ static int rtc_probe(struct platform_device *pdev)
int i;
int temp;
- chip = kzalloc(sizeof *chip, GFP_KERNEL);
+ chip = devm_kzalloc(&pdev->dev, sizeof(*chip), GFP_KERNEL);
if (!chip)
return -ENOMEM;
@@ -340,8 +340,8 @@ static int rtc_probe(struct platform_device *pdev)
platform_set_drvdata(pdev, chip);
- chip->rtc = rtc_device_register("v3020",
- &pdev->dev, &v3020_rtc_ops, THIS_MODULE);
+ chip->rtc = devm_rtc_device_register(&pdev->dev, "v3020",
+ &v3020_rtc_ops, THIS_MODULE);
if (IS_ERR(chip->rtc)) {
retval = PTR_ERR(chip->rtc);
goto err_io;
@@ -352,21 +352,14 @@ static int rtc_probe(struct platform_device *pdev)
err_io:
chip->ops->unmap_io(chip);
err_chip:
- kfree(chip);
-
return retval;
}
static int rtc_remove(struct platform_device *dev)
{
struct v3020 *chip = platform_get_drvdata(dev);
- struct rtc_device *rtc = chip->rtc;
-
- if (rtc)
- rtc_device_unregister(rtc);
chip->ops->unmap_io(chip);
- kfree(chip);
return 0;
}
--
1.7.2.5
^ permalink raw reply related [flat|nested] 27+ messages in thread
end of thread, other threads:[~2013-04-01 9:50 UTC | newest]
Thread overview: 27+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-04-01 9:42 [PATCH 01/27] rtc: rtc-ab8500: use devm_*() functions Jingoo Han
2013-04-01 9:42 ` [PATCH 02/27] rtc: rtc-at91sam9: " Jingoo Han
2013-04-01 9:43 ` [PATCH 03/27] rtc: rtc-bfin: " Jingoo Han
2013-04-01 9:43 ` [PATCH 04/27] rtc: rtc-bq4802: " Jingoo Han
2013-04-01 9:43 ` [PATCH 05/27] rtc: rtc-ds1216: " Jingoo Han
2013-04-01 9:44 ` [PATCH 06/27] rtc: rtc-ds1286: " Jingoo Han
2013-04-01 9:44 ` [PATCH 07/27] rtc: rtc-ds1390: " Jingoo Han
2013-04-01 9:44 ` [PATCH 08/27] rtc: rtc-ds2404: " Jingoo Han
2013-04-01 9:45 ` [PATCH 09/27] rtc: rtc-fm3130: " Jingoo Han
2013-04-01 9:45 ` [PATCH 10/27] rtc: rtc-isl12022: " Jingoo Han
2013-04-01 9:45 ` [PATCH 11/27] rtc: rtc-m41t80: " Jingoo Han
2013-04-01 9:46 ` [PATCH 12/27] rtc: rtc-max8998: " Jingoo Han
2013-04-01 9:46 ` [PATCH 13/27] rtc: rtc-mc13xxx: " Jingoo Han
2013-04-01 9:46 ` [PATCH 14/27] rtc: rtc-msm6242: " Jingoo Han
2013-04-01 9:47 ` [PATCH 15/27] rtc: rtc-nuc900: " Jingoo Han
2013-04-01 9:47 ` [PATCH 16/27] rtc: rtc-pcap: " Jingoo Han
2013-04-01 9:47 ` [PATCH 17/27] rtc: rtc-pcf2123: " Jingoo Han
2013-04-01 9:48 ` [PATCH 18/27] rtc: rtc-pcf50633: " Jingoo Han
2013-04-01 9:48 ` [PATCH 19/27] rtc: rtc-pcf8563: " Jingoo Han
2013-04-01 9:48 ` [PATCH 20/27] rtc: rtc-pcf8583: " Jingoo Han
2013-04-01 9:48 ` [PATCH 21/27] rtc: rtc-rp5c01: " Jingoo Han
2013-04-01 9:49 ` [PATCH 22/27] rtc: rtc-rs5c348: " Jingoo Han
2013-04-01 9:49 ` [PATCH 23/27] rtc: rtc-rs5c372: " Jingoo Han
2013-04-01 9:49 ` [PATCH 24/27] rtc: rtc-s35390a: " Jingoo Han
2013-04-01 9:50 ` [PATCH 25/27] rtc: rtc-sa1100: " Jingoo Han
2013-04-01 9:50 ` [PATCH 26/27] rtc: rtc-stmp3xxx: " Jingoo Han
2013-04-01 9:50 ` [PATCH 27/27] rtc: rtc-v3020: " Jingoo Han
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox