summaryrefslogtreecommitdiff
path: root/sys/arch/arc/dev/pccons.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/arch/arc/dev/pccons.c')
-rw-r--r--sys/arch/arc/dev/pccons.c20
1 files changed, 19 insertions, 1 deletions
diff --git a/sys/arch/arc/dev/pccons.c b/sys/arch/arc/dev/pccons.c
index cfb1359cc40..58a057f54da 100644
--- a/sys/arch/arc/dev/pccons.c
+++ b/sys/arch/arc/dev/pccons.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: pccons.c,v 1.14 1997/04/19 17:19:53 pefo Exp $ */
+/* $OpenBSD: pccons.c,v 1.15 1997/05/19 16:01:07 pefo Exp $ */
/* $NetBSD: pccons.c,v 1.89 1995/05/04 19:35:20 cgd Exp $ */
/*-
@@ -157,6 +157,7 @@ void pc_xmode_on __P((void));
void pc_xmode_off __P((void));
static u_char kbc_get8042cmd __P((void));
static int kbc_put8042cmd __P((u_char));
+int kbc_8042sysreset __P((void));
int kbd_cmd __P((u_char, u_char));
static __inline int kbd_wait_output __P((void));
static __inline int kbd_wait_input __P((void));
@@ -287,6 +288,23 @@ kbd_flush_input()
}
+
+/*
+ * Pass system reset command to keyboard controller (8042).
+ */
+int
+kbc_8042sysreset()
+{
+
+ if (!kbd_wait_output())
+ return 0;
+ outb(kbd_cmdp, 0xd1);
+ if (!kbd_wait_output())
+ return 0;
+ outb(kbd_datap, 0); /* ZAP */
+ return 1;
+}
+
#if 1
/*
* Get the current command byte.