Hi,

updating my laptop (Acer TM 512T) to 2.2.16 (-SuSE which is a 17pre1x with
some additional drivers and some of Andrea's VM fixes), I started to have a
lot of trouble with the builtin Synaptics Touchpad.

Using the touchpad, it suddenly started to stop working for a couple of
seconds and GPM logged Tossing PS/2 data messages.\ to the syslog.

It turned out to be a problem in the kernel's psaux driver.

Here's the patch that caused the problem.

--- linux-2.2.14.SuSE/drivers/char/pc_keyb.c    Sat Mar 18 22:31:46 2000
+++ linux.susefont/drivers/char/pc_keyb.c       Mon Jul 17 22:36:18 2000
@@ -73,6 +76,9 @@
 
 static int __init psaux_init(void);
 
+#define AUX_RECONNECT    170
+/* #define CHECK_RECONNECT_SCANCODE 1 */
+
 static struct aux_queue *queue;        /* Mouse data buffer. */
 static int aux_count = 0;
 /* used when we send commands to the mouse that expect an ACK. */
@@ -393,6 +399,19 @@
                }
                mouse_reply_expected = 0;
        }
+    else if(scancode == AUX_RECONNECT){
+        queue->head = queue->tail = 0;  /* Flush input queue */
+        /*
+         * need this stuff? seems to work fine w/o it for me
+        aux_write_ack(AUX_SET_SAMPLE);
+        aux_write_ack(100);
+        aux_write_ack(AUX_SET_RES);
+        aux_write_ack(3);
+        aux_write_ack(AUX_SET_SCALE21);
+        */
+        aux_write_ack(AUX_ENABLE_DEV);  /* ping the mouse :) */
+        return;
+    }
 
        add_mouse_randomness(scancode);
        if (aux_count) {


Commenting out the check for AUX_RECONNECT does cure my problems.

Apparently, the synps2 does send the reconnect scancode for normal (or
special enhanced synps/2) mouse events.

The question is how this can be solved in a general way. I guess the code
was introduced to solve some problem. (Does the kernel get this scancode
when you plug a PS/2 mouse?)
How can we do it?
* Make the kernel recognize synps2 and ignore AUX_RECONNECT then.
* Make the gpm -tsynps2 do an ioctl on psaux which makes the kernel
  ignore ...
* Make the kernel aware of some state (mouse connected?) and only handle
  AUX_RECONNECT in case the mouse is not already connected.

I have not the slightest clue about PS/2 protocol, so I'd prefer somebody
with more knowledge to have a look into this.

Regards,
-- 
Kurt Garloff  <[EMAIL PROTECTED]>                          Eindhoven, NL
GPG key: See mail header, key servers         Linux kernel development
SuSE GmbH, Nuernberg, FRG                               SCSI, Security



----- End forwarded message -----

-- 
Kurt Garloff                   <[EMAIL PROTECTED]>         [Eindhoven, NL]
Physics: Plasma simulations <[EMAIL PROTECTED]>   [TU Eindhoven, NL]
Linux: SCSI, Security          <[EMAIL PROTECTED]>   [SuSE Nuernberg, FRG]
 (See mail header or public key servers for PGP2 and GPG public keys.)

PGP signature

Reply via email to