diff options
| author | john stultz <johnstul@us.ibm.com> | 2009-12-22 23:14:03 -0500 |
|---|---|---|
| committer | Kyle McMartin <kyle@redhat.com> | 2010-03-06 17:54:10 -0500 |
| commit | c60185248fd1c7b777f08d3f3337836331da3d17 (patch) | |
| tree | 639b4adf29bba07b18677eb58e15097ddda2cc66 | |
| parent | eef83afbd6c2577c9fd07e1a280bb0beb603b293 (diff) | |
parisc: Convert to read/update_persistent_clock
This patch converts the parisc architecture to use the generic
read_persistent_clock and update_persistent_clock interfaces, reducing
the amount of arch specific code we have to maintain, and allowing for
further cleanups in the future.
I have not built or tested this patch, so help from arch maintainers
would be appreciated.
Signed-off-by: John Stultz <johnstul@us.ibm.com>
Acked-by: Helge Deller <deller@gmx.de>
Signed-off-by: Kyle McMartin <kyle@mcmartin.ca>
| -rw-r--r-- | arch/parisc/kernel/time.c | 29 |
1 files changed, 13 insertions, 16 deletions
diff --git a/arch/parisc/kernel/time.c b/arch/parisc/kernel/time.c index a79c6f9e7e2c..05511ccb61d2 100644 --- a/arch/parisc/kernel/time.c +++ b/arch/parisc/kernel/time.c | |||
| @@ -250,9 +250,21 @@ static int __init rtc_init(void) | |||
| 250 | } | 250 | } |
| 251 | module_init(rtc_init); | 251 | module_init(rtc_init); |
| 252 | 252 | ||
| 253 | void __init time_init(void) | 253 | void read_persistent_clock(struct timespec *ts) |
| 254 | { | 254 | { |
| 255 | static struct pdc_tod tod_data; | 255 | static struct pdc_tod tod_data; |
| 256 | if (pdc_tod_read(&tod_data) == 0) { | ||
| 257 | ts->tv_sec = tod_data.tod_sec; | ||
| 258 | ts->tv_nsec = tod_data.tod_usec * 1000; | ||
| 259 | } else { | ||
| 260 | printk(KERN_ERR "Error reading tod clock\n"); | ||
| 261 | ts->tv_sec = 0; | ||
| 262 | ts->tv_nsec = 0; | ||
| 263 | } | ||
| 264 | } | ||
| 265 | |||
| 266 | void __init time_init(void) | ||
| 267 | { | ||
| 256 | unsigned long current_cr16_khz; | 268 | unsigned long current_cr16_khz; |
| 257 | 269 | ||
| 258 | clocktick = (100 * PAGE0->mem_10msec) / HZ; | 270 | clocktick = (100 * PAGE0->mem_10msec) / HZ; |
| @@ -264,19 +276,4 @@ void __init time_init(void) | |||
| 264 | clocksource_cr16.mult = clocksource_khz2mult(current_cr16_khz, | 276 | clocksource_cr16.mult = clocksource_khz2mult(current_cr16_khz, |
| 265 | clocksource_cr16.shift); | 277 | clocksource_cr16.shift); |
| 266 | clocksource_register(&clocksource_cr16); | 278 | clocksource_register(&clocksource_cr16); |
| 267 | |||
| 268 | if (pdc_tod_read(&tod_data) == 0) { | ||
| 269 | unsigned long flags; | ||
| 270 | |||
| 271 | write_seqlock_irqsave(&xtime_lock, flags); | ||
| 272 | xtime.tv_sec = tod_data.tod_sec; | ||
| 273 | xtime.tv_nsec = tod_data.tod_usec * 1000; | ||
| 274 | set_normalized_timespec(&wall_to_monotonic, | ||
| 275 | -xtime.tv_sec, -xtime.tv_nsec); | ||
| 276 | write_sequnlock_irqrestore(&xtime_lock, flags); | ||
| 277 | } else { | ||
| 278 | printk(KERN_ERR "Error reading tod clock\n"); | ||
| 279 | xtime.tv_sec = 0; | ||
| 280 | xtime.tv_nsec = 0; | ||
| 281 | } | ||
| 282 | } | 279 | } |
