diff options
-rw-r--r-- | arch/i386/kernel/Makefile | 2 | ||||
-rw-r--r-- | arch/i386/kernel/i8253.c | 32 | ||||
-rw-r--r-- | arch/i386/kernel/time.c | 5 | ||||
-rw-r--r-- | arch/i386/kernel/timers/timer_pit.c | 13 |
4 files changed, 33 insertions, 19 deletions
diff --git a/arch/i386/kernel/Makefile b/arch/i386/kernel/Makefile index 96fb8a020af2..4142d69a5336 100644 --- a/arch/i386/kernel/Makefile +++ b/arch/i386/kernel/Makefile | |||
@@ -7,7 +7,7 @@ extra-y := head.o init_task.o vmlinux.lds | |||
7 | obj-y := process.o semaphore.o signal.o entry.o traps.o irq.o \ | 7 | obj-y := process.o semaphore.o signal.o entry.o traps.o irq.o \ |
8 | ptrace.o time.o ioport.o ldt.o setup.o i8259.o sys_i386.o \ | 8 | ptrace.o time.o ioport.o ldt.o setup.o i8259.o sys_i386.o \ |
9 | pci-dma.o i386_ksyms.o i387.o bootflag.o \ | 9 | pci-dma.o i386_ksyms.o i387.o bootflag.o \ |
10 | quirks.o i8237.o topology.o alternative.o | 10 | quirks.o i8237.o topology.o alternative.o i8253.o |
11 | 11 | ||
12 | obj-y += cpu/ | 12 | obj-y += cpu/ |
13 | obj-y += timers/ | 13 | obj-y += timers/ |
diff --git a/arch/i386/kernel/i8253.c b/arch/i386/kernel/i8253.c new file mode 100644 index 000000000000..29cb2eb34363 --- /dev/null +++ b/arch/i386/kernel/i8253.c | |||
@@ -0,0 +1,32 @@ | |||
1 | /* | ||
2 | * i8253.c 8253/PIT functions | ||
3 | * | ||
4 | */ | ||
5 | #include <linux/spinlock.h> | ||
6 | #include <linux/jiffies.h> | ||
7 | #include <linux/sysdev.h> | ||
8 | #include <linux/module.h> | ||
9 | #include <linux/init.h> | ||
10 | |||
11 | #include <asm/smp.h> | ||
12 | #include <asm/delay.h> | ||
13 | #include <asm/i8253.h> | ||
14 | #include <asm/io.h> | ||
15 | |||
16 | #include "io_ports.h" | ||
17 | |||
18 | DEFINE_SPINLOCK(i8253_lock); | ||
19 | EXPORT_SYMBOL(i8253_lock); | ||
20 | |||
21 | void setup_pit_timer(void) | ||
22 | { | ||
23 | unsigned long flags; | ||
24 | |||
25 | spin_lock_irqsave(&i8253_lock, flags); | ||
26 | outb_p(0x34,PIT_MODE); /* binary, mode 2, LSB/MSB, ch 0 */ | ||
27 | udelay(10); | ||
28 | outb_p(LATCH & 0xff , PIT_CH0); /* LSB */ | ||
29 | udelay(10); | ||
30 | outb(LATCH >> 8 , PIT_CH0); /* MSB */ | ||
31 | spin_unlock_irqrestore(&i8253_lock, flags); | ||
32 | } | ||
diff --git a/arch/i386/kernel/time.c b/arch/i386/kernel/time.c index 9d3074759856..796e5faa6ca7 100644 --- a/arch/i386/kernel/time.c +++ b/arch/i386/kernel/time.c | |||
@@ -82,11 +82,6 @@ extern unsigned long wall_jiffies; | |||
82 | DEFINE_SPINLOCK(rtc_lock); | 82 | DEFINE_SPINLOCK(rtc_lock); |
83 | EXPORT_SYMBOL(rtc_lock); | 83 | EXPORT_SYMBOL(rtc_lock); |
84 | 84 | ||
85 | #include <asm/i8253.h> | ||
86 | |||
87 | DEFINE_SPINLOCK(i8253_lock); | ||
88 | EXPORT_SYMBOL(i8253_lock); | ||
89 | |||
90 | struct timer_opts *cur_timer __read_mostly = &timer_none; | 85 | struct timer_opts *cur_timer __read_mostly = &timer_none; |
91 | 86 | ||
92 | /* | 87 | /* |
diff --git a/arch/i386/kernel/timers/timer_pit.c b/arch/i386/kernel/timers/timer_pit.c index b9b6bd56b9ba..44cbdf9bda9d 100644 --- a/arch/i386/kernel/timers/timer_pit.c +++ b/arch/i386/kernel/timers/timer_pit.c | |||
@@ -162,16 +162,3 @@ struct init_timer_opts __initdata timer_pit_init = { | |||
162 | .init = init_pit, | 162 | .init = init_pit, |
163 | .opts = &timer_pit, | 163 | .opts = &timer_pit, |
164 | }; | 164 | }; |
165 | |||
166 | void setup_pit_timer(void) | ||
167 | { | ||
168 | unsigned long flags; | ||
169 | |||
170 | spin_lock_irqsave(&i8253_lock, flags); | ||
171 | outb_p(0x34,PIT_MODE); /* binary, mode 2, LSB/MSB, ch 0 */ | ||
172 | udelay(10); | ||
173 | outb_p(LATCH & 0xff , PIT_CH0); /* LSB */ | ||
174 | udelay(10); | ||
175 | outb(LATCH >> 8 , PIT_CH0); /* MSB */ | ||
176 | spin_unlock_irqrestore(&i8253_lock, flags); | ||
177 | } | ||