]> git.proxmox.com Git - mirror_ubuntu-eoan-kernel.git/blobdiff - drivers/rtc/rtc-mxc_v2.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid
[mirror_ubuntu-eoan-kernel.git] / drivers / rtc / rtc-mxc_v2.c
index 9e14efb990b24d6873d3499ed582116b60092c5a..c75f26dc8fcc461a1180e86dda0331dfc5e6ac86 100644 (file)
@@ -165,11 +165,6 @@ static int mxc_rtc_set_time(struct device *dev, struct rtc_time *tm)
        time64_t time = rtc_tm_to_time64(tm);
        int ret;
 
-       if (time > U32_MAX) {
-               dev_err(dev, "RTC exceeded by %llus\n", time - U32_MAX);
-               return -EINVAL;
-       }
-
        ret = mxc_rtc_lock(pdata);
        if (ret)
                return ret;
@@ -198,7 +193,7 @@ static int mxc_rtc_read_alarm(struct device *dev, struct rtc_wkalrm *alrm)
        if (ret)
                return ret;
 
-       rtc_time_to_tm(readl(ioaddr + SRTC_LPSAR), &alrm->time);
+       rtc_time64_to_tm(readl(ioaddr + SRTC_LPSAR), &alrm->time);
        alrm->pending = !!(readl(ioaddr + SRTC_LPSR) & SRTC_LPSR_ALP);
        return mxc_rtc_unlock(pdata);
 }
@@ -248,11 +243,6 @@ static int mxc_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alrm)
        if (ret)
                return ret;
 
-       if (time > U32_MAX) {
-               dev_err(dev, "Hopefully I am out of service by then :-(\n");
-               return -EINVAL;
-       }
-
        writel((u32)time, pdata->ioaddr + SRTC_LPSAR);
 
        /* clear alarm interrupt status bit */
@@ -343,6 +333,13 @@ static int mxc_rtc_probe(struct platform_device *pdev)
                return ret;
        }
 
+       pdata->rtc = devm_rtc_allocate_device(&pdev->dev);
+       if (IS_ERR(pdata->rtc))
+               return PTR_ERR(pdata->rtc);
+
+       pdata->rtc->ops = &mxc_rtc_ops;
+       pdata->rtc->range_max = U32_MAX;
+
        clk_disable(pdata->clk);
        platform_set_drvdata(pdev, pdata);
        ret =
@@ -354,15 +351,11 @@ static int mxc_rtc_probe(struct platform_device *pdev)
                return ret;
        }
 
-       pdata->rtc =
-           devm_rtc_device_register(&pdev->dev, pdev->name, &mxc_rtc_ops,
-                                    THIS_MODULE);
-       if (IS_ERR(pdata->rtc)) {
+       ret = rtc_register_device(pdata->rtc);
+       if (ret < 0)
                clk_unprepare(pdata->clk);
-               return PTR_ERR(pdata->rtc);
-       }
 
-       return 0;
+       return ret;
 }
 
 static int mxc_rtc_remove(struct platform_device *pdev)