diff options
Diffstat (limited to 'drivers/rtc/interface.c')
| -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 | /* |
