summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Gray <jsg@cvs.openbsd.org>2009-08-27 16:45:21 +0000
committerJonathan Gray <jsg@cvs.openbsd.org>2009-08-27 16:45:21 +0000
commit9a2619021a39d922e470d301ee58b89cc1cd43e1 (patch)
tree718ef838954dcb79e15ac2a3b162bfe2cca5430c
parentfc799c2b12fef83615f04485addd98964e3f6c8b (diff)
Bring in NetBSD's rev 1.45 by Matthias Drochner
'Reduce polling of the keyboard controller status by a factor of 1000. While on real hardware hardware a poll cycle takes time in the microsecond order of magnitude, a "legacy-free" system which emulates the KBC in BIOS code takes milliseconds -- I'm seeing a multi-minute delay in booting where the KBC is probed. So poll less and use delay() to compensate so that the total wait time stays about the same.' Noticeably helps some machines that do SMM based pckbc. Tested by miod on alpha glass console. ok miod@
-rw-r--r--sys/dev/ic/pckbc.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/sys/dev/ic/pckbc.c b/sys/dev/ic/pckbc.c
index 36c2599570c..6171b156fc6 100644
--- a/sys/dev/ic/pckbc.c
+++ b/sys/dev/ic/pckbc.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: pckbc.c,v 1.19 2009/08/25 19:16:36 miod Exp $ */
+/* $OpenBSD: pckbc.c,v 1.20 2009/08/27 16:45:20 jsg Exp $ */
/* $NetBSD: pckbc.c,v 1.5 2000/06/09 04:58:35 soda Exp $ */
/*
@@ -142,8 +142,8 @@ pckbc_poll_data1(iot, ioh_d, ioh_c, slot, checkaux)
int i;
u_char stat;
- /* if 1 port read takes 1us (?), this polls for 100ms */
- for (i = 100000; i; i--) {
+ /* polls for ~100ms */
+ for (i = 100; i; i--, delay(1000)) {
stat = bus_space_read_1(iot, ioh_c, 0);
if (stat & KBS_DIB) {
register u_char c;