|
@@ -373,8 +373,8 @@ static int alarm_suspend(struct platform_device *pdev, pm_message_t state)
|
|
|
struct rtc_time rtc_current_rtc_time;
|
|
|
unsigned long rtc_current_time;
|
|
|
unsigned long rtc_alarm_time;
|
|
|
- struct timespec rtc_current_timespec;
|
|
|
struct timespec rtc_delta;
|
|
|
+ struct timespec wall_time;
|
|
|
struct alarm_queue *wakeup_queue = NULL;
|
|
|
struct alarm_queue *tmp_queue = NULL;
|
|
|
|
|
@@ -398,10 +398,11 @@ static int alarm_suspend(struct platform_device *pdev, pm_message_t state)
|
|
|
wakeup_queue = tmp_queue;
|
|
|
if (wakeup_queue) {
|
|
|
rtc_read_time(alarm_rtc_dev, &rtc_current_rtc_time);
|
|
|
- rtc_current_timespec.tv_nsec = 0;
|
|
|
- rtc_tm_to_time(&rtc_current_rtc_time,
|
|
|
- &rtc_current_timespec.tv_sec);
|
|
|
- save_time_delta(&rtc_delta, &rtc_current_timespec);
|
|
|
+ getnstimeofday(&wall_time);
|
|
|
+ rtc_tm_to_time(&rtc_current_rtc_time, &rtc_current_time);
|
|
|
+ set_normalized_timespec(&rtc_delta,
|
|
|
+ wall_time.tv_sec - rtc_current_time,
|
|
|
+ wall_time.tv_nsec);
|
|
|
|
|
|
rtc_alarm_time = timespec_sub(ktime_to_timespec(
|
|
|
hrtimer_get_expires(&wakeup_queue->timer)),
|