aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2007-07-21 11:11:18 -0400
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-07-21 21:37:12 -0400
commit28318daf791b692f2654cb9c89687388063bd42b (patch)
tree6ec7b7d3862c513135455156d17c738ec15aebf7 /drivers
parent021daae2c265a844fd27bb6cc49c2bd114571069 (diff)
x86_64: use the global PIT lock
Replace the pcspkr private PIT lock by the global PIT lock to serialize the PIT access all over the place. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Cc: Ingo Molnar <mingo@elte.hu> Cc: Dmitry Torokhov <dtor@mail.ru> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Andi Kleen <ak@suse.de> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/input/misc/pcspkr.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/input/misc/pcspkr.c b/drivers/input/misc/pcspkr.c
index 31989dcd922..906bf5e8de8 100644
--- a/drivers/input/misc/pcspkr.c
+++ b/drivers/input/misc/pcspkr.c
@@ -24,7 +24,12 @@ MODULE_AUTHOR("Vojtech Pavlik <vojtech@ucw.cz>");
24MODULE_DESCRIPTION("PC Speaker beeper driver"); 24MODULE_DESCRIPTION("PC Speaker beeper driver");
25MODULE_LICENSE("GPL"); 25MODULE_LICENSE("GPL");
26 26
27static DEFINE_SPINLOCK(i8253_beep_lock); 27#ifdef CONFIG_X86
28/* Use the global PIT lock ! */
29#include <asm/i8253.h>
30#else
31static DEFINE_SPINLOCK(i8253_lock);
32#endif
28 33
29static int pcspkr_event(struct input_dev *dev, unsigned int type, unsigned int code, int value) 34static int pcspkr_event(struct input_dev *dev, unsigned int type, unsigned int code, int value)
30{ 35{
@@ -43,7 +48,7 @@ static int pcspkr_event(struct input_dev *dev, unsigned int type, unsigned int c
43 if (value > 20 && value < 32767) 48 if (value > 20 && value < 32767)
44 count = PIT_TICK_RATE / value; 49 count = PIT_TICK_RATE / value;
45 50
46 spin_lock_irqsave(&i8253_beep_lock, flags); 51 spin_lock_irqsave(&i8253_lock, flags);
47 52
48 if (count) { 53 if (count) {
49 /* enable counter 2 */ 54 /* enable counter 2 */
@@ -58,7 +63,7 @@ static int pcspkr_event(struct input_dev *dev, unsigned int type, unsigned int c
58 outb(inb_p(0x61) & 0xFC, 0x61); 63 outb(inb_p(0x61) & 0xFC, 0x61);
59 } 64 }
60 65
61 spin_unlock_irqrestore(&i8253_beep_lock, flags); 66 spin_unlock_irqrestore(&i8253_lock, flags);
62 67
63 return 0; 68 return 0;
64} 69}