diff options
author | Jeff Garzik <jgarzik@pobox.com> | 2006-02-09 05:58:59 (GMT) |
---|---|---|
committer | Jeff Garzik <jgarzik@pobox.com> | 2006-02-09 05:58:59 (GMT) |
commit | cac0e8e8bb2e7a086643bdd00c41d900a79bb4fa (patch) | |
tree | 73cd85e5529a01fa2338ab6d58b99c36dd666cbe /arch/x86_64/kernel/pmtimer.c | |
parent | ddef9bb367b19383df627e388cb4c01c86ddba6c (diff) | |
parent | 0bdd340c092b0936f78a54bdbd3927463ed4fca3 (diff) | |
download | linux-fsl-qoriq-cac0e8e8bb2e7a086643bdd00c41d900a79bb4fa.tar.xz |
Merge branch 'master'
Diffstat (limited to 'arch/x86_64/kernel/pmtimer.c')
-rw-r--r-- | arch/x86_64/kernel/pmtimer.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/arch/x86_64/kernel/pmtimer.c b/arch/x86_64/kernel/pmtimer.c index feb5f10..5c51d10 100644 --- a/arch/x86_64/kernel/pmtimer.c +++ b/arch/x86_64/kernel/pmtimer.c @@ -80,6 +80,31 @@ int pmtimer_mark_offset(void) return lost - 1; } +static unsigned pmtimer_wait_tick(void) +{ + u32 a, b; + for (a = b = inl(pmtmr_ioport) & ACPI_PM_MASK; + a == b; + b = inl(pmtmr_ioport) & ACPI_PM_MASK) + ; + return b; +} + +/* note: wait time is rounded up to one tick */ +void pmtimer_wait(unsigned us) +{ + u32 a, b; + a = pmtimer_wait_tick(); + do { + b = inl(pmtmr_ioport); + } while (cyc2us(b - a) < us); +} + +void pmtimer_resume(void) +{ + last_pmtmr_tick = inl(pmtmr_ioport); +} + unsigned int do_gettimeoffset_pm(void) { u32 now, offset, delta = 0; |