On Fri, 2012-07-06 at 10:00 +0000, Stuart Henderson wrote: > On 2012-07-04, mlambda <mlam...@gmail.com> wrote: > > Sometimes the touchpad doesn't work (the two buttons work, but the > > cursor doesn't move), unfortunately this doesn't seem to be reproducible > > and can only be fixed by rebooting. > > I suspect there is probably a timing issue with the hardware that we > hit occasionally, I see it from time to time (though in the past I've hit > it much more often). I often (but not always) find that suspending and > resuming clears the problem, this is easier to do if you set > machdep.lidsuspend=1 in sysctl.conf.
If I increase the polling delay in sys/dev/ic/pckbc.c (-current kernel) significantly (see patch below), the touchpad always works. The keyboard however still stops working occasionally. It would be great if someone who is familiar with this driver could have a look at this. dmesg: touchpad works, keyboard works: [...] pckbc0 at isa0 port 0x60/5 pckbd: trying table 3 pckbd: table "3f" != 3, trying 2 pckbd: trying table 2 pckbd: settling on table 2 pckbd0 at pckbc0 (kbd slot) pckbc0: using irq 1 for kbd slot wskbd0 at pckbd0: console keyboard, using wsdisplay0 kbc: aux echo: 5a pms0 at pckbc0 (aux slot) pckbc0: using irq 12 for aux slot wsmouse0 at pms0 mux 0 lost kbd 0xfa pckbc_cmd: timeout lost kbd 0xfa pckbc_cmd: timeout pckbc_cmd: RESEND lost kbd 0xfe pckbc_cmd: timeout pms0: protocol type 0 pcppi0 at isa0 port 0x61 spkr0 at pcppi0 npx0 at isa0 port 0xf0/16: reported by CPUID; using exception 16 mtrr: Pentium Pro MTRR support uvideo0 at uhub0 port 5 configuration 1 interface 0 "SuYin Acer Crystal Eye webcam" rev 2.00/0.01 addr 2 video0 at uvideo0 vscsi0 at root scsibus0 at vscsi0: 256 targets softraid0 at root scsibus1 at softraid0: 256 targets root on wd0a (bb11e7e4cec55775.a) swap on wd0b dump on wd0b pms0: Synaptics touchpad, firmware 7.2 pms0: protocol type 2 pms0: protocol type 2 pms0: protocol type 2 pms0: protocol type 2 sometimes also: dmesg: touchpad works, keyboard works: [...] pckbc0 at isa0 port 0x60/5 pckbd: trying table 3 pckbd: table "3f" != 3, trying 2 pckbd: trying table 2 pckbd: settling on table 2 pckbd0 at pckbc0 (kbd slot) pckbc0: using irq 1 for kbd slot wskbd0 at pckbd0: console keyboard, using wsdisplay0 kbc: aux echo: 5a pms0 at pckbc0 (aux slot) pckbc0: using irq 12 for aux slot wsmouse0 at pms0 mux 0 lost kbd 0xfe pckbc_cmd: timeout pckbc_cmd: no data pms0: reset error 60 (response 0xaa, type 0x00) lost kbd 0xfe pckbc_cmd: timeout lost kbd 0xfe pckbc_cmd: timeout pms0: protocol type 0 pcppi0 at isa0 port 0x61 spkr0 at pcppi0 npx0 at isa0 port 0xf0/16: reported by CPUID; using exception 16 mtrr: Pentium Pro MTRR support uvideo0 at uhub0 port 5 configuration 1 interface 0 "SuYin Acer Crystal Eye webcam" rev 2.00/0.01 addr 2 video0 at uvideo0 vscsi0 at root scsibus0 at vscsi0: 256 targets softraid0 at root scsibus1 at softraid0: 256 targets root on wd0a (bb11e7e4cec55775.a) swap on wd0b dump on wd0b pms0: Synaptics touchpad, firmware 7.2 pms0: protocol type 2 pms0: protocol type 2 pms0: protocol type 2 pms0: protocol type 2 dmesg: touchpad works, keyboard doesn't work: [...] pckbc0 at isa0 port 0x60/5 pckbd: trying table 3 pckbd: table "3f" != 3, trying 2 pckbd: trying table 2 pckbd: settling on table 2 pckbd0 at pckbc0 (kbd slot) pckbc0: using irq 1 for kbd slot wskbd0 at pckbd0: console keyboard, using wsdisplay0 kbc: aux echo: 5a pms0 at pckbc0 (aux slot) pckbc0: using irq 12 for aux slot wsmouse0 at pms0 mux 0 lost kbd 0xfe pckbc_cmd: timeout pckbc_cmd: no data pms0: reset error 60 (response 0xaa, type 0x00) lost kbd 0xfe pckbc_cmd: timeout pckbc_cmd: RESEND lost kbd 0xfa lost kbd 0xaa pckbc_cmd: timeout pms0: reset error 5 (response 0xaa, type 0x00) pms0: protocol type 0 lost kbd 0xfa pckbc_cmd: timeout pms0: disable error pcppi0 at isa0 port 0x61 spkr0 at pcppi0 npx0 at isa0 port 0xf0/16: reported by CPUID; using exception 16 mtrr: Pentium Pro MTRR support uvideo0 at uhub0 port 5 configuration 1 interface 0 "SuYin Acer Crystal Eye webcam" rev 2.00/0.01 addr 2 video0 at uvideo0 vscsi0 at root scsibus0 at vscsi0: 256 targets softraid0 at root scsibus1 at softraid0: 256 targets root on wd0a (bb11e7e4cec55775.a) swap on wd0b dump on wd0b pms0: Synaptics touchpad, firmware 7.2 pms0: protocol type 2 pms0: protocol type 2 pms0: protocol type 2 pms0: protocol type 2 patch: diff -ur src/sys/dev/ic/pckbc.c src_patched/sys/dev/ic/pckbc.c --- src/sys/dev/ic/pckbc.c 2012-02-02 22:40:20.000000000 +0100 +++ src_patched/sys/dev/ic/pckbc.c 2012-07-10 21:14:58.000000000 +0200 @@ -26,6 +26,8 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#define PCKBCDEBUG + #include <sys/param.h> #include <sys/systm.h> #include <sys/timeout.h> @@ -105,7 +107,7 @@ #define KBC_DEVCMD_RESEND 0xfe #define KBC_DEVCMD_BAT 0xaa -#define KBD_DELAY DELAY(8) +#define KBD_DELAY DELAY(100) static inline int pckbc_wait_output(bus_space_tag_t iot, bus_space_handle_t ioh_c) diff -ur src/sys/dev/pckbc/pckbd.c src_patched/sys/dev/pckbc/pckbd.c --- src/sys/dev/pckbc/pckbd.c 2011-03-17 16:42:05.000000000 +0100 +++ src_patched/sys/dev/pckbc/pckbd.c 2012-07-10 21:13:27.000000000 +0200 @@ -68,6 +68,8 @@ * code to work keyboard for PC-style console */ +#define DEBUG + #include <sys/param.h> #include <sys/systm.h> #include <sys/device.h> @@ -1047,3 +1049,5 @@ struct cfdriver pckbd_cd = { NULL, "pckbd", DV_DULL }; + +#undef DEBUG diff -ur src/sys/dev/pckbc/pms.c src_patched/sys/dev/pckbc/pms.c --- src/sys/dev/pckbc/pms.c 2012-07-01 14:59:34.000000000 +0200 +++ src_patched/sys/dev/pckbc/pms.c 2012-07-10 21:13:54.000000000 +0200 @@ -24,6 +24,8 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#define DEBUG + #include <sys/param.h> #include <sys/systm.h> #include <sys/device.h> @@ -1358,3 +1360,5 @@ alps->old_buttons = buttons; } } + +#undef DEBUG