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

Reply via email to