• Jason Gerecke's avatar
    HID: wacom: Ignore the confidence flag when a touch is removed · df03e9bd
    Jason Gerecke authored
    AES hardware may internally re-classify a contact that it thought was
    intentional as a palm. Intentional contacts are reported as "down" with
    the confidence bit set. When this re-classification occurs, however, the
    state transitions to "up" with the confidence bit cleared. This kind of
    transition appears to be legal according to Microsoft docs, but we do
    not handle it correctly. Because the confidence bit is clear, we don't
    call `wacom_wac_finger_slot` and update userspace. This causes hung
    touches that confuse userspace and interfere with pen arbitration.
    
    This commit adds a special case to ignore the confidence flag if a contact
    is reported as removed. This ensures we do not leave a hung touch if one
    of these re-classification events occured. Ideally we'd have some way to
    also let userspace know that the touch has been re-classified as a palm
    and needs to be canceled, but that's not possible right now :)
    
    Link: https://github.com/linuxwacom/input-wacom/issues/288
    Fixes: 7fb0413b (HID: wacom: Use "Confidence" flag to prevent reporting invalid contacts)
    CC: stable@vger.kernel.org
    Signed-off-by: default avatarJason Gerecke <jason.gerecke@wacom.com>
    Reviewed-by: default avatarPing Cheng <ping.cheng@wacom.com>
    Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
    df03e9bd
wacom_wac.c 154 KB