Index: sys/dev/pckbport/synaptics.c
===================================================================
RCS file: /cvsroot/src/sys/dev/pckbport/synaptics.c,v
retrieving revision 1.49
diff -p -u -r1.49 synaptics.c
--- sys/dev/pckbport/synaptics.c        2 Jun 2019 08:55:00 -0000       1.49
+++ sys/dev/pckbport/synaptics.c        28 Jun 2019 06:25:57 -0000
@@ -1154,7 +1154,7 @@ pms_synaptics_input(void *vsc, int data)

       getmicrouptime(&psc->current);

-       if (psc->inputstate > 0) {
+       if (psc->inputstate != 0) {
               timersub(&psc->current, &psc->last, &diff);
               if (diff.tv_sec > 0 || diff.tv_usec >= 40000) {
                       aprint_debug_dev(psc->sc_dev,
@@ -1173,14 +1173,23 @@ pms_synaptics_input(void *vsc, int data)
       psc->last = psc->current;

       switch (psc->inputstate) {
+       case -5:
+       case -4:
+       case -3:
+       case -2:
+       case -1:
       case 0:
               if ((data & 0xc8) != 0x80) {
                       aprint_debug_dev(psc->sc_dev,
                           "pms_input: 0x%02x out of sync\n", data);
+                       /* use negative counts to limit resync phase */
+                       psc->inputstate--;
                       return; /* not in sync yet, discard input */
               }
+               psc->inputstate = 0;
               /*FALLTHROUGH*/

+       case -6:
       case 3:
               if ((data & 8) == 8) {
                       aprint_debug_dev(psc->sc_dev,