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