Subject: port-i386/35698: Touchpad problems on Acer Aspire 1691
To: None <port-i386-maintainer@netbsd.org, gnats-admin@netbsd.org,>
From: None <matt.a.martin@gmail.com>
List: netbsd-bugs
Date: 02/19/2007 04:55:00
>Number: 35698
>Category: port-i386
>Synopsis: Touchpad problems on Acer Aspire 1691
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: port-i386-maintainer
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Mon Feb 19 04:55:00 +0000 2007
>Originator: Matt Martin
>Release: 4.0_BETA2
>Organization:
n/a
>Environment:
NetBSD Focus.local.non 4.0_BETA2 NetBSD 4.0_BETA2 (FOCUS) #2: Sun Feb 18 22:09:02 CST 2007 root@Focus.local.non:/usr/src/sys/arch/i386/compile/FOCUS i386
>Description:
Touchpad is almost completely unresponsive. It will repond at random *sometimes* if I drag my fingers around and push the buttons wildly. Most of the time it simply does nothing.
I tried disabling acpi and apm in the kernel thinking it to be a possible cause, but it did not help. The kernel I'm currently running is identical to GENERIC_LAPTOP, but loading my own DSDT. This problem occures with GENERIC_LAPTOP as well.
>How-To-Repeat:
Attempt to use the touchpad with wsmoused or X on an Acer Aspire 1691
>Fix:
Eventually I came across http://mail-index.netbsd.org/current-users/2005/11/12/0030.html
So I emailed him asking about it, as it was the same laptop. Rui Paulo replied with the following, after doing it the trackpad works fine so far:
Yes, the problem was not interrupts.
IIRC the driver is not understanding correctly the input of the
trackpad.
In pms_synaptics_input():
-----------
switch (psc->inputstate) {
case 0:
if ((data & 0xc8) != 0x80) {
#ifdef SYNAPTICSDEBUG
printf("%s: pms_input: 0x%02x out of sync\n",
psc->sc_dev.dv_xname, data);
#endif
return; /* not in sync yet, discard input */
}
/*FALLTHROUGH*/
case 3:
if ((data & 8) == 8) {
#ifdef SYNAPTICSDEBUG
printf("%s: pms_input: dropped in relative mode, "
"reset\n", psc->sc_dev.dv_xname);
#endif
psc->inputstate = 0;
psc->sc_enabled = 0;
wakeup(&psc->sc_enabled);
return;
}
}
-----------
Try disabling/deleting this switch statement. It worked for me, so no
guarantees ... ;-)
Ah, the file is src/sys/dev/pckbport/synaptics.c.