diff options
author | yokota <yokota@FreeBSD.org> | 1997-04-10 12:26:50 +0000 |
---|---|---|
committer | yokota <yokota@FreeBSD.org> | 1997-04-10 12:26:50 +0000 |
commit | 96e981b4981e06b951ee0b9bbc7d6ee7f21d18e9 (patch) | |
tree | 8c64a294bd2ab4ed19809faf4e2720702f083102 /sys/i386/isa/syscons.c | |
parent | 6f2ace77031c1078221b8b617a668119a75e2cb2 (diff) | |
download | FreeBSD-src-96e981b4981e06b951ee0b9bbc7d6ee7f21d18e9.zip FreeBSD-src-96e981b4981e06b951ee0b9bbc7d6ee7f21d18e9.tar.gz |
Preserve some bits in the keyboard controller command byte when
resetting the keyboard.
Well, sorry, this bug is totally my fault. I DID intend to preserve
them, but somehow I failed.
The bug puts some old keyboard controllers in a strange state,
resulting in keyboard freeze or random key input.
The fix closes PR kern/3067.
Diffstat (limited to 'sys/i386/isa/syscons.c')
-rw-r--r-- | sys/i386/isa/syscons.c | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/sys/i386/isa/syscons.c b/sys/i386/isa/syscons.c index 1ce6e8b..c4f1cd9 100644 --- a/sys/i386/isa/syscons.c +++ b/sys/i386/isa/syscons.c @@ -25,7 +25,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: syscons.c,v 1.207 1997/03/28 10:11:24 yokota Exp $ + * $Id: syscons.c,v 1.208 1997/04/03 21:42:42 brian Exp $ */ #include "sc.h" @@ -331,14 +331,10 @@ scprobe(struct isa_device *dev) c |= KBD_OVERRIDE_KBD_LOCK; #endif - /* - * enable the keyboard port, but disable the keyboard intr. - * the aux port (mouse port) is disabled too. - */ + /* enable the keyboard port, but disable the keyboard intr. */ if (!set_controller_command_byte(sc_kbdc, - KBD_KBD_CONTROL_BITS | KBD_AUX_CONTROL_BITS, - KBD_ENABLE_KBD_PORT | KBD_DISABLE_KBD_INT - | KBD_DISABLE_AUX_PORT | KBD_DISABLE_AUX_INT)) { + KBD_KBD_CONTROL_BITS, + KBD_ENABLE_KBD_PORT | KBD_DISABLE_KBD_INT)) { /* CONTROLLER ERROR * there is very little we can do... */ @@ -410,8 +406,8 @@ scprobe(struct isa_device *dev) } /* enable the keyboard port and intr. */ if (!set_controller_command_byte(sc_kbdc, - KBD_KBD_CONTROL_BITS | KBD_AUX_CONTROL_BITS | KBD_OVERRIDE_KBD_LOCK, - (c & (KBD_AUX_CONTROL_BITS | KBD_OVERRIDE_KBD_LOCK)) + KBD_KBD_CONTROL_BITS | KBD_TRANSLATION | KBD_OVERRIDE_KBD_LOCK, + (c & (KBD_TRANSLATION | KBD_OVERRIDE_KBD_LOCK)) | KBD_ENABLE_KBD_PORT | KBD_ENABLE_KBD_INT)) { /* CONTROLLER ERROR * This is serious; we are left with the disabled keyboard intr. |