udev: fix ALPS firmware detection
authorPeter Hutterer <peter.hutterer@who-t.net>
Tue, 9 Feb 2016 00:37:42 +0000 (10:37 +1000)
committerPeter Hutterer <peter.hutterer@who-t.net>
Tue, 9 Feb 2016 22:08:31 +0000 (08:08 +1000)
The firmware version is in id.version, not id.model which is always
PSMOUSE_ALPS for ALPS devices.

The various fw versions are listed in <kernel>/drivers/input/mouse/alps.h and
are all hex numbers. Version 8 is actually 0x800, change the match
accordingly.

Expected side-effect: earlier versions of ALPS touchpads now lose their
(erroneous) size assignment.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
udev/90-libinput-model-quirks.hwdb
udev/libinput-model-quirks.c

index f23a7f9..6225da1 100644 (file)
@@ -22,8 +22,8 @@ libinput:name:*AlpsPS/2 ALPS DualPoint TouchPad:dmi:*
 libinput:name:*AlpsPS/2 ALPS GlidePoint:dmi:*
  LIBINPUT_MODEL_ALPS_TOUCHPAD=1
 
-libinput:name:*AlpsPS/2 ALPS DualPoint TouchPad:fwversion:8
-libinput:name:*AlpsPS/2 ALPS GlidePoint:fwversion:8
+libinput:name:*AlpsPS/2 ALPS DualPoint TouchPad:fwversion:800
+libinput:name:*AlpsPS/2 ALPS GlidePoint:fwversion:800
  LIBINPUT_ATTR_SIZE_HINT=100x55
 
 ##########################################
index 67115fa..c8baae7 100644 (file)
@@ -63,9 +63,9 @@ handle_touchpad_alps(struct udev_device *device)
        if (sscanf(product, "%x/%x/%x/%x", &bus, &vid, &pid, &version) != 4)
                return;
 
-       /* ALPS' firmware version is the PID */
+       /* ALPS' firmware version is the version */
        if (pid)
-               printf("LIBINPUT_MODEL_FIRMWARE_VERSION=%d\n", pid);
+               printf("LIBINPUT_MODEL_FIRMWARE_VERSION=%x\n", version);
 }
 
 static void