diff options
Diffstat (limited to 'arch/ppc64/kernel/rtc.c')
-rw-r--r-- | arch/ppc64/kernel/rtc.c | 48 |
1 files changed, 3 insertions, 45 deletions
diff --git a/arch/ppc64/kernel/rtc.c b/arch/ppc64/kernel/rtc.c index 6ff52bc61325..79e7ed2858dd 100644 --- a/arch/ppc64/kernel/rtc.c +++ b/arch/ppc64/kernel/rtc.c | |||
@@ -43,11 +43,8 @@ | |||
43 | #include <asm/time.h> | 43 | #include <asm/time.h> |
44 | #include <asm/rtas.h> | 44 | #include <asm/rtas.h> |
45 | 45 | ||
46 | #include <asm/iSeries/mf.h> | ||
47 | #include <asm/machdep.h> | 46 | #include <asm/machdep.h> |
48 | 47 | ||
49 | extern int piranha_simulator; | ||
50 | |||
51 | /* | 48 | /* |
52 | * We sponge a minor off of the misc major. No need slurping | 49 | * We sponge a minor off of the misc major. No need slurping |
53 | * up another valuable major dev number for this. If you add | 50 | * up another valuable major dev number for this. If you add |
@@ -265,44 +262,10 @@ static int rtc_read_proc(char *page, char **start, off_t off, | |||
265 | return len; | 262 | return len; |
266 | } | 263 | } |
267 | 264 | ||
268 | #ifdef CONFIG_PPC_ISERIES | ||
269 | /* | ||
270 | * Get the RTC from the virtual service processor | ||
271 | * This requires flowing LpEvents to the primary partition | ||
272 | */ | ||
273 | void iSeries_get_rtc_time(struct rtc_time *rtc_tm) | ||
274 | { | ||
275 | if (piranha_simulator) | ||
276 | return; | ||
277 | |||
278 | mf_get_rtc(rtc_tm); | ||
279 | rtc_tm->tm_mon--; | ||
280 | } | ||
281 | |||
282 | /* | ||
283 | * Set the RTC in the virtual service processor | ||
284 | * This requires flowing LpEvents to the primary partition | ||
285 | */ | ||
286 | int iSeries_set_rtc_time(struct rtc_time *tm) | ||
287 | { | ||
288 | mf_set_rtc(tm); | ||
289 | return 0; | ||
290 | } | ||
291 | |||
292 | void iSeries_get_boot_time(struct rtc_time *tm) | ||
293 | { | ||
294 | if ( piranha_simulator ) | ||
295 | return; | ||
296 | |||
297 | mf_get_boot_rtc(tm); | ||
298 | tm->tm_mon -= 1; | ||
299 | } | ||
300 | #endif | ||
301 | |||
302 | #ifdef CONFIG_PPC_RTAS | 265 | #ifdef CONFIG_PPC_RTAS |
303 | #define MAX_RTC_WAIT 5000 /* 5 sec */ | 266 | #define MAX_RTC_WAIT 5000 /* 5 sec */ |
304 | #define RTAS_CLOCK_BUSY (-2) | 267 | #define RTAS_CLOCK_BUSY (-2) |
305 | void rtas_get_boot_time(struct rtc_time *rtc_tm) | 268 | unsigned long rtas_get_boot_time(void) |
306 | { | 269 | { |
307 | int ret[8]; | 270 | int ret[8]; |
308 | int error, wait_time; | 271 | int error, wait_time; |
@@ -322,15 +285,10 @@ void rtas_get_boot_time(struct rtc_time *rtc_tm) | |||
322 | if (error != 0 && printk_ratelimit()) { | 285 | if (error != 0 && printk_ratelimit()) { |
323 | printk(KERN_WARNING "error: reading the clock failed (%d)\n", | 286 | printk(KERN_WARNING "error: reading the clock failed (%d)\n", |
324 | error); | 287 | error); |
325 | return; | 288 | return 0; |
326 | } | 289 | } |
327 | 290 | ||
328 | rtc_tm->tm_sec = ret[5]; | 291 | return mktime(ret[0], ret[1], ret[2], ret[3], ret[4], ret[5]); |
329 | rtc_tm->tm_min = ret[4]; | ||
330 | rtc_tm->tm_hour = ret[3]; | ||
331 | rtc_tm->tm_mday = ret[2]; | ||
332 | rtc_tm->tm_mon = ret[1] - 1; | ||
333 | rtc_tm->tm_year = ret[0] - 1900; | ||
334 | } | 292 | } |
335 | 293 | ||
336 | /* NOTE: get_rtc_time will get an error if executed in interrupt context | 294 | /* NOTE: get_rtc_time will get an error if executed in interrupt context |