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