aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/rtc/rtc-pcf50633.c
diff options
context:
space:
mode:
authorJingoo Han <jg1.han@samsung.com>2013-04-29 19:20:48 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2013-04-29 21:28:38 -0400
commit76753caf7080a0ea28ac1567c919afe5ab2e0e79 (patch)
treea885e06e3c3c4d3cbb32ce654dfbcbf21f120146 /drivers/rtc/rtc-pcf50633.c
parentdd48ccc491c3c327bef12e4d07bfa4d4266be3b9 (diff)
rtc: rtc-pcf50633: use devm_*() functions
Use devm_*() functions to make cleanup paths simpler. Signed-off-by: Jingoo Han <jg1.han@samsung.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/rtc/rtc-pcf50633.c')
-rw-r--r--drivers/rtc/rtc-pcf50633.c15
1 files changed, 4 insertions, 11 deletions
diff --git a/drivers/rtc/rtc-pcf50633.c b/drivers/rtc/rtc-pcf50633.c
index e9f3135d305f..e6b6911c8e05 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)
252{ 252{
253 struct pcf50633_rtc *rtc; 253 struct pcf50633_rtc *rtc;
254 254
255 rtc = kzalloc(sizeof(*rtc), GFP_KERNEL); 255 rtc = devm_kzalloc(&pdev->dev, sizeof(*rtc), GFP_KERNEL);
256 if (!rtc) 256 if (!rtc)
257 return -ENOMEM; 257 return -ENOMEM;
258 258
259 rtc->pcf = dev_to_pcf50633(pdev->dev.parent); 259 rtc->pcf = dev_to_pcf50633(pdev->dev.parent);
260 platform_set_drvdata(pdev, rtc); 260 platform_set_drvdata(pdev, rtc);
261 rtc->rtc_dev = rtc_device_register("pcf50633-rtc", &pdev->dev, 261 rtc->rtc_dev = devm_rtc_device_register(&pdev->dev, "pcf50633-rtc",
262 &pcf50633_rtc_ops, THIS_MODULE); 262 &pcf50633_rtc_ops, THIS_MODULE);
263 263
264 if (IS_ERR(rtc->rtc_dev)) { 264 if (IS_ERR(rtc->rtc_dev))
265 int ret = PTR_ERR(rtc->rtc_dev); 265 return PTR_ERR(rtc->rtc_dev);
266 kfree(rtc);
267 return ret;
268 }
269 266
270 pcf50633_register_irq(rtc->pcf, PCF50633_IRQ_ALARM, 267 pcf50633_register_irq(rtc->pcf, PCF50633_IRQ_ALARM,
271 pcf50633_rtc_irq, rtc); 268 pcf50633_rtc_irq, rtc);
@@ -277,12 +274,8 @@ static int pcf50633_rtc_remove(struct platform_device *pdev)
277 struct pcf50633_rtc *rtc; 274 struct pcf50633_rtc *rtc;
278 275
279 rtc = platform_get_drvdata(pdev); 276 rtc = platform_get_drvdata(pdev);
280
281 pcf50633_free_irq(rtc->pcf, PCF50633_IRQ_ALARM); 277 pcf50633_free_irq(rtc->pcf, PCF50633_IRQ_ALARM);
282 278
283 rtc_device_unregister(rtc->rtc_dev);
284 kfree(rtc);
285
286 return 0; 279 return 0;
287} 280}
288 281