diff options
author | yokota <yokota@FreeBSD.org> | 2000-02-11 01:22:30 +0000 |
---|---|---|
committer | yokota <yokota@FreeBSD.org> | 2000-02-11 01:22:30 +0000 |
commit | c67195ab17df1daac716fadcab4f91032ababe24 (patch) | |
tree | 9c3be4cbfb3c3ef300949cf9ef52d83e57f32b6a /sys/dev/atkbdc | |
parent | 8ed7679411ecef15fd207bbdddbdef1124e6aaa2 (diff) | |
download | FreeBSD-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.c | 13 |
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); |