summaryrefslogtreecommitdiff
path: root/src/kbd.c
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2010-01-28 20:35:21 -0500
committerKevin O'Connor <kevin@koconnor.net>2010-01-28 20:35:21 -0500
commit6f702dd6987b22e9bce472fe61910392af17416a (patch)
tree14004f76f72bb1a6983f2ee5ebea8a1a1c870f40 /src/kbd.c
parent2d3f0f5e4040a5b2dabc278bc5aa5bc3d9e71e1b (diff)
downloadqemu-seabios-6f702dd6987b22e9bce472fe61910392af17416a.tar.gz
Rework disabling of ps2 port irqs.
Disable the ps2 port irqs in software instead of hardware. This prevents a race where an irq could get queued and later called when not desired.
Diffstat (limited to 'src/kbd.c')
-rw-r--r--src/kbd.c26
1 files changed, 2 insertions, 24 deletions
diff --git a/src/kbd.c b/src/kbd.c
index 6f3ae15..44dce57 100644
--- a/src/kbd.c
+++ b/src/kbd.c
@@ -11,28 +11,6 @@
#include "bregs.h" // struct bregs
#include "ps2port.h" // kbd_command
-// Bit definitions for BDA kbd_flag[012]
-#define KF0_RSHIFT (1<<0)
-#define KF0_LSHIFT (1<<1)
-#define KF0_CTRLACTIVE (1<<2)
-#define KF0_ALTACTIVE (1<<3)
-#define KF0_SCROLLACTIVE (1<<4)
-#define KF0_NUMACTIVE (1<<5)
-#define KF0_CAPSACTIVE (1<<6)
-
-#define KF1_LCTRL (1<<0)
-#define KF1_LALT (1<<1)
-#define KF1_PAUSEACTIVE (1<<3)
-#define KF1_SCROLL (1<<4)
-#define KF1_NUM (1<<5)
-#define KF1_CAPS (1<<6)
-
-#define KF2_LAST_E1 (1<<0)
-#define KF2_LAST_E0 (1<<1)
-#define KF2_RCTRL (1<<2)
-#define KF2_RALT (1<<3)
-#define KF2_101KBD (1<<4)
-
void
kbd_setup(void)
{
@@ -223,7 +201,7 @@ static void
set_leds(void)
{
u8 shift_flags = (GET_BDA(kbd_flag0) >> 4) & 0x07;
- u8 kbd_led = GET_BDA(kbd_led);
+ u8 kbd_led = GET_BDA(kbd_flag3);
u8 led_flags = kbd_led & 0x07;
if (shift_flags == led_flags)
return;
@@ -233,7 +211,7 @@ set_leds(void)
// Error
return;
kbd_led = (kbd_led & ~0x07) | shift_flags;
- SET_BDA(kbd_led, kbd_led);
+ SET_BDA(kbd_flag3, kbd_led);
}
// INT 16h Keyboard Service Entry Point