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