Subject: New pccons problems
To: None <mycroft@sun-lamp.cs.berkeley.edu>
From: Achim Patzner <noses@oink.rhein.de>
List: current-users
Date: 02/28/1994 21:07:54
I've noticed a few problems with the new pccons.  Since 2/25's kernel,
I've noticed the message "pcprobe: reset error 2" on most (but not
all) boots.

In addition, I just noticed with today's kernel that most times pccons
tries to update the keyboard leds, it prints a message "pc: timeout
updating leds", but not always.  Despite the message, it changes the
leds correctly 100% of the time.  I have used both the caps-lock and
num-lock keys to test this.

When running X, things are slightly different.  Now, when pressing
caps-lock or num-lock, the warning message is printed 100% of the
time, and the leds change 0% of the time.  Before the pccons change
(2/23 I think), the keyboard leds worked properly in X.

Pccons works fine other than the messages and the leds (when running
X).

I'm running on a Gateway 2000 486 DX-2/66 VLB, 16mb RAM, Gateway
AnyKey keyboard, ATI Graphics Ultra Pro w/ 2mb VRAM.

Just for kicks, I tried the following change.  It made no difference
whatsoever as far as I could tell.

	Mark
--------------------------------------------------------------------
Email: Mark_Weaver@brown.edu           | Brown University
PGP Key: finger mhw@cs.brown.edu       | Dept of Computer Science


--- pccons.c.mhw1	Fri Feb 25 05:58:16 1994
+++ pccons.c	Mon Feb 28 14:52:33 1994
@@ -139,6 +139,8 @@
 
 static unsigned int addr_6845 = MONO_BASE;
 
+#define KBD_TIMEOUT	400000
+
 char *sget __P((void));
 void sput __P((u_char *, int));
 
@@ -153,7 +155,7 @@
 {
 	u_int i;
 
-	for (i = 100000; i; i--)
+	for (i = KBD_TIMEOUT; i; i--)
 		if ((inb(KBSTATP) & KBS_IBF) == 0)
 			return 1;
 	return 0;
@@ -208,7 +210,7 @@
 		ack = nak = 0;
 		outb(KBOUTP, val);
 		if (polling)
-			for (i = 100000; i; i--) {
+			for (i = KBD_TIMEOUT; i; i--) {
 				if (inb(KBSTATP) & KBS_DIB) {
 					register u_char c;
 					c = inb(KBDATAP);
@@ -226,7 +228,7 @@
 				}
 			}
 		else
-			for (i = 100000; i; i--) {
+			for (i = KBD_TIMEOUT; i; i--) {
 				if (ack)
 					return 1;
 				if (nak)

------------------------------------------------------------------------------