• Jason Gerecke's avatar
    HID: wacom: Override incorrect logical maximum contact identifier · 6f107fab
    Jason Gerecke authored
    It apears that devices designed around Wacom's G11 chipset (e.g. Lenovo
    ThinkPad Yoga 260, Lenovo ThinkPad X1 Yoga, Dell XPS 12 9250, Dell Venue
    8 Pro 5855, etc.) suffer from a common issue in their HID descriptors.
    The logical maximum is not updated for the "Contact Identifier" usage,
    leaving it as just "1" despite these devices being capable of tracking
    far more touches.
    
    Commit 60a22186 began ignoring usages with out-of-range values,
    causing problems for devices based on this chipset. Touches after
    the first will have an out-of-range Contact Identifier, and ignoring
    that usage will cause the kernel to incorrectly slot each finger's
    events (along with all the knock-on userspace effects that entails).
    
    This commit checks for these buggy descriptors and updates the maximum
    where required. Prior chipsets have used "255" as the maximum (and the
    G11, at least, doesn't seem to actually use IDs outside the range of
    1..CONTACTMAX) so continue using this value.
    
    Cc: stable@vger.kernel.org
    Fixes: 60a22186 ("HID: wacom: generic: add support for touchring")
    Signed-off-by: default avatarJason Gerecke <jason.gerecke@wacom.com>
    Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
    6f107fab
wacom_wac.c 137 KB