diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2010-01-28 20:35:21 -0500 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2010-01-28 20:35:21 -0500 |
commit | 6f702dd6987b22e9bce472fe61910392af17416a (patch) | |
tree | 14004f76f72bb1a6983f2ee5ebea8a1a1c870f40 /src/kbd.c | |
parent | 2d3f0f5e4040a5b2dabc278bc5aa5bc3d9e71e1b (diff) | |
download | 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.c | 26 |
1 files changed, 2 insertions, 24 deletions
@@ -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 |