diff options
author | Rodrigo Vivi <rodrigo.vivi@intel.com> | 2018-07-23 09:13:12 -0700 |
---|---|---|
committer | Rodrigo Vivi <rodrigo.vivi@intel.com> | 2018-07-23 09:13:12 -0700 |
commit | c74a7469f97c0f40b46e82ee979f9fb1bb6e847c (patch) | |
tree | f2690a1a916b73ef94657fbf0e0141ae57701825 /drivers/rtc/rtc-ls1x.c | |
parent | 6f15a7de86c8cf2dc09fc9e6d07047efa40ef809 (diff) | |
parent | 500775074f88d9cf5416bed2ca19592812d62c41 (diff) |
Merge drm/drm-next into drm-intel-next-queued
We need a backmerge to get DP_DPCD_REV_14 before we push other
i915 changes to dinq that could break compilation.
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Diffstat (limited to 'drivers/rtc/rtc-ls1x.c')
-rw-r--r-- | drivers/rtc/rtc-ls1x.c | 32 |
1 files changed, 15 insertions, 17 deletions
diff --git a/drivers/rtc/rtc-ls1x.c b/drivers/rtc/rtc-ls1x.c index 045af1135e48..f4c248655edd 100644 --- a/drivers/rtc/rtc-ls1x.c +++ b/drivers/rtc/rtc-ls1x.c @@ -87,16 +87,17 @@ static int ls1x_rtc_read_time(struct device *dev, struct rtc_time *rtm) { - unsigned long v, t; + unsigned long v; + time64_t t; v = readl(SYS_TOYREAD0); t = readl(SYS_TOYREAD1); memset(rtm, 0, sizeof(struct rtc_time)); - t = mktime((t & LS1X_YEAR_MASK), ls1x_get_month(v), + t = mktime64((t & LS1X_YEAR_MASK), ls1x_get_month(v), ls1x_get_day(v), ls1x_get_hour(v), ls1x_get_min(v), ls1x_get_sec(v)); - rtc_time_to_tm(t, rtm); + rtc_time64_to_tm(t, rtm); return 0; } @@ -147,15 +148,13 @@ static int ls1x_rtc_probe(struct platform_device *pdev) { struct rtc_device *rtcdev; unsigned long v; - int ret; v = readl(SYS_COUNTER_CNTRL); if (!(v & RTC_CNTR_OK)) { dev_err(&pdev->dev, "rtc counters not working\n"); - ret = -ENODEV; - goto err; + return -ENODEV; } - ret = -ETIMEDOUT; + /* set to 1 HZ if needed */ if (readl(SYS_TOYTRIM) != 32767) { v = 0x100000; @@ -164,7 +163,7 @@ static int ls1x_rtc_probe(struct platform_device *pdev) if (!v) { dev_err(&pdev->dev, "time out\n"); - goto err; + return -ETIMEDOUT; } writel(32767, SYS_TOYTRIM); } @@ -172,17 +171,16 @@ static int ls1x_rtc_probe(struct platform_device *pdev) while (readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_TTS) usleep_range(1000, 3000); - rtcdev = devm_rtc_device_register(&pdev->dev, "ls1x-rtc", - &ls1x_rtc_ops , THIS_MODULE); - if (IS_ERR(rtcdev)) { - ret = PTR_ERR(rtcdev); - goto err; - } + rtcdev = devm_rtc_allocate_device(&pdev->dev); + if (IS_ERR(rtcdev)) + return PTR_ERR(rtcdev); platform_set_drvdata(pdev, rtcdev); - return 0; -err: - return ret; + rtcdev->ops = &ls1x_rtc_ops; + rtcdev->range_min = RTC_TIMESTAMP_BEGIN_1900; + rtcdev->range_max = RTC_TIMESTAMP_END_2099; + + return rtc_register_device(rtcdev); } static struct platform_driver ls1x_rtc_driver = { |