summaryrefslogtreecommitdiffstats
path: root/sys/dev/atkbdc
diff options
context:
space:
mode:
authoryokota <yokota@FreeBSD.org>2000-02-11 01:22:30 +0000
committeryokota <yokota@FreeBSD.org>2000-02-11 01:22:30 +0000
commitc67195ab17df1daac716fadcab4f91032ababe24 (patch)
tree9c3be4cbfb3c3ef300949cf9ef52d83e57f32b6a /sys/dev/atkbdc
parent8ed7679411ecef15fd207bbdddbdef1124e6aaa2 (diff)
downloadFreeBSD-src-c67195ab17df1daac716fadcab4f91032ababe24.zip
FreeBSD-src-c67195ab17df1daac716fadcab4f91032ababe24.tar.gz
- Be slightly more cautious and try to make more sure the keyboard
input queue is emptied when initializing the keyboard controller. - Remove an unnecessary `if' statement. Approved by: jkh
Diffstat (limited to 'sys/dev/atkbdc')
-rw-r--r--sys/dev/atkbdc/atkbd.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/sys/dev/atkbdc/atkbd.c b/sys/dev/atkbdc/atkbd.c
index 5a72ecb..2dc9877 100644
--- a/sys/dev/atkbdc/atkbd.c
+++ b/sys/dev/atkbdc/atkbd.c
@@ -1081,8 +1081,11 @@ probe_keyboard(KBDC kbdc, int flags)
return ENXIO;
}
+ /* temporarily block data transmission from the keyboard */
+ write_controller_command(kbdc, KBDC_DISABLE_KBD_PORT);
+
/* flush any noise in the buffer */
- empty_both_buffers(kbdc, 10);
+ empty_both_buffers(kbdc, 100);
/* save the current keyboard controller command byte */
m = kbdc_get_device_mask(kbdc) & ~KBD_KBD_CONTROL_BITS;
@@ -1108,9 +1111,8 @@ probe_keyboard(KBDC kbdc, int flags)
if (err == 0) {
kbdc_set_device_mask(kbdc, m | KBD_KBD_CONTROL_BITS);
} else {
- if (c != -1)
- /* try to restore the command byte as before */
- set_controller_command_byte(kbdc, 0xff, c);
+ /* try to restore the command byte as before */
+ set_controller_command_byte(kbdc, 0xff, c);
kbdc_set_device_mask(kbdc, m);
}
@@ -1130,6 +1132,9 @@ init_keyboard(KBDC kbdc, int *type, int flags)
return EIO;
}
+ /* temporarily block data transmission from the keyboard */
+ write_controller_command(kbdc, KBDC_DISABLE_KBD_PORT);
+
/* save the current controller command byte */
empty_both_buffers(kbdc, 200);
c = get_controller_command_byte(kbdc);
OpenPOWER on IntegriCloud