]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - drivers/rtc/rtc-snvs.c
Merge tag 'iomap-5.4-merge-6' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux
[linux.git] / drivers / rtc / rtc-snvs.c
index 7ee673a25fd0a10f72213e8aec6d787b322b114a..757f4daa7181a915c711a16794dced0e9bbf3011 100644 (file)
@@ -151,7 +151,7 @@ static int snvs_rtc_read_time(struct device *dev, struct rtc_time *tm)
        struct snvs_rtc_data *data = dev_get_drvdata(dev);
        unsigned long time = rtc_read_lp_counter(data);
 
-       rtc_time_to_tm(time, tm);
+       rtc_time64_to_tm(time, tm);
 
        return 0;
 }
@@ -159,11 +159,9 @@ static int snvs_rtc_read_time(struct device *dev, struct rtc_time *tm)
 static int snvs_rtc_set_time(struct device *dev, struct rtc_time *tm)
 {
        struct snvs_rtc_data *data = dev_get_drvdata(dev);
-       unsigned long time;
+       unsigned long time = rtc_tm_to_time64(tm);
        int ret;
 
-       rtc_tm_to_time(tm, &time);
-
        /* Disable RTC first */
        ret = snvs_rtc_enable(data, false);
        if (ret)
@@ -185,7 +183,7 @@ static int snvs_rtc_read_alarm(struct device *dev, struct rtc_wkalrm *alrm)
        u32 lptar, lpsr;
 
        regmap_read(data->regmap, data->offset + SNVS_LPTAR, &lptar);
-       rtc_time_to_tm(lptar, &alrm->time);
+       rtc_time64_to_tm(lptar, &alrm->time);
 
        regmap_read(data->regmap, data->offset + SNVS_LPSR, &lpsr);
        alrm->pending = (lpsr & SNVS_LPSR_LPTA) ? 1 : 0;
@@ -207,12 +205,9 @@ static int snvs_rtc_alarm_irq_enable(struct device *dev, unsigned int enable)
 static int snvs_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alrm)
 {
        struct snvs_rtc_data *data = dev_get_drvdata(dev);
-       struct rtc_time *alrm_tm = &alrm->time;
-       unsigned long time;
+       unsigned long time = rtc_tm_to_time64(&alrm->time);
        int ret;
 
-       rtc_tm_to_time(alrm_tm, &time);
-
        regmap_update_bits(data->regmap, data->offset + SNVS_LPCR, SNVS_LPCR_LPTA_EN, 0);
        ret = rtc_write_sync_lp(data);
        if (ret)
@@ -279,6 +274,10 @@ static int snvs_rtc_probe(struct platform_device *pdev)
        if (!data)
                return -ENOMEM;
 
+       data->rtc = devm_rtc_allocate_device(&pdev->dev);
+       if (IS_ERR(data->rtc))
+               return PTR_ERR(data->rtc);
+
        data->regmap = syscon_regmap_lookup_by_phandle(pdev->dev.of_node, "regmap");
 
        if (IS_ERR(data->regmap)) {
@@ -343,10 +342,10 @@ static int snvs_rtc_probe(struct platform_device *pdev)
                goto error_rtc_device_register;
        }
 
-       data->rtc = devm_rtc_device_register(&pdev->dev, pdev->name,
-                                       &snvs_rtc_ops, THIS_MODULE);
-       if (IS_ERR(data->rtc)) {
-               ret = PTR_ERR(data->rtc);
+       data->rtc->ops = &snvs_rtc_ops;
+       data->rtc->range_max = U32_MAX;
+       ret = rtc_register_device(data->rtc);
+       if (ret) {
                dev_err(&pdev->dev, "failed to register rtc: %d\n", ret);
                goto error_rtc_device_register;
        }