From c67195ab17df1daac716fadcab4f91032ababe24 Mon Sep 17 00:00:00 2001 From: yokota Date: Fri, 11 Feb 2000 01:22:30 +0000 Subject: - 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 --- sys/dev/atkbdc/atkbd.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'sys/dev/atkbdc/atkbd.c') 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); -- cgit v1.1