platform_set_drvdata(pdev, davinci_rtc);
 
-       davinci_rtc->rtc = rtc_device_register(pdev->name, &pdev->dev,
+       davinci_rtc->rtc = devm_rtc_device_register(&pdev->dev, pdev->name,
                                    &davinci_rtc_ops, THIS_MODULE);
        if (IS_ERR(davinci_rtc->rtc)) {
                ret = PTR_ERR(davinci_rtc->rtc);
                          0, "davinci_rtc", davinci_rtc);
        if (ret < 0) {
                dev_err(dev, "unable to register davinci RTC interrupt\n");
-               goto fail2;
+               goto fail1;
        }
 
        /* Enable interrupts */
 
        return 0;
 
-fail2:
-       rtc_device_unregister(davinci_rtc->rtc);
 fail1:
        platform_set_drvdata(pdev, NULL);
        return ret;
 
        rtcif_write(davinci_rtc, 0, PRTCIF_INTEN);
 
-       rtc_device_unregister(davinci_rtc->rtc);
-
        platform_set_drvdata(pdev, NULL);
 
        return 0;