diff options
Diffstat (limited to 'arch/x86')
-rw-r--r-- | arch/x86/include/asm/mrst-vrtc.h | 4 | ||||
-rw-r--r-- | arch/x86/platform/mrst/vrtc.c | 11 |
2 files changed, 8 insertions, 7 deletions
diff --git a/arch/x86/include/asm/mrst-vrtc.h b/arch/x86/include/asm/mrst-vrtc.h index 73668abdbedf..1e69a75412a4 100644 --- a/arch/x86/include/asm/mrst-vrtc.h +++ b/arch/x86/include/asm/mrst-vrtc.h | |||
@@ -3,7 +3,7 @@ | |||
3 | 3 | ||
4 | extern unsigned char vrtc_cmos_read(unsigned char reg); | 4 | extern unsigned char vrtc_cmos_read(unsigned char reg); |
5 | extern void vrtc_cmos_write(unsigned char val, unsigned char reg); | 5 | extern void vrtc_cmos_write(unsigned char val, unsigned char reg); |
6 | extern unsigned long vrtc_get_time(void); | 6 | extern void vrtc_get_time(struct timespec *now); |
7 | extern int vrtc_set_mmss(unsigned long nowtime); | 7 | extern int vrtc_set_mmss(const struct timespec *now); |
8 | 8 | ||
9 | #endif | 9 | #endif |
diff --git a/arch/x86/platform/mrst/vrtc.c b/arch/x86/platform/mrst/vrtc.c index d62b0a3b5c14..5e355b134ba4 100644 --- a/arch/x86/platform/mrst/vrtc.c +++ b/arch/x86/platform/mrst/vrtc.c | |||
@@ -56,7 +56,7 @@ void vrtc_cmos_write(unsigned char val, unsigned char reg) | |||
56 | } | 56 | } |
57 | EXPORT_SYMBOL_GPL(vrtc_cmos_write); | 57 | EXPORT_SYMBOL_GPL(vrtc_cmos_write); |
58 | 58 | ||
59 | unsigned long vrtc_get_time(void) | 59 | void vrtc_get_time(struct timespec *now) |
60 | { | 60 | { |
61 | u8 sec, min, hour, mday, mon; | 61 | u8 sec, min, hour, mday, mon; |
62 | unsigned long flags; | 62 | unsigned long flags; |
@@ -82,17 +82,18 @@ unsigned long vrtc_get_time(void) | |||
82 | printk(KERN_INFO "vRTC: sec: %d min: %d hour: %d day: %d " | 82 | printk(KERN_INFO "vRTC: sec: %d min: %d hour: %d day: %d " |
83 | "mon: %d year: %d\n", sec, min, hour, mday, mon, year); | 83 | "mon: %d year: %d\n", sec, min, hour, mday, mon, year); |
84 | 84 | ||
85 | return mktime(year, mon, mday, hour, min, sec); | 85 | now->tv_sec = mktime(year, mon, mday, hour, min, sec); |
86 | now->tv_nsec = 0; | ||
86 | } | 87 | } |
87 | 88 | ||
88 | int vrtc_set_mmss(unsigned long nowtime) | 89 | int vrtc_set_mmss(const struct timespec *now) |
89 | { | 90 | { |
90 | unsigned long flags; | 91 | unsigned long flags; |
91 | struct rtc_time tm; | 92 | struct rtc_time tm; |
92 | int year; | 93 | int year; |
93 | int retval = 0; | 94 | int retval = 0; |
94 | 95 | ||
95 | rtc_time_to_tm(nowtime, &tm); | 96 | rtc_time_to_tm(now->tv_sec, &tm); |
96 | if (!rtc_valid_tm(&tm) && tm.tm_year >= 72) { | 97 | if (!rtc_valid_tm(&tm) && tm.tm_year >= 72) { |
97 | /* | 98 | /* |
98 | * tm.year is the number of years since 1900, and the | 99 | * tm.year is the number of years since 1900, and the |
@@ -110,7 +111,7 @@ int vrtc_set_mmss(unsigned long nowtime) | |||
110 | } else { | 111 | } else { |
111 | printk(KERN_ERR | 112 | printk(KERN_ERR |
112 | "%s: Invalid vRTC value: write of %lx to vRTC failed\n", | 113 | "%s: Invalid vRTC value: write of %lx to vRTC failed\n", |
113 | __FUNCTION__, nowtime); | 114 | __FUNCTION__, now->tv_sec); |
114 | retval = -EINVAL; | 115 | retval = -EINVAL; |
115 | } | 116 | } |
116 | return retval; | 117 | return retval; |