Hi, Elantech has elantech_knock() Synaptics has synaptics_knock() Alps should have alps_knock()
I'd ask for ok, but I don't have an Alps touchpad to test it. Index: src/sys/dev/pckbc/pms.c =================================================================== RCS file: /cvs/src/sys/dev/pckbc/pms.c,v retrieving revision 1.86 diff -u -p -r1.86 pms.c --- src/sys/dev/pckbc/pms.c 29 Apr 2018 08:50:04 -0000 1.86 +++ src/sys/dev/pckbc/pms.c 2 May 2018 22:58:03 -0000 @@ -307,6 +307,7 @@ int synaptics_query(struct pms_softc *, int synaptics_get_hwinfo(struct pms_softc *); void synaptics_sec_proc(struct pms_softc *); +int alps_knock(struct pms_softc *); int alps_sec_proc(struct pms_softc *); int alps_get_hwinfo(struct pms_softc *); @@ -1432,10 +1433,8 @@ alps_get_hwinfo(struct pms_softc *sc) } int -pms_enable_alps(struct pms_softc *sc) +alps_knock(struct pms_softc *sc) { - struct alps_softc *alps = sc->alps; - struct wsmousedev_attach_args a; u_char resp[3]; if (pms_set_resolution(sc, 0) || @@ -1445,8 +1444,21 @@ pms_enable_alps(struct pms_softc *sc) pms_get_status(sc, resp) || resp[0] != PMS_ALPS_MAGIC1 || resp[1] != PMS_ALPS_MAGIC2 || - (resp[2] != PMS_ALPS_MAGIC3_1 && resp[2] != PMS_ALPS_MAGIC3_2 && - resp[2] != PMS_ALPS_MAGIC3_3)) + (resp[2] != PMS_ALPS_MAGIC3_1 && + resp[2] != PMS_ALPS_MAGIC3_2 && + resp[2] != PMS_ALPS_MAGIC3_3)) + return (-1); + + return (0); +} + +int +pms_enable_alps(struct pms_softc *sc) +{ + struct alps_softc *alps = sc->alps; + struct wsmousedev_attach_args a; + + if (alps_knock(sc)) goto err; if (sc->alps == NULL) {