summaryrefslogtreecommitdiff
path: root/sys/dev/pckbc
diff options
context:
space:
mode:
authorTheo de Raadt <deraadt@cvs.openbsd.org>2015-03-12 20:28:27 +0000
committerTheo de Raadt <deraadt@cvs.openbsd.org>2015-03-12 20:28:27 +0000
commit2553c40ead8fa1bd9778a2c9c73906b216800c68 (patch)
tree2ab4a35a79e2531fd792a440a0c0307ff05e563a /sys/dev/pckbc
parent96e640797bd4cc0ddd04f8191e8b395b4d3e6f36 (diff)
On first cnpoll, reset the keyboard and pms hard. This is required
to make "boot -c" support work on a variety of newer machines. Do not anticipate this harming older machines, but we'll have to wait and see with this change in the tree. with jcs
Diffstat (limited to 'sys/dev/pckbc')
-rw-r--r--sys/dev/pckbc/pckbd.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/sys/dev/pckbc/pckbd.c b/sys/dev/pckbc/pckbd.c
index 789da82393c..66f036e7937 100644
--- a/sys/dev/pckbc/pckbd.c
+++ b/sys/dev/pckbc/pckbd.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: pckbd.c,v 1.38 2014/07/24 22:38:19 mpi Exp $ */
+/* $OpenBSD: pckbd.c,v 1.39 2015/03/12 20:28:26 deraadt Exp $ */
/* $NetBSD: pckbd.c,v 1.24 2000/06/05 22:20:57 sommerfeld Exp $ */
/*-
@@ -79,6 +79,7 @@
#include <dev/ic/pckbcvar.h>
#include <dev/pckbc/pckbdreg.h>
#include <dev/pckbc/pckbdvar.h>
+#include <dev/pckbc/pmsreg.h>
#include <dev/wscons/wsconsio.h>
#include <dev/wscons/wskbdvar.h>
@@ -1033,6 +1034,10 @@ pckbd_cnpollc(void *v, int on)
/* Just to be sure. */
cmd[0] = KBC_ENABLE;
pckbc_poll_cmd(t->t_kbctag, PCKBC_KBD_SLOT, cmd, 1, 0, NULL, 0);
+ cmd[0] = KBC_RESET;
+ pckbc_poll_cmd(t->t_kbctag, PCKBC_KBD_SLOT, cmd, 1, 0, NULL, 0);
+ cmd[0] = PMS_RESET;
+ pckbc_poll_cmd(t->t_kbctag, PCKBC_AUX_SLOT, cmd, 1, 0, NULL, 0);
}
}