summaryrefslogtreecommitdiffstats
path: root/sys/i386/isa/syscons.c
diff options
context:
space:
mode:
authoryokota <yokota@FreeBSD.org>1997-04-10 12:26:50 +0000
committeryokota <yokota@FreeBSD.org>1997-04-10 12:26:50 +0000
commit96e981b4981e06b951ee0b9bbc7d6ee7f21d18e9 (patch)
tree8c64a294bd2ab4ed19809faf4e2720702f083102 /sys/i386/isa/syscons.c
parent6f2ace77031c1078221b8b617a668119a75e2cb2 (diff)
downloadFreeBSD-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.c16
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.
OpenPOWER on IntegriCloud