diff options
Diffstat (limited to 'arch/x86_64/kernel/pmtimer.c')
-rw-r--r-- | arch/x86_64/kernel/pmtimer.c | 58 |
1 files changed, 0 insertions, 58 deletions
diff --git a/arch/x86_64/kernel/pmtimer.c b/arch/x86_64/kernel/pmtimer.c index 7554458dc9cb..ae8f91214f15 100644 --- a/arch/x86_64/kernel/pmtimer.c +++ b/arch/x86_64/kernel/pmtimer.c | |||
@@ -24,15 +24,6 @@ | |||
24 | #include <asm/msr.h> | 24 | #include <asm/msr.h> |
25 | #include <asm/vsyscall.h> | 25 | #include <asm/vsyscall.h> |
26 | 26 | ||
27 | /* The I/O port the PMTMR resides at. | ||
28 | * The location is detected during setup_arch(), | ||
29 | * in arch/i386/kernel/acpi/boot.c */ | ||
30 | u32 pmtmr_ioport __read_mostly; | ||
31 | |||
32 | /* value of the Power timer at last timer interrupt */ | ||
33 | static u32 offset_delay; | ||
34 | static u32 last_pmtmr_tick; | ||
35 | |||
36 | #define ACPI_PM_MASK 0xFFFFFF /* limit it to 24 bits */ | 27 | #define ACPI_PM_MASK 0xFFFFFF /* limit it to 24 bits */ |
37 | 28 | ||
38 | static inline u32 cyc2us(u32 cycles) | 29 | static inline u32 cyc2us(u32 cycles) |
@@ -48,38 +39,6 @@ static inline u32 cyc2us(u32 cycles) | |||
48 | return (cycles >> 10); | 39 | return (cycles >> 10); |
49 | } | 40 | } |
50 | 41 | ||
51 | int pmtimer_mark_offset(void) | ||
52 | { | ||
53 | static int first_run = 1; | ||
54 | unsigned long tsc; | ||
55 | u32 lost; | ||
56 | |||
57 | u32 tick = inl(pmtmr_ioport); | ||
58 | u32 delta; | ||
59 | |||
60 | delta = cyc2us((tick - last_pmtmr_tick) & ACPI_PM_MASK); | ||
61 | |||
62 | last_pmtmr_tick = tick; | ||
63 | monotonic_base += delta * NSEC_PER_USEC; | ||
64 | |||
65 | delta += offset_delay; | ||
66 | |||
67 | lost = delta / (USEC_PER_SEC / HZ); | ||
68 | offset_delay = delta % (USEC_PER_SEC / HZ); | ||
69 | |||
70 | rdtscll(tsc); | ||
71 | vxtime.last_tsc = tsc - offset_delay * (u64)cpu_khz / 1000; | ||
72 | |||
73 | /* don't calculate delay for first run, | ||
74 | or if we've got less then a tick */ | ||
75 | if (first_run || (lost < 1)) { | ||
76 | first_run = 0; | ||
77 | offset_delay = 0; | ||
78 | } | ||
79 | |||
80 | return lost - 1; | ||
81 | } | ||
82 | |||
83 | static unsigned pmtimer_wait_tick(void) | 42 | static unsigned pmtimer_wait_tick(void) |
84 | { | 43 | { |
85 | u32 a, b; | 44 | u32 a, b; |
@@ -101,23 +60,6 @@ void pmtimer_wait(unsigned us) | |||
101 | } while (cyc2us(b - a) < us); | 60 | } while (cyc2us(b - a) < us); |
102 | } | 61 | } |
103 | 62 | ||
104 | void pmtimer_resume(void) | ||
105 | { | ||
106 | last_pmtmr_tick = inl(pmtmr_ioport); | ||
107 | } | ||
108 | |||
109 | unsigned int do_gettimeoffset_pm(void) | ||
110 | { | ||
111 | u32 now, offset, delta = 0; | ||
112 | |||
113 | offset = last_pmtmr_tick; | ||
114 | now = inl(pmtmr_ioport); | ||
115 | delta = (now - offset) & ACPI_PM_MASK; | ||
116 | |||
117 | return offset_delay + cyc2us(delta); | ||
118 | } | ||
119 | |||
120 | |||
121 | static int __init nopmtimer_setup(char *s) | 63 | static int __init nopmtimer_setup(char *s) |
122 | { | 64 | { |
123 | pmtmr_ioport = 0; | 65 | pmtmr_ioport = 0; |