Skip to content
  • Jason Gerecke's avatar
    HID: wacom: generic: Send MSC_SERIAL and ABS_MISC when leaving prox · 993f0d93
    Jason Gerecke authored
    The latest generation of pro devices (MobileStudio Pro, 2nd-gen Intuos
    Pro, Cintiq Pro) send a serial number of '0' whenever the pen is too far
    away for reliable communication. Userspace defines that a serial number
    of '0' is invalid, so we need to be careful not to actually forward
    this value. Additionally, since EMR ISDv4 devices do not support serial
    numbers or tool IDs, we'd like to not send these events if they aren't
    necessary.
    
    The existing code achieves these goals by adding a check for a non-zero
    serial number within the wacom_wac_pen_report function. The MSC_SERIAL
    and ABS_MISC events are only sent if the serial number is non-zero. This
    code fails, however when the pen for a pro device leaves proximity. When
    the pen leaves prox and the tablet sends a serial of 0, wacom_wac_pen_event
    dutifully clears the serial number. When wacom_wac_pen_report is called,
    it does not send either the MSC_SERIAL of the exiting tool nor an ABS_MISC
    event.
    
    This patch prevents the wacom_wac_pen_event function from clearing an
    already-set serial number. This ensures that we have the serial number
    handy when exiting proximity, but requires us to manually clear it
    afterwards to ensure the driver does not send stale data (e.g. when
    switching between AES pens that report a serial nubmer of 0 for the
    first few fully in-proximity packets).
    
    Fixes: f85c9dc6
    
     ("HID: wacom: generic: Support tool ID and additional tool types")
    Cc: stable # v4.10 <stable@vger.kernel.org>
    Signed-off-by: default avatarPing Cheng <ping.cheng@wacom.com>
    Signed-off-by: default avatarJason Gerecke <jason.gerecke@wacom.com>
    Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
    993f0d93