diff options
author | Sachin Kamat <sachin.kamat@linaro.org> | 2013-11-12 18:10:29 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-11-12 22:09:27 -0500 |
commit | f3766250b2e9f2920c3c9ef9821827ac82fa7a84 (patch) | |
tree | 58ebedf4443ec6485bbb8921817cad4f932c7809 /drivers/rtc | |
parent | 58f27d7d061b47f57c84cad7d9af239c6bc6977e (diff) |
drivers/rtc/rtc-at91rm9200.c: use devm_* APIs
devm_* APIs are device managed and make code simpler.
Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Cc: 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')
-rw-r--r-- | drivers/rtc/rtc-at91rm9200.c | 28 |
1 files changed, 7 insertions, 21 deletions
diff --git a/drivers/rtc/rtc-at91rm9200.c b/drivers/rtc/rtc-at91rm9200.c index 741892632ae0..8b2cd8a5a2ff 100644 --- a/drivers/rtc/rtc-at91rm9200.c +++ b/drivers/rtc/rtc-at91rm9200.c | |||
@@ -376,7 +376,8 @@ static int __init at91_rtc_probe(struct platform_device *pdev) | |||
376 | return -ENXIO; | 376 | return -ENXIO; |
377 | } | 377 | } |
378 | 378 | ||
379 | at91_rtc_regs = ioremap(regs->start, resource_size(regs)); | 379 | at91_rtc_regs = devm_ioremap(&pdev->dev, regs->start, |
380 | resource_size(regs)); | ||
380 | if (!at91_rtc_regs) { | 381 | if (!at91_rtc_regs) { |
381 | dev_err(&pdev->dev, "failed to map registers, aborting.\n"); | 382 | dev_err(&pdev->dev, "failed to map registers, aborting.\n"); |
382 | return -ENOMEM; | 383 | return -ENOMEM; |
@@ -390,12 +391,12 @@ static int __init at91_rtc_probe(struct platform_device *pdev) | |||
390 | AT91_RTC_SECEV | AT91_RTC_TIMEV | | 391 | AT91_RTC_SECEV | AT91_RTC_TIMEV | |
391 | AT91_RTC_CALEV); | 392 | AT91_RTC_CALEV); |
392 | 393 | ||
393 | ret = request_irq(irq, at91_rtc_interrupt, | 394 | ret = devm_request_irq(&pdev->dev, irq, at91_rtc_interrupt, |
394 | IRQF_SHARED, | 395 | IRQF_SHARED, |
395 | "at91_rtc", pdev); | 396 | "at91_rtc", pdev); |
396 | if (ret) { | 397 | if (ret) { |
397 | dev_err(&pdev->dev, "IRQ %d already in use.\n", irq); | 398 | dev_err(&pdev->dev, "IRQ %d already in use.\n", irq); |
398 | goto err_unmap; | 399 | return ret; |
399 | } | 400 | } |
400 | 401 | ||
401 | /* cpu init code should really have flagged this device as | 402 | /* cpu init code should really have flagged this device as |
@@ -404,23 +405,14 @@ static int __init at91_rtc_probe(struct platform_device *pdev) | |||
404 | if (!device_can_wakeup(&pdev->dev)) | 405 | if (!device_can_wakeup(&pdev->dev)) |
405 | device_init_wakeup(&pdev->dev, 1); | 406 | device_init_wakeup(&pdev->dev, 1); |
406 | 407 | ||
407 | rtc = rtc_device_register(pdev->name, &pdev->dev, | 408 | rtc = devm_rtc_device_register(&pdev->dev, pdev->name, |
408 | &at91_rtc_ops, THIS_MODULE); | 409 | &at91_rtc_ops, THIS_MODULE); |
409 | if (IS_ERR(rtc)) { | 410 | if (IS_ERR(rtc)) |
410 | ret = PTR_ERR(rtc); | 411 | return PTR_ERR(rtc); |
411 | goto err_free_irq; | ||
412 | } | ||
413 | platform_set_drvdata(pdev, rtc); | 412 | platform_set_drvdata(pdev, rtc); |
414 | 413 | ||
415 | dev_info(&pdev->dev, "AT91 Real Time Clock driver.\n"); | 414 | dev_info(&pdev->dev, "AT91 Real Time Clock driver.\n"); |
416 | return 0; | 415 | return 0; |
417 | |||
418 | err_free_irq: | ||
419 | free_irq(irq, pdev); | ||
420 | err_unmap: | ||
421 | iounmap(at91_rtc_regs); | ||
422 | |||
423 | return ret; | ||
424 | } | 416 | } |
425 | 417 | ||
426 | /* | 418 | /* |
@@ -428,16 +420,10 @@ err_unmap: | |||
428 | */ | 420 | */ |
429 | static int __exit at91_rtc_remove(struct platform_device *pdev) | 421 | static int __exit at91_rtc_remove(struct platform_device *pdev) |
430 | { | 422 | { |
431 | struct rtc_device *rtc = platform_get_drvdata(pdev); | ||
432 | |||
433 | /* Disable all interrupts */ | 423 | /* Disable all interrupts */ |
434 | at91_rtc_write_idr(AT91_RTC_ACKUPD | AT91_RTC_ALARM | | 424 | at91_rtc_write_idr(AT91_RTC_ACKUPD | AT91_RTC_ALARM | |
435 | AT91_RTC_SECEV | AT91_RTC_TIMEV | | 425 | AT91_RTC_SECEV | AT91_RTC_TIMEV | |
436 | AT91_RTC_CALEV); | 426 | AT91_RTC_CALEV); |
437 | free_irq(irq, pdev); | ||
438 | |||
439 | rtc_device_unregister(rtc); | ||
440 | iounmap(at91_rtc_regs); | ||
441 | 427 | ||
442 | return 0; | 428 | return 0; |
443 | } | 429 | } |