@@ -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)),