aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/kbd
diff options
context:
space:
mode:
authorKazutaka YOKOTA <yokota@FreeBSD.org>2000-02-11 01:22:30 +0000
committerKazutaka YOKOTA <yokota@FreeBSD.org>2000-02-11 01:22:30 +0000
commitaec1fa1ca35a4ee67d1abeee35c095e7c769ed03 (patch)
tree83ea79b1977662cf32b9b6b0be79197522f02360 /sys/dev/kbd
parent40de16e3c317b50a89f7cc097516ed622455e773 (diff)
Notes
Diffstat (limited to 'sys/dev/kbd')
-rw-r--r--sys/dev/kbd/atkbd.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/sys/dev/kbd/atkbd.c b/sys/dev/kbd/atkbd.c
index 5a72ecbe310d1..2dc98779e5aec 100644
--- a/sys/dev/kbd/atkbd.c
+++ b/sys/dev/kbd/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);