aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/rtc/rtc-davinci.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/rtc/rtc-davinci.c')
-rw-r--r--drivers/rtc/rtc-davinci.c24
1 files changed, 5 insertions, 19 deletions
diff --git a/drivers/rtc/rtc-davinci.c b/drivers/rtc/rtc-davinci.c
index 56b73089bb29..a55048c3e26f 100644
--- a/drivers/rtc/rtc-davinci.c
+++ b/drivers/rtc/rtc-davinci.c
@@ -523,7 +523,7 @@ static int __init davinci_rtc_probe(struct platform_device *pdev)
523 523
524 platform_set_drvdata(pdev, davinci_rtc); 524 platform_set_drvdata(pdev, davinci_rtc);
525 525
526 davinci_rtc->rtc = rtc_device_register(pdev->name, &pdev->dev, 526 davinci_rtc->rtc = devm_rtc_device_register(&pdev->dev, pdev->name,
527 &davinci_rtc_ops, THIS_MODULE); 527 &davinci_rtc_ops, THIS_MODULE);
528 if (IS_ERR(davinci_rtc->rtc)) { 528 if (IS_ERR(davinci_rtc->rtc)) {
529 ret = PTR_ERR(davinci_rtc->rtc); 529 ret = PTR_ERR(davinci_rtc->rtc);
@@ -543,7 +543,7 @@ static int __init davinci_rtc_probe(struct platform_device *pdev)
543 0, "davinci_rtc", davinci_rtc); 543 0, "davinci_rtc", davinci_rtc);
544 if (ret < 0) { 544 if (ret < 0) {
545 dev_err(dev, "unable to register davinci RTC interrupt\n"); 545 dev_err(dev, "unable to register davinci RTC interrupt\n");
546 goto fail2; 546 goto fail1;
547 } 547 }
548 548
549 /* Enable interrupts */ 549 /* Enable interrupts */
@@ -557,14 +557,12 @@ static int __init davinci_rtc_probe(struct platform_device *pdev)
557 557
558 return 0; 558 return 0;
559 559
560fail2:
561 rtc_device_unregister(davinci_rtc->rtc);
562fail1: 560fail1:
563 platform_set_drvdata(pdev, NULL); 561 platform_set_drvdata(pdev, NULL);
564 return ret; 562 return ret;
565} 563}
566 564
567static int davinci_rtc_remove(struct platform_device *pdev) 565static int __exit davinci_rtc_remove(struct platform_device *pdev)
568{ 566{
569 struct davinci_rtc *davinci_rtc = platform_get_drvdata(pdev); 567 struct davinci_rtc *davinci_rtc = platform_get_drvdata(pdev);
570 568
@@ -572,8 +570,6 @@ static int davinci_rtc_remove(struct platform_device *pdev)
572 570
573 rtcif_write(davinci_rtc, 0, PRTCIF_INTEN); 571 rtcif_write(davinci_rtc, 0, PRTCIF_INTEN);
574 572
575 rtc_device_unregister(davinci_rtc->rtc);
576
577 platform_set_drvdata(pdev, NULL); 573 platform_set_drvdata(pdev, NULL);
578 574
579 return 0; 575 return 0;
@@ -581,24 +577,14 @@ static int davinci_rtc_remove(struct platform_device *pdev)
581 577
582static struct platform_driver davinci_rtc_driver = { 578static struct platform_driver davinci_rtc_driver = {
583 .probe = davinci_rtc_probe, 579 .probe = davinci_rtc_probe,
584 .remove = davinci_rtc_remove, 580 .remove = __exit_p(davinci_rtc_remove),
585 .driver = { 581 .driver = {
586 .name = "rtc_davinci", 582 .name = "rtc_davinci",
587 .owner = THIS_MODULE, 583 .owner = THIS_MODULE,
588 }, 584 },
589}; 585};
590 586
591static int __init rtc_init(void) 587module_platform_driver_probe(davinci_rtc_driver, davinci_rtc_probe);
592{
593 return platform_driver_probe(&davinci_rtc_driver, davinci_rtc_probe);
594}
595module_init(rtc_init);
596
597static void __exit rtc_exit(void)
598{
599 platform_driver_unregister(&davinci_rtc_driver);
600}
601module_exit(rtc_exit);
602 588
603MODULE_AUTHOR("Miguel Aguilar <miguel.aguilar@ridgerun.com>"); 589MODULE_AUTHOR("Miguel Aguilar <miguel.aguilar@ridgerun.com>");
604MODULE_DESCRIPTION("Texas Instruments DaVinci PRTC Driver"); 590MODULE_DESCRIPTION("Texas Instruments DaVinci PRTC Driver");