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) {

Reply via email to