Hi,
the newer Geyser 2 touchpad has only 9 sensors in the Y-direction instead
of 16 like the other Apple touch pads.
The driver sets sc_y_sensors correctly and then immediately overwrites
it with the wrong default.
I think we should first set the defaults and then treat the special
cases.
ok?
Index: utpms.c
===================================================================
RCS file: /mount/openbsd/cvs/src/sys/dev/usb/utpms.c,v
retrieving revision 1.9
diff -u -p -r1.9 utpms.c
--- utpms.c 25 Aug 2020 14:01:58 -0000 1.9
+++ utpms.c 9 Sep 2020 22:45:42 -0000
@@ -311,6 +311,13 @@ utpms_attach(struct device *parent, stru
for (i = 0; i < nitems(utpms_devices); i++) {
pd = &utpms_devices[i];
if (product == pd->product && vendor == pd->vendor) {
+ printf(" Trackpad\n");
+ sc->sc_noise = pd->noise;
+ sc->sc_threshold = pd->threshold;
+ sc->sc_x_factor = pd->x_factor;
+ sc->sc_x_sensors = pd->x_sensors;
+ sc->sc_y_factor = pd->y_factor;
+ sc->sc_y_sensors = pd->y_sensors;
switch (pd->type) {
case FOUNTAIN:
printf(": Fountain");
@@ -325,13 +332,6 @@ utpms_attach(struct device *parent, stru
printf(": Geyser 2");
break;
}
- printf(" Trackpad\n");
- sc->sc_noise = pd->noise;
- sc->sc_threshold = pd->threshold;
- sc->sc_x_factor = pd->x_factor;
- sc->sc_x_sensors = pd->x_sensors;
- sc->sc_y_factor = pd->y_factor;
- sc->sc_y_sensors = pd->y_sensors;
break;
}
}