android_kernel_asus_sm8350/drivers/hid
Jason Gerecke b419fe1180 HID: wacom: Correct behavior when processing some confidence == false touches
commit 502296030ec6b0329e00f9fb15018e170cc63037 upstream.

There appear to be a few different ways that Wacom devices can deal with
confidence:

  1. If the device looses confidence in a touch, it will first clear
     the tipswitch flag in one report, and then clear the confidence
     flag in a second report. This behavior is used by e.g. DTH-2452.

  2. If the device looses confidence in a touch, it will clear both
     the tipswitch and confidence flags within the same report. This
     behavior is used by some AES devices.

  3. If the device looses confidence in a touch, it will clear *only*
     the confidence bit. The tipswitch bit will remain set so long as
     the touch is tracked. This behavior may be used in future devices.

The driver does not currently handle situation 3 properly. Touches that
loose confidence will remain "in prox" and essentially frozen in place
until the tipswitch bit is finally cleared. Not only does this result
in userspace seeing a stuck touch, but it also prevents pen arbitration
from working properly (the pen won't send events until all touches are
up, but we don't currently process events from non-confident touches).

This commit centralizes the checking of the confidence bit in the
wacom_wac_finger_slot() function and has 'prox' depend on it. In the
case where situation 3 is encountered, the treat the touch as though
it was removed, allowing both userspace and the pen arbitration to
act normally.

Signed-off-by: Tatsunosuke Tobita <tatsunosuke.tobita@wacom.com>
Signed-off-by: Ping Cheng <ping.cheng@wacom.com>
Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
Fixes: 7fb0413baa7f ("HID: wacom: Use "Confidence" flag to prevent reporting invalid contacts")
Cc: stable@vger.kernel.org
Signed-off-by: Jiri Kosina <jkosina@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2024-01-25 14:34:30 -08:00
..
i2c-hid HID: i2c-hid: fix GET/SET_REPORT for unnumbered reports 2022-04-15 14:18:12 +02:00
intel-ish-hid HID: intel_ish-hid: Add check for ishtp_dma_tx_map 2023-02-06 07:52:35 +01:00
usbhid HID: usbhid: free raw_report buffers in usbhid_stop 2021-10-06 15:42:39 +02:00
hid-a4tech.c HID: input: fix a4tech horizontal wheel custom usage 2019-08-05 14:37:15 +02:00
hid-accutouch.c
hid-alps.c HID: alps: Declare U1_UNICORN_LEGACY support 2022-08-25 11:17:57 +02:00
hid-apple.c HID: apple: Do not reset quirks when the Fn key is not found 2022-01-27 09:19:41 +01:00
hid-appleir.c
hid-asus.c HID: hid-asus: add const to read-only outgoing usb buffer 2023-12-20 15:41:23 +01:00
hid-aureal.c
hid-axff.c HID: Fix assumption that devices have inputs 2019-10-03 15:36:40 -04:00
hid-belkin.c
hid-betopff.c HID: betop: check shape of output reports 2023-02-06 07:52:39 +01:00
hid-bigbenff.c hid: bigben_probe(): validate report count 2023-03-11 16:43:49 +01:00
hid-cherry.c
hid-chicony.c HID: check for valid USB device for many HID drivers 2021-12-14 14:48:59 +01:00
hid-cmedia.c
hid-core.c HID: fix HID device resource race between HID core and debugging support 2023-12-08 08:44:23 +01:00
hid-corsair.c HID: check for valid USB device for many HID drivers 2021-12-14 14:48:59 +01:00
hid-cougar.c HID: do not call hid_set_drvdata(hdev, NULL) in drivers 2019-08-22 17:11:58 +02:00
hid-cp2112.c hid: cp2112: Fix duplicate workqueue initialization 2023-11-20 10:30:12 +01:00
hid-creative-sb0540.c HID: sb0540: add support for Creative SB0540 IR receivers 2019-09-03 16:52:04 +02:00
hid-cypress.c HID: cypress: Support Varmilo Keyboards' media hotkeys 2020-12-02 08:49:47 +01:00
hid-debug.c HID: fix HID device resource race between HID core and debugging support 2023-12-08 08:44:23 +01:00
hid-dr.c HID: Fix assumption that devices have inputs 2019-10-03 15:36:40 -04:00
hid-elan.c HID: elan: Fix potential double free in elan_input_configured 2022-06-14 18:11:33 +02:00
hid-elecom.c
hid-elo.c HID: check for valid USB device for many HID drivers 2021-12-14 14:48:59 +01:00
hid-emsff.c HID: Fix assumption that devices have inputs 2019-10-03 15:36:40 -04:00
hid-ezkey.c
hid-gaff.c HID: Fix assumption that devices have inputs 2019-10-03 15:36:40 -04:00
hid-gembird.c
hid-generic.c
hid-gfrm.c HID: do not call hid_set_drvdata(hdev, NULL) in drivers 2019-08-22 17:11:58 +02:00
hid-google-hammer.c HID: google: add jewel USB id 2023-06-09 10:28:59 +02:00
hid-gt683r.c HID: gt683r: add missing MODULE_DEVICE_TABLE 2021-06-18 09:58:58 +02:00
hid-gyration.c
hid-holtek-kbd.c HID: holtek: fix slab-out-of-bounds Write in holtek_kbd_input_event 2023-10-25 11:53:23 +02:00
hid-holtek-mouse.c HID: holtek: fix mouse probing 2021-12-29 12:23:33 +01:00
hid-holtekff.c HID: Fix assumption that devices have inputs 2019-10-03 15:36:40 -04:00
hid-hyperv.c HID: hyperv: fix possible memory leak in mousevsc_probe() 2022-11-25 17:42:04 +01:00
hid-icade.c
hid-ids.h HID: Add quirk for Dell Pro Wireless Keyboard and Mouse KM5221W 2023-11-28 16:50:15 +00:00
hid-input.c HID: Add Mapping for System Microphone Mute 2023-03-11 16:43:56 +01:00
hid-ite.c HID: ite: Enable QUIRK_TOUCHPAD_ON_OFF_REPORT on Acer Aspire Switch V 10 2023-01-18 11:40:48 +01:00
hid-jabra.c
hid-kensington.c
hid-keytouch.c
hid-kye.c
hid-lcpower.c
hid-led.c HID: hid-led: fix maximum brightness for Dream Cheeky 2022-06-14 18:11:33 +02:00
hid-lenovo.c HID: do not call hid_set_drvdata(hdev, NULL) in drivers 2019-08-22 17:11:58 +02:00
hid-lg2ff.c HID: Fix assumption that devices have inputs 2019-10-03 15:36:40 -04:00
hid-lg3ff.c HID: Fix assumption that devices have inputs 2019-10-03 15:36:40 -04:00
hid-lg4ff.c HID: hid-lg4ff: Add check for empty lbuf 2022-12-14 11:30:43 +01:00
hid-lg4ff.h
hid-lg.c HID: check for valid USB device for many HID drivers 2021-12-14 14:48:59 +01:00
hid-lg.h
hid-lgff.c HID: Fix assumption that devices have inputs 2019-10-03 15:36:40 -04:00
hid-logitech-dj.c HID: logitech-dj: Fix error handling in logi_dj_recv_switch_to_dj_mode() 2023-09-23 10:59:52 +02:00
hid-logitech-hidpp.c HID: logitech-hidpp: Fix kernel crash on receiver USB disconnect 2023-10-25 11:53:17 +02:00
hid-macally.c
hid-magicmouse.c HID: magicmouse: Do not set BTN_MOUSE on double report 2022-10-29 10:20:35 +02:00
hid-maltron.c
hid-mf.c HID: mf: add support for 0079:1846 Mayflash/Dragonrise USB Gamecube Adapter 2021-03-11 14:06:50 +01:00
hid-microsoft.c HID: microsoft: Add rumble support for the 8bitdo SN30 Pro+ controller 2020-09-17 13:47:48 +02:00
hid-monterey.c
hid-multitouch.c HID: multitouch: Add quirk for HONOR GLO-GXXX touchpad 2023-12-20 15:41:22 +01:00
hid-nti.c
hid-ntrig.c
hid-ortek.c
hid-penmount.c
hid-petalynx.c
hid-picolcd_backlight.c
hid-picolcd_cir.c
hid-picolcd_core.c HID: do not call hid_set_drvdata(hdev, NULL) in drivers 2019-08-22 17:11:58 +02:00
hid-picolcd_debugfs.c
hid-picolcd_fb.c
hid-picolcd_lcd.c
hid-picolcd_leds.c
hid-picolcd.h
hid-pl.c
hid-plantronics.c HID: plantronics: Additional PIDs for double volume key presses quirk 2023-01-18 11:41:43 +01:00
hid-primax.c
hid-prodikeys.c HID: check for valid USB device for many HID drivers 2021-12-14 14:48:59 +01:00
hid-quirks.c HID: add ALWAYS_POLL quirk for Apple kb 2023-12-20 15:41:21 +01:00
hid-redragon.c
hid-retrode.c
hid-rmi.c HID: rmi: Check that the RMI_STARTED bit is set before unregistering the RMI transport device 2020-01-04 19:18:13 +01:00
hid-roccat-arvo.c HID: check for valid USB device for many HID drivers 2021-12-14 14:48:59 +01:00
hid-roccat-arvo.h
hid-roccat-common.c
hid-roccat-common.h
hid-roccat-isku.c HID: check for valid USB device for many HID drivers 2021-12-14 14:48:59 +01:00
hid-roccat-isku.h
hid-roccat-kone.c HID: check for valid USB device for many HID drivers 2021-12-14 14:48:59 +01:00
hid-roccat-kone.h
hid-roccat-koneplus.c HID: check for valid USB device for many HID drivers 2021-12-14 14:48:59 +01:00
hid-roccat-koneplus.h
hid-roccat-konepure.c HID: check for valid USB device for many HID drivers 2021-12-14 14:48:59 +01:00
hid-roccat-kovaplus.c HID: check for valid USB device for many HID drivers 2021-12-14 14:48:59 +01:00
hid-roccat-kovaplus.h
hid-roccat-lua.c HID: check for valid USB device for many HID drivers 2021-12-14 14:48:59 +01:00
hid-roccat-lua.h
hid-roccat-pyra.c HID: check for valid USB device for many HID drivers 2021-12-14 14:48:59 +01:00
hid-roccat-pyra.h
hid-roccat-ryos.c HID: check for valid USB device for many HID drivers 2021-12-14 14:48:59 +01:00
hid-roccat-savu.c HID: check for valid USB device for many HID drivers 2021-12-14 14:48:59 +01:00
hid-roccat-savu.h
hid-roccat.c HID: roccat: Fix use-after-free in roccat_read() 2022-10-26 13:22:57 +02:00
hid-saitek.c HID: saitek: add madcatz variant of MMO7 mouse device ID 2022-11-10 17:57:53 +01:00
hid-samsung.c HID: check for valid USB device for many HID drivers 2021-12-14 14:48:59 +01:00
hid-sensor-custom.c HID: hid-sensor-custom: set fixed size for custom attributes 2023-01-18 11:41:04 +01:00
hid-sensor-hub.c HID: hid-sensor-hub: Return error for hid_set_field() failure 2021-06-18 09:58:58 +02:00
hid-sjoy.c
hid-sony.c HID: sony: Fix for broken buttons on DS3 USB dongles 2020-06-07 13:18:47 +02:00
hid-speedlink.c
hid-steam.c HID: steam: Prevent NULL pointer dereference in steam_{recv,send}_report 2022-09-05 10:27:45 +02:00
hid-steelseries.c
hid-sunplus.c
hid-tivo.c
hid-tmff.c HID: Fix assumption that devices have inputs 2019-10-03 15:36:40 -04:00
hid-topseed.c
hid-twinhan.c
hid-u2fzero.c HID: add hid_is_usb() function to make it simpler for USB detection 2021-12-14 14:48:58 +01:00
hid-uclogic-core.c HID: uclogic: Add HID_QUIRK_HIDINPUT_FORCE quirk 2023-01-18 11:40:48 +01:00
hid-uclogic-params.c HID: hid-uclogic-params: Invalid parameter check in uclogic_params_frame_init_v1_buttonpad 2022-01-27 09:19:36 +01:00
hid-uclogic-params.h
hid-uclogic-rdesc.c
hid-uclogic-rdesc.h
hid-udraw-ps3.c
hid-viewsonic.c
hid-waltop.c
hid-wiimote-core.c
hid-wiimote-debug.c
hid-wiimote-modules.c
hid-wiimote.h
hid-xinmo.c
hid-zpff.c HID: Fix assumption that devices have inputs 2019-10-03 15:36:40 -04:00
hid-zydacron.c
hidraw.c HID: hidraw: fix memory leak in hidraw_release() 2022-09-05 10:27:45 +02:00
Kconfig HID: asus: Add depends on USB_HID to HID_ASUS Kconfig option 2022-01-05 12:37:43 +01:00
Makefile HID: sb0540: add support for Creative SB0540 IR receivers 2019-09-03 16:52:04 +02:00
uhid.c HID: uhid: Over-ride the default maximum data buffer value with our own 2023-03-22 13:28:10 +01:00
wacom_sys.c HID: wacom: remove the battery when the EKR is off 2023-09-23 10:59:37 +02:00
wacom_wac.c HID: wacom: Correct behavior when processing some confidence == false touches 2024-01-25 14:34:30 -08:00
wacom_wac.h HID: wacom: remove the battery when the EKR is off 2023-09-23 10:59:37 +02:00
wacom.h HID: wacom: remove the battery when the EKR is off 2023-09-23 10:59:37 +02:00