HID: wacom: Limit touchstrip data to 13 bits
authorJason Gerecke <killertofu@gmail.com>
Wed, 16 Dec 2015 21:37:33 +0000 (13:37 -0800)
committerJiri Kosina <jkosina@suse.cz>
Thu, 17 Dec 2015 23:03:06 +0000 (00:03 +0100)
Commit c7f0522 uses sixteen bits of data in the construction of 'strip1'
and 'strip2'. This can cause problems in some cases, however, since some
tablets store flags in the MSB of data[2] and data[4] that should not be
included in these values. This restores the 0x1f mask that used prior
to c7f0522.

Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
drivers/hid/wacom_wac.c

index 22d32259e1f1a3ef741d173d579313b44f827fe2..cf878106f4ed892ba1d4c027730210b8fc2afaae 100644 (file)
@@ -545,8 +545,8 @@ static int wacom_intuos_pad(struct wacom_wac *wacom)
                                  ((data[6] & 0x0F) << 4)  |
                                  (data[5] & 0x0F);
                }
-               strip1 = (data[1] << 8) | data[2];
-               strip2 = (data[3] << 8) | data[4];
+               strip1 = ((data[1] & 0x1f) << 8) | data[2];
+               strip2 = ((data[3] & 0x1f) << 8) | data[4];
        }
 
        prox = (buttons & ~(~0 << nbuttons)) | (keys & ~(~0 << nkeys)) |