diff options
Diffstat (limited to 'drivers/rtc')
-rw-r--r-- | drivers/rtc/interface.c | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/drivers/rtc/interface.c b/drivers/rtc/interface.c index 45bfc28ee3aa..37215cf983e9 100644 --- a/drivers/rtc/interface.c +++ b/drivers/rtc/interface.c | |||
@@ -73,10 +73,8 @@ int rtc_set_time(struct rtc_device *rtc, struct rtc_time *tm) | |||
73 | else if (rtc->ops->set_time) | 73 | else if (rtc->ops->set_time) |
74 | err = rtc->ops->set_time(rtc->dev.parent, tm); | 74 | err = rtc->ops->set_time(rtc->dev.parent, tm); |
75 | else if (rtc->ops->set_mmss) { | 75 | else if (rtc->ops->set_mmss) { |
76 | unsigned long secs; | 76 | time64_t secs64 = rtc_tm_to_time64(tm); |
77 | err = rtc_tm_to_time(tm, &secs); | 77 | err = rtc->ops->set_mmss(rtc->dev.parent, secs64); |
78 | if (err == 0) | ||
79 | err = rtc->ops->set_mmss(rtc->dev.parent, secs); | ||
80 | } else | 78 | } else |
81 | err = -EINVAL; | 79 | err = -EINVAL; |
82 | 80 | ||
@@ -105,7 +103,7 @@ int rtc_set_mmss(struct rtc_device *rtc, unsigned long secs) | |||
105 | 103 | ||
106 | err = rtc->ops->read_time(rtc->dev.parent, &old); | 104 | err = rtc->ops->read_time(rtc->dev.parent, &old); |
107 | if (err == 0) { | 105 | if (err == 0) { |
108 | rtc_time_to_tm(secs, &new); | 106 | rtc_time64_to_tm(secs, &new); |
109 | 107 | ||
110 | /* | 108 | /* |
111 | * avoid writing when we're going to change the day of | 109 | * avoid writing when we're going to change the day of |
@@ -157,7 +155,7 @@ int __rtc_read_alarm(struct rtc_device *rtc, struct rtc_wkalrm *alarm) | |||
157 | int err; | 155 | int err; |
158 | struct rtc_time before, now; | 156 | struct rtc_time before, now; |
159 | int first_time = 1; | 157 | int first_time = 1; |
160 | unsigned long t_now, t_alm; | 158 | time64_t t_now, t_alm; |
161 | enum { none, day, month, year } missing = none; | 159 | enum { none, day, month, year } missing = none; |
162 | unsigned days; | 160 | unsigned days; |
163 | 161 | ||
@@ -258,8 +256,8 @@ int __rtc_read_alarm(struct rtc_device *rtc, struct rtc_wkalrm *alarm) | |||
258 | } | 256 | } |
259 | 257 | ||
260 | /* with luck, no rollover is needed */ | 258 | /* with luck, no rollover is needed */ |
261 | rtc_tm_to_time(&now, &t_now); | 259 | t_now = rtc_tm_to_time64(&now); |
262 | rtc_tm_to_time(&alarm->time, &t_alm); | 260 | t_alm = rtc_tm_to_time64(&alarm->time); |
263 | if (t_now < t_alm) | 261 | if (t_now < t_alm) |
264 | goto done; | 262 | goto done; |
265 | 263 | ||
@@ -273,7 +271,7 @@ int __rtc_read_alarm(struct rtc_device *rtc, struct rtc_wkalrm *alarm) | |||
273 | case day: | 271 | case day: |
274 | dev_dbg(&rtc->dev, "alarm rollover: %s\n", "day"); | 272 | dev_dbg(&rtc->dev, "alarm rollover: %s\n", "day"); |
275 | t_alm += 24 * 60 * 60; | 273 | t_alm += 24 * 60 * 60; |
276 | rtc_time_to_tm(t_alm, &alarm->time); | 274 | rtc_time64_to_tm(t_alm, &alarm->time); |
277 | break; | 275 | break; |
278 | 276 | ||
279 | /* Month rollover ... if it's the 31th, an alarm on the 3rd will | 277 | /* Month rollover ... if it's the 31th, an alarm on the 3rd will |
@@ -346,19 +344,19 @@ EXPORT_SYMBOL_GPL(rtc_read_alarm); | |||
346 | static int __rtc_set_alarm(struct rtc_device *rtc, struct rtc_wkalrm *alarm) | 344 | static int __rtc_set_alarm(struct rtc_device *rtc, struct rtc_wkalrm *alarm) |
347 | { | 345 | { |
348 | struct rtc_time tm; | 346 | struct rtc_time tm; |
349 | long now, scheduled; | 347 | time64_t now, scheduled; |
350 | int err; | 348 | int err; |
351 | 349 | ||
352 | err = rtc_valid_tm(&alarm->time); | 350 | err = rtc_valid_tm(&alarm->time); |
353 | if (err) | 351 | if (err) |
354 | return err; | 352 | return err; |
355 | rtc_tm_to_time(&alarm->time, &scheduled); | 353 | scheduled = rtc_tm_to_time64(&alarm->time); |
356 | 354 | ||
357 | /* Make sure we're not setting alarms in the past */ | 355 | /* Make sure we're not setting alarms in the past */ |
358 | err = __rtc_read_time(rtc, &tm); | 356 | err = __rtc_read_time(rtc, &tm); |
359 | if (err) | 357 | if (err) |
360 | return err; | 358 | return err; |
361 | rtc_tm_to_time(&tm, &now); | 359 | now = rtc_tm_to_time64(&tm); |
362 | if (scheduled <= now) | 360 | if (scheduled <= now) |
363 | return -ETIME; | 361 | return -ETIME; |
364 | /* | 362 | /* |