On Thu, Sep 10, 2020 at 10:13:30AM +0200, Tobias Heider wrote:
> 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?
*not* 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");
You moved the printf, that's wrong. I guess your dmesg will look like:
utpms0 Trackpad
: GeyserANOTHERDRIVER: lalala
but it is supposed to be:
utpms0: Geyser Trackpad
ANOTHERDRIVER: lalala
> + 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");
So, the " Trackpad\n" printf *needs* to stay here while the rest can
happily move upstairs.
With that fixed, ok patrick@
> - 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;
> }
> }
>