This patch adds a device configuration flag to pms.  It disables the
protocol lookup - which leaves touchpads in mouse emulation mode and
may be useful for diagnostic purposes and as a workaround for
protocol errors.

OK?


Index: dev/pckbc/pms.c
===================================================================
RCS file: /cvs/src/sys/dev/pckbc/pms.c,v
retrieving revision 1.89
diff -u -p -r1.89 pms.c
--- dev/pckbc/pms.c     19 Aug 2019 21:08:26 -0000      1.89
+++ dev/pckbc/pms.c     16 Sep 2019 14:03:59 -0000
@@ -38,6 +38,7 @@
 #include <dev/ic/pckbcvar.h>

 #include <dev/pckbc/pmsreg.h>
+#include <dev/pckbc/pmsvar.h>

 #include <dev/wscons/wsconsio.h>
 #include <dev/wscons/wsmousevar.h>
@@ -543,16 +544,19 @@ pms_dev_disable(struct pms_softc *sc)
 void
 pms_protocol_lookup(struct pms_softc *sc)
 {
-       int i;
+       int i, cf_flags;

        sc->protocol = &pms_protocols[0];
-       for (i = 1; i < nitems(pms_protocols); i++) {
-               pms_reset(sc);
-               if (pms_protocols[i].enable(sc)) {
-                       sc->protocol = &pms_protocols[i];
-                       break;
+
+       cf_flags = sc->sc_dev.dv_cfdata->cf_flags;
+       if ((cf_flags & PMSCF_DISABLE_EXTENDED_PROTOCOLS) == 0)
+               for (i = 1; i < nitems(pms_protocols); i++) {
+                       pms_reset(sc);
+                       if (pms_protocols[i].enable(sc)) {
+                               sc->protocol = &pms_protocols[i];
+                               break;
+                       }
                }
-       }

        DPRINTF("%s: protocol type %d\n", DEVNAME(sc), sc->protocol->type);
 }
Index: dev/pckbc/pmsvar.h
===================================================================
RCS file: dev/pckbc/pmsvar.h
diff -N dev/pckbc/pmsvar.h
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ dev/pckbc/pmsvar.h  16 Sep 2019 14:03:59 -0000
@@ -0,0 +1,3 @@
+/* $OpenBSD$ */
+
+#define PMSCF_DISABLE_EXTENDED_PROTOCOLS 0x01

Reply via email to