NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

kern/58134: pms(4) Synaptics trackpad completely unusable after code changes to drop packets



>Number:         58134
>Category:       kern
>Synopsis:       pms(4) Synaptics trackpad completely unusable after code changes to drop packets
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    kern-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Tue Apr 09 20:20:02 +0000 2024
>Originator:     David H. Gutteridge
>Release:        10.99.10 and 10.0
>Organization:
TNF
>Environment:
>Description:
synaptics.c r. 1.76 introduced a series of changes, including ignoring
packets that aren't "within the bounds of the trackpad". Unfortunately,
this determination is incorrect for some trackpads. In my case, it
makes my trackpad (which previously worked fine in 9.x) completely
unusable. Every packet is ignored, including left clicks from the
physical button itself. (This was evident from simply enabling the
synaptics debugging sysctl, since these packet drops are then logged.)

Probably related to this, changes made around that time also seem to
have garbled the determination of the bounds of the trackpad. I am
actually unable to correct all of them with the sysctl variables
exposed. In some cases, if I change them, the kernel reports the
changed value, then that is immediately clobbered back into the
(wrong?) state originally determined by the driver.

Regardless of the second point, if I simply disable a single block of
code added in r. 1.76, the trackpad becomes fully usable as before. I'm
using that crude hack at the moment. (Too many other concerns and not
enough familiarity with these components to prioritize my looking into
this further.)

>How-To-Repeat:
Update an LG X110 from 9.3_STABLE to 10.x. (Yes, that is a "very old"
netbook.)
>Fix:
Not an actual fix, of course, just a hack.

Index: synaptics.c
===================================================================
RCS file: /cvsroot/src/sys/dev/pckbport/synaptics.c,v
retrieving revision 1.81
diff -u -r1.81 synaptics.c
--- synaptics.c	28 Sep 2022 16:43:00 -0000	1.81
+++ synaptics.c	9 Apr 2024 16:07:46 -0000
@@ -1420,6 +1420,7 @@
 			nsp.sp_z = psc->packet[2];
 		}
 
+#if 0
 		/*
 		 * Check if the x and y are non-zero that they
 		 * are within the bounds of the trackpad
@@ -1441,6 +1442,8 @@
 			return;
 		}
 
+#endif
+
 		nsp.sp_finger_count = pms_synaptics_get_fingers(psc,
 		    nsp.sp_w, nsp.sp_z);
 



Home | Main Index | Thread Index | Old Index