1. 02 May, 2017 2 commits
  2. 26 Apr, 2017 1 commit
  3. 20 Apr, 2017 1 commit
    • 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
  4. 19 Apr, 2017 1 commit
    • Jason Gerecke's avatar
      HID: wacom: Treat HID_DG_TOOLSERIALNUMBER as unsigned · 286f3f47
      Jason Gerecke authored
      Because HID_DG_TOOLSERIALNUMBER doesn't first cast the value recieved from HID
      to an unsigned type, sign-extension rules can cause the value of
      wacom_wac->serial[0] to inadvertently wind up with all 32 of its highest bits
      set if the highest bit of "value" was set.
      
      This can cause problems for Tablet PC devices which use AES sensors and the
      xf86-input-wacom userspace driver. It is not uncommon for AES sensors to send a
      serial number of '0' while the pen is entering or leaving proximity. The
      xf86-input-wacom driver ignores events with a serial number of '0' since it
      cannot match them up to an in-use tool.  To ensure the xf86-input-wacom driver
      does not ignore the final out-of-proximity event, the kernel does not send
      MSC_SERIAL events when the value of wacom_wac->serial[0] is '0'. If the highest
      bit of HID_DG_TOOLSERIALNUMBER is set by an in-prox pen which later leaves
      proximity and sends a '0' for HID_DG_TOOLSERIALNUMBER, then only the lowest 32
      bits of wacom_wac->serial[0] are actually cleared, causing the kernel to send
      an MSC_SERIAL event. Since the 'input_event' function takes an 'int' as
      argument, only those lowest (now-cleared) 32 bits of wacom_wac->serial[0] are
      sent to userspace, causing xf86-input-wacom to ignore the event. If the event
      was the final out-of-prox event, then xf86-input-wacom may remain in a state
      where it believes the pen is in proximity and refuses to allow other devices
      under its control (e.g. the touchscreen) to move the cursor.
      
      It should be noted that EMR devices and devices which use both the
      HID_DG_TOOLSERIALNUMBER and WACOM_HID_WD_SERIALHI usages (in that order) would
      be immune to this issue. It appears only AES devices are affected.
      
      Fixes: f85c9dc6 ("HID: wacom: generic: Support tool ID and additional tool types")
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarJason Gerecke <jason.gerecke@wacom.com>
      Acked-by: default avatarBenjamin Tissoires <benjamin.tissoires@redhat.com>
      Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
      286f3f47
  5. 11 Apr, 2017 1 commit
  6. 06 Apr, 2017 29 commits
  7. 30 Mar, 2017 4 commits
  8. 24 Mar, 2017 1 commit