return -ENODEV;
 
        platform_set_drvdata(pdev, rtc);
-       rtc->rtc_dev = devm_rtc_device_register(dev, "cpcap_rtc",
-                                               &cpcap_rtc_ops, THIS_MODULE);
-
+       rtc->rtc_dev = devm_rtc_allocate_device(dev);
        if (IS_ERR(rtc->rtc_dev))
                return PTR_ERR(rtc->rtc_dev);
 
+       rtc->rtc_dev->ops = &cpcap_rtc_ops;
+
        err = cpcap_get_vendor(dev, rtc->regmap, &rtc->vendor);
        if (err)
                return err;
                /* ignore error and continue without wakeup support */
        }
 
-       return 0;
+       return rtc_register_device(rtc->rtc_dev);
 }
 
 static const struct of_device_id cpcap_rtc_of_match[] = {