Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 28 Mar 1997 12:33:39 +0900
From:      Kazutaka YOKOTA <yokota@zodiac.mech.utsunomiya-u.ac.jp>
To:        Ian Kallen <spidaman@well.com>
Cc:        freebsd-mobile@freebsd.org, freebsd-hackers@freebsd.org, yokota@zodiac.mech.utsunomiya-u.ac.jp
Subject:   Re: (Dell Latitude) psm0/sc0 conflicts killing X? 
Message-ID:  <199703280333.MAA26251@zodiac.mech.utsunomiya-u.ac.jp>
In-Reply-To: Your message of "Thu, 27 Mar 1997 07:53:23 PST." <Pine.GSO.3.93.970327074355.18816A-100000@well.com> 
References:  <Pine.GSO.3.93.970327074355.18816A-100000@well.com> 

next in thread | previous in thread | raw e-mail | index | archive | help

>I don't know what else changed when I went from 2.2-GAMMA w/o PAO (Used
>the zp drivers from the 3c589) to 2.2.1-RELEASE... I'm on a Dell XPi p100
>and Xinside's X server was doing fine w/ 800X600 @256 but since I ran the
>upgrade and applied the PAO patches, I've had to explicitly re-enable psm0
>by booting w/ -c (other X won't start at all) 

I think this is normal. The psm driver is disabled in GENERIC kernel,
with or without PAO, by default, isn't it?

>but the keyboard is dead
>once I'm in X.  I tried reinstalling Xinside but that made no
>differnce.  Any comments or suggestions (if a look @ my kernel config
>is needed to comment on it, I'll send that along as well) appreciated!

I had a report from another Dell Latitude XPi owner stating that if he
tries to change the keyboard repeat rate by kbdcontrol, his keyboard
freezes. He and I are now chasing the problem. It appears that the
keyboard controller of his Latitude behaves in an unusual way. I wonder
the cause of your problem is similar to his. 

I would be very grateful if you could try the following patch to
/sys/i386/isa/syscons.c, rebuild the kernel, and try `kbdcontrol -r
fast' or try starting X. Please send me debug messages you see.
You may see something like:

    sc0: enabling tty intr. (set_keyboard)
    sc0: about to send command and data (set_keyboard)
    sc0: command:xx data:yy ret:zz (set_keybard)

in the console (vty0). If you see:

    sc0: kbdc is LOCKED!! (scintr)

your problem is the same as his.

Kazu

--- syscons.c-1.205	Mon Mar  3 10:09:00 1997
+++ syscons.c	Mon Mar 24 12:04:57 1997
@@ -647,6 +651,12 @@
 	mark_all(cur_console);
     }
 
+    if (!kbdc_lock(sc_kbdc, TRUE)) {
+	log(LOG_DEBUG, "sc0: kbdc is LOCKED!! (scintr)\n");
+	return;
+    } else {
+	kbdc_lock(sc_kbdc, FALSE);
+    }
     /* 
      * Loop while there is still input to get from the keyboard.
      * I don't think this is nessesary, and it doesn't fix
@@ -3114,7 +3131,7 @@
     if ((c == -1) 
 	|| !set_controller_command_byte(sc_kbdc, 
             kbdc_get_device_mask(sc_kbdc),
-            KBD_ENABLE_KBD_PORT | KBD_DISABLE_KBD_INT
+            KBD_DISABLE_KBD_PORT | KBD_DISABLE_KBD_INT
                 | KBD_DISABLE_AUX_PORT | KBD_DISABLE_AUX_INT)) {
 	/* CONTROLLER ERROR */
         kbdc_lock(sc_kbdc, FALSE);
@@ -3128,9 +3145,14 @@
      * but the timeout routine (`scrn_timer()') will be blocked 
      * by the lock flag set via `kbdc_lock()'
      */
+    log(LOG_DEBUG, "sc0: enabling tty intr. (set_keyboard)\n");
     splx(s);
+    log(LOG_DEBUG, "sc0: about to send command and data (set_keyboard)\n");
 
-    send_kbd_command_and_data(sc_kbdc, command, data);
+    log(LOG_DEBUG, "sc0: command:%x data:%x ret:%x (set_keybard)\n",
+	command, data, 
+	send_kbd_command_and_data(sc_kbdc, command, data));
+    send_kbd_command(sc_kbdc, KBDC_ENABLE_KBD);
 
     /* restore the interrupts */
     if (!set_controller_command_byte(sc_kbdc,




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199703280333.MAA26251>