So I recently installed OpenBSD on an EeePC 900HD with an Elantech v1
touchpad (fw_version 0x20022).
This specific fw version for some reason sends inverted parity bits on a
cold boot, returning to normal after suspend & resume. That leads to a
failed parity check, dropped packets and ultimately a broken driver.

Index: pms.c
===================================================================
RCS file: /cvs/src/sys/dev/pckbc/pms.c,v
retrieving revision 1.93
diff -u -p -u -p -r1.93 pms.c
--- pms.c       4 Jul 2020 10:39:25 -0000       1.93
+++ pms.c       8 Aug 2020 14:45:14 -0000
@@ -2292,7 +2292,7 @@ pms_sync_elantech_v1(struct pms_softc *s
        }

        if (data < 0 || data >= nitems(elantech->parity) ||
-           elantech->parity[data] != p)
+           (elantech->fw_version != 0x20022 && elantech->parity[data] != p))
                return (-1);

        return (0);

Reply via email to