diff options
Diffstat (limited to 'drivers/rtc/rtc-davinci.c')
-rw-r--r-- | drivers/rtc/rtc-davinci.c | 24 |
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 | ||
560 | fail2: | ||
561 | rtc_device_unregister(davinci_rtc->rtc); | ||
562 | fail1: | 560 | fail1: |
563 | platform_set_drvdata(pdev, NULL); | 561 | platform_set_drvdata(pdev, NULL); |
564 | return ret; | 562 | return ret; |
565 | } | 563 | } |
566 | 564 | ||
567 | static int davinci_rtc_remove(struct platform_device *pdev) | 565 | static 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 | ||
582 | static struct platform_driver davinci_rtc_driver = { | 578 | static 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 | ||
591 | static int __init rtc_init(void) | 587 | module_platform_driver_probe(davinci_rtc_driver, davinci_rtc_probe); |
592 | { | ||
593 | return platform_driver_probe(&davinci_rtc_driver, davinci_rtc_probe); | ||
594 | } | ||
595 | module_init(rtc_init); | ||
596 | |||
597 | static void __exit rtc_exit(void) | ||
598 | { | ||
599 | platform_driver_unregister(&davinci_rtc_driver); | ||
600 | } | ||
601 | module_exit(rtc_exit); | ||
602 | 588 | ||
603 | MODULE_AUTHOR("Miguel Aguilar <miguel.aguilar@ridgerun.com>"); | 589 | MODULE_AUTHOR("Miguel Aguilar <miguel.aguilar@ridgerun.com>"); |
604 | MODULE_DESCRIPTION("Texas Instruments DaVinci PRTC Driver"); | 590 | MODULE_DESCRIPTION("Texas Instruments DaVinci PRTC Driver"); |