aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/rtc/hctosys.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/rtc/hctosys.c')
-rw-r--r--drivers/rtc/hctosys.c18
1 files changed, 5 insertions, 13 deletions
diff --git a/drivers/rtc/hctosys.c b/drivers/rtc/hctosys.c
index 4aa60d74004e..6c719f23520a 100644
--- a/drivers/rtc/hctosys.c
+++ b/drivers/rtc/hctosys.c
@@ -26,7 +26,7 @@ static int __init rtc_hctosys(void)
26{ 26{
27 int err = -ENODEV; 27 int err = -ENODEV;
28 struct rtc_time tm; 28 struct rtc_time tm;
29 struct timespec tv = { 29 struct timespec64 tv64 = {
30 .tv_nsec = NSEC_PER_SEC >> 1, 30 .tv_nsec = NSEC_PER_SEC >> 1,
31 }; 31 };
32 struct rtc_device *rtc = rtc_class_open(CONFIG_RTC_HCTOSYS_DEVICE); 32 struct rtc_device *rtc = rtc_class_open(CONFIG_RTC_HCTOSYS_DEVICE);
@@ -45,25 +45,17 @@ static int __init rtc_hctosys(void)
45 45
46 } 46 }
47 47
48 err = rtc_valid_tm(&tm); 48 tv64.tv_sec = rtc_tm_to_time64(&tm);
49 if (err) {
50 dev_err(rtc->dev.parent,
51 "hctosys: invalid date/time\n");
52 goto err_invalid;
53 }
54
55 rtc_tm_to_time(&tm, &tv.tv_sec);
56 49
57 err = do_settimeofday(&tv); 50 err = do_settimeofday64(&tv64);
58 51
59 dev_info(rtc->dev.parent, 52 dev_info(rtc->dev.parent,
60 "setting system clock to " 53 "setting system clock to "
61 "%d-%02d-%02d %02d:%02d:%02d UTC (%u)\n", 54 "%d-%02d-%02d %02d:%02d:%02d UTC (%lld)\n",
62 tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday, 55 tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday,
63 tm.tm_hour, tm.tm_min, tm.tm_sec, 56 tm.tm_hour, tm.tm_min, tm.tm_sec,
64 (unsigned int) tv.tv_sec); 57 (long long) tv64.tv_sec);
65 58
66err_invalid:
67err_read: 59err_read:
68 rtc_class_close(rtc); 60 rtc_class_close(rtc);
69 61