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 |
