x86: Fix vrtc_get_time/set_mmss to use new timespec interface
authorJohn Stultz <john.stultz@linaro.org>
Wed, 29 May 2013 00:03:09 +0000 (17:03 -0700)
committerJohn Stultz <john.stultz@linaro.org>
Wed, 29 May 2013 19:57:35 +0000 (12:57 -0700)
The patch "x86: Increase precision of x86_platform.get/set_wallclock"
changed the x86 platform set_wallclock/get_wallclock interfaces to
use nsec granular timespecs instead of a second granular interface.

However, that patch missed converting the vrtc code, so this patch
converts those functions to use timespecs.

Many thanks to the kbuild test robot for finding this!

Reported-by: kbuild test robot <fengguang.wu@intel.com>
Signed-off-by: John Stultz <john.stultz@linaro.org>
arch/x86/include/asm/mrst-vrtc.h
arch/x86/platform/mrst/vrtc.c

index 73668abdbedfd28cd497f31f5ee2399b38422793..1e69a75412a4038ae335897515beadc271235850 100644 (file)
@@ -3,7 +3,7 @@
 
 extern unsigned char vrtc_cmos_read(unsigned char reg);
 extern void vrtc_cmos_write(unsigned char val, unsigned char reg);
-extern unsigned long vrtc_get_time(void);
-extern int vrtc_set_mmss(unsigned long nowtime);
+extern void vrtc_get_time(struct timespec *now);
+extern int vrtc_set_mmss(const struct timespec *now);
 
 #endif
index d62b0a3b5c145abf837e52e028dcf39bf923e096..5e355b134ba49043b63d9acda6e549fa3d6420e1 100644 (file)
@@ -56,7 +56,7 @@ void vrtc_cmos_write(unsigned char val, unsigned char reg)
 }
 EXPORT_SYMBOL_GPL(vrtc_cmos_write);
 
-unsigned long vrtc_get_time(void)
+void vrtc_get_time(struct timespec *now)
 {
        u8 sec, min, hour, mday, mon;
        unsigned long flags;
@@ -82,17 +82,18 @@ unsigned long vrtc_get_time(void)
        printk(KERN_INFO "vRTC: sec: %d min: %d hour: %d day: %d "
                "mon: %d year: %d\n", sec, min, hour, mday, mon, year);
 
-       return mktime(year, mon, mday, hour, min, sec);
+       now->tv_sec = mktime(year, mon, mday, hour, min, sec);
+       now->tv_nsec = 0;
 }
 
-int vrtc_set_mmss(unsigned long nowtime)
+int vrtc_set_mmss(const struct timespec *now)
 {
        unsigned long flags;
        struct rtc_time tm;
        int year;
        int retval = 0;
 
-       rtc_time_to_tm(nowtime, &tm);
+       rtc_time_to_tm(now->tv_sec, &tm);
        if (!rtc_valid_tm(&tm) && tm.tm_year >= 72) {
                /*
                 * tm.year is the number of years since 1900, and the
@@ -110,7 +111,7 @@ int vrtc_set_mmss(unsigned long nowtime)
        } else {
                printk(KERN_ERR
                       "%s: Invalid vRTC value: write of %lx to vRTC failed\n",
-                       __FUNCTION__, nowtime);
+                       __FUNCTION__, now->tv_sec);
                retval = -EINVAL;
        }
        return retval;