[GIT PULL] HID for 6.3

From: Benjamin Tissoires
Date: Wed Feb 22 2023 - 05:17:00 EST


Linus,

please pull from

git://git.kernel.org/pub/scm/linux/kernel/git/hid/hid.git tags/for-linus-2023022201

to receive HID subsystem queue for 6.3.

Highlights:

=====
- HID-BPF infrastructure: this allows to start using HID-BPF. Note that
the mechanism to ship HID-BPF program through the kernel tree is still
not implemented yet (but is planned).
This should be a no-op for 99% of users. Also we are gaining kselftests
for the HID tree (Benjamin Tissoires)
- Some UAF fixes in workers when using uhid (Pietro Borrello & Benjamin
Tissoires)
- Constify hid_ll_driver (Thomas Weißschuh)
- Allow more custom IIO sensors through HID (Philipp Jungkamp)
- Logitech HID++ fixes for scroll wheel, protocol and debug (Bastien Nocera)
- Some new device support: Steam Deck (Vicki Pfau), UClogic (José
Expósito), Logitech G923 Xbox Edition steering wheel (Walt Holman),
EVision keyboards (Philippe Valembois)
- other assorted code cleanups and fixes
=====

Thanks.

----------------------------------------------------------------
Allen Ballway (1):
HID: multitouch: Add quirks for flipped axes

Andy Shevchenko (2):
HID: i2c-hid: acpi: Drop unneded NULL check of adev
HID: i2c-hid: acpi: Unify ACPI ID tables format

Arnd Bergmann (1):
HID: stop drivers from selecting CONFIG_HID

Bastien Nocera (9):
HID: logitech-hidpp: Hard-code HID++ 1.0 fast scroll support
Revert "HID: logitech-hidpp: add a module parameter to keep firmware gestures"
HID: logitech-hidpp: Add constants for HID++ 2.0 error codes
HID: logitech-hidpp: Don't restart communication if not necessary
HID: logitech-hidpp: Remove HIDPP_QUIRK_NO_HIDINPUT quirk
HID: logitech-hidpp: Add Signature M650
HID: logitech-hidpp: Add more debug statements
HID: logitech-hidpp: Retry commands when device is busy
HID: logitech-hidpp: Add myself to authors

Benjamin Tissoires (32):
HID: Kconfig: split HID support and hid-core compilation
HID: initial BPF implementation
selftests: add tests for the HID-bpf initial implementation
HID: bpf jmp table: simplify the logic of cleaning up programs
HID: bpf: allocate data memory for device_event BPF programs
selftests/hid: add test to change the report size
HID: bpf: introduce hid_hw_request()
selftests/hid: add tests for bpf_hid_hw_request
HID: bpf: allow to change the report descriptor
selftests/hid: add report descriptor fixup tests
selftests/hid: Add a test for BPF_F_INSERT_HEAD
samples/hid: add new hid BPF example
samples/hid: add Surface Dial example
Documentation: add HID-BPF docs
HID: bpf: return non NULL data pointer when CONFIG_HID_BPF is not set
HID: fix BT_HIDP Kconfig dependencies
HID: force HID depending on INPUT
Merge branch 'for-6.2/bpf' into for-6.2/hid-bpf
HID: bpf: do not rely on ALLOW_ERROR_INJECTION
HID: bpf: enforce HID_BPF dependencies
selftests: hid: ensures we have the proper requirements in config
kselftests: hid: fix missing headers_install step
selftests: hid: add vmtest.sh
selftests: hid: allow to compile hid_bpf with LLVM
selftests: hid: attach/detach 2 bpf programs, not just one
selftests: hid: ensure the program is correctly pinned
selftests: hid: prepare tests for HID_BPF API change
HID: bpf: rework how programs are attached and stored in the kernel
selftests: hid: enforce new attach API
HID: bpf: clean up entrypoint
HID: bpf: reorder BPF registration
HID: mcp-2221: prevent UAF in delayed work

Colin Ian King (1):
samples/hid: Fix spelling mistake "wihout" -> "without"

Dmitry Torokhov (1):
HID: retain initial quirks set up when creating HID devices

Douglas Anderson (3):
HID: i2c-hid: goodix: Stop tying the reset line to the regulator
dt-bindings: HID: i2c-hid: goodix: Add mainboard-vddio-supply
HID: i2c-hid: goodix: Add mainboard-vddio-supply

Jingyuan Liang (1):
HID: Add Mapping for System Microphone Mute

Jiri Kosina (1):
HID: hid-sensor-custom: Fix big on-stack allocation in hid_sensor_custom_get_known()

José Expósito (8):
HID: input: map battery system charging
HID: uclogic: Add frame type quirk
HID: uclogic: Add battery quirk
HID: uclogic: Refactor UGEEv2 probe magic data
HID: uclogic: Handle wireless device reconnection
HID: uclogic: Add support for XP-PEN Deco Pro SW
HID: uclogic: Add support for XP-PEN Deco Pro MW
HID: uclogic: Use KUNIT_EXPECT_MEMEQ

Philipp Jungkamp (4):
HID: hid-sensor-custom: Allow more custom iio sensors
HID: hid-sensor-custom: Add LISS custom sensors
IIO: hid-sensor-als: Use generic usage
IIO: hid-sensor-prox: Use generic usage

Philippe Valembois (1):
HID: evision: Add preliminary support for EVision keyboards

Pietro Borrello (6):
HID: bigben: use spinlock to protect concurrent accesses
HID: bigben_worker() remove unneeded check on report_field
HID: bigben: use spinlock to safely schedule workers
HID: asus: use spinlock to protect concurrent accesses
HID: asus: use spinlock to safely schedule workers
hid: bigben_probe(): validate report count

Randy Dunlap (1):
Documentation: hid: correct spelling

Roderick Colenbrander (4):
HID: sony: remove DualShock4 support.
HID: playstation: fix DualShock4 unreachable calibration code.
HID: playstation: correct DualShock4 gyro bias handling.
HID: playstation: correct DualSense gyro bias handling.

Ronald Tschalär (1):
HID: Recognize sensors with application collections

Thomas Weißschuh (20):
HID: letsketch: Use hid_is_usb()
HID: usbhid: Make hid_is_usb() non-inline
HID: Remove unused function hid_is_using_ll_driver()
HID: Unexport struct usb_hid_driver
HID: Unexport struct uhid_hid_driver
HID: Unexport struct hidp_hid_driver
HID: Unexport struct i2c_hid_ll_driver
HID: Make lowlevel driver structs const
HID: i2c-hid: switch to standard debugging APIs
HID: i2c-hid: use uniform debugging APIs
HID: amd_sfh: Constify lowlevel HID driver
HID: hyperv: Constify lowlevel HID driver
HID: logitech-dj: Constify lowlevel HID driver
HID: steam: Constify lowlevel HID driver
HID: intel-ish-hid: Constify lowlevel HID driver
HID: surface-hid: Constify lowlevel HID driver
platform/x86: asus-tf103c-dock: Constify lowlevel HID driver
platform/x86: asus-tf103c-dock: Constify toprow keymap
staging: greybus: hid: Constify lowlevel HID driver
HID: use standard debug APIs

Vicki Pfau (2):
HID: hid-steam: Add Steam Deck support
HID: hid-steam: Add rumble on Deck

Walt Holman (1):
HID: Add support for Logitech G923 Xbox Edition steering wheel

Documentation/devicetree/bindings/input/goodix,gt7375p.yaml | 7 ++
Documentation/hid/hid-alps.rst | 2 +-
Documentation/hid/hid-bpf.rst | 522 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Documentation/hid/hiddev.rst | 2 +-
Documentation/hid/hidraw.rst | 2 +-
Documentation/hid/index.rst | 1 +
Documentation/hid/intel-ish-hid.rst | 2 +-
MAINTAINERS | 10 ++
drivers/Makefile | 2 +-
drivers/hid/.kunitconfig | 1 +
drivers/hid/Kconfig | 39 +++++--
drivers/hid/Makefile | 3 +
drivers/hid/amd-sfh-hid/Kconfig | 2 +-
drivers/hid/amd-sfh-hid/amd_sfh_hid.c | 2 +-
drivers/hid/bpf/Kconfig | 18 ++++
drivers/hid/bpf/Makefile | 11 ++
drivers/hid/bpf/entrypoints/Makefile | 93 +++++++++++++++++
drivers/hid/bpf/entrypoints/README | 4 +
drivers/hid/bpf/entrypoints/entrypoints.bpf.c | 25 +++++
drivers/hid/bpf/entrypoints/entrypoints.lskel.h | 248 +++++++++++++++++++++++++++++++++++++++++++
drivers/hid/bpf/hid_bpf_dispatch.c | 551 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
drivers/hid/bpf/hid_bpf_dispatch.h | 25 +++++
drivers/hid/bpf/hid_bpf_jmp_table.c | 565 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
drivers/hid/hid-asus.c | 37 ++++++-
drivers/hid/hid-bigbenff.c | 75 ++++++++++---
drivers/hid/hid-core.c | 46 ++++++--
drivers/hid/hid-debug.c | 1 +
drivers/hid/hid-evision.c | 53 ++++++++++
drivers/hid/hid-hyperv.c | 2 +-
drivers/hid/hid-ids.h | 7 ++
drivers/hid/hid-input-test.c | 80 ++++++++++++++
drivers/hid/hid-input.c | 48 ++++++++-
drivers/hid/hid-letsketch.c | 2 +-
drivers/hid/hid-logitech-dj.c | 4 +-
drivers/hid/hid-logitech-hidpp.c | 152 ++++++++++++++++-----------
drivers/hid/hid-mcp2221.c | 3 +
drivers/hid/hid-multitouch.c | 39 ++++++-
drivers/hid/hid-playstation.c | 41 ++++----
drivers/hid/hid-quirks.c | 2 +-
drivers/hid/hid-sensor-custom.c | 242 +++++++++++++++++++++++++++++-------------
drivers/hid/hid-sensor-hub.c | 6 +-
drivers/hid/hid-sony.c | 1021 +++++++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
drivers/hid/hid-steam.c | 385 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
drivers/hid/hid-uclogic-core-test.c | 105 +++++++++++++++++++
drivers/hid/hid-uclogic-core.c | 61 +++++++----
drivers/hid/hid-uclogic-params-test.c | 16 +++
drivers/hid/hid-uclogic-params.c | 124 ++++++++++++++++++++--
drivers/hid/hid-uclogic-params.h | 40 +++++++
drivers/hid/hid-uclogic-rdesc-test.c | 3 +-
drivers/hid/hid-uclogic-rdesc.c | 6 ++
drivers/hid/hid-uclogic-rdesc.h | 5 +
drivers/hid/i2c-hid/Kconfig | 31 +++---
drivers/hid/i2c-hid/i2c-hid-acpi.c | 26 ++---
drivers/hid/i2c-hid/i2c-hid-core.c | 24 ++---
drivers/hid/i2c-hid/i2c-hid-dmi-quirks.c | 42 ++++++++
drivers/hid/i2c-hid/i2c-hid-of-goodix.c | 98 ++++-------------
drivers/hid/i2c-hid/i2c-hid.h | 3 +
drivers/hid/intel-ish-hid/Kconfig | 2 +-
drivers/hid/intel-ish-hid/ishtp-hid.c | 2 +-
drivers/hid/surface-hid/surface_hid_core.c | 2 +-
drivers/hid/uhid.c | 3 +-
drivers/hid/usbhid/hid-core.c | 9 +-
drivers/iio/light/hid-sensor-als.c | 27 ++---
drivers/iio/light/hid-sensor-prox.c | 37 ++++---
drivers/platform/x86/asus-tf103c-dock.c | 4 +-
drivers/staging/greybus/hid.c | 2 +-
include/linux/hid-sensor-ids.h | 1 +
include/linux/hid.h | 34 ++----
include/linux/hid_bpf.h | 170 ++++++++++++++++++++++++++++++
net/bluetooth/hidp/Kconfig | 2 +-
net/bluetooth/hidp/core.c | 3 +-
samples/hid/.gitignore | 8 ++
samples/hid/Makefile | 250 ++++++++++++++++++++++++++++++++++++++++++++
samples/hid/Makefile.target | 75 +++++++++++++
samples/hid/hid_bpf_attach.bpf.c | 18 ++++
samples/hid/hid_bpf_attach.h | 14 +++
samples/hid/hid_bpf_helpers.h | 21 ++++
samples/hid/hid_mouse.bpf.c | 112 ++++++++++++++++++++
samples/hid/hid_mouse.c | 155 +++++++++++++++++++++++++++
samples/hid/hid_surface_dial.bpf.c | 134 ++++++++++++++++++++++++
samples/hid/hid_surface_dial.c | 226 +++++++++++++++++++++++++++++++++++++++
tools/testing/selftests/Makefile | 1 +
tools/testing/selftests/hid/.gitignore | 5 +
tools/testing/selftests/hid/Makefile | 231 ++++++++++++++++++++++++++++++++++++++++
tools/testing/selftests/hid/config | 21 ++++
tools/testing/selftests/hid/config.common | 241 ++++++++++++++++++++++++++++++++++++++++++
tools/testing/selftests/hid/config.x86_64 | 4 +
tools/testing/selftests/hid/hid_bpf.c | 869 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tools/testing/selftests/hid/progs/hid.c | 209 +++++++++++++++++++++++++++++++++++++
tools/testing/selftests/hid/progs/hid_bpf_helpers.h | 21 ++++
tools/testing/selftests/hid/vmtest.sh | 284 +++++++++++++++++++++++++++++++++++++++++++++++++
91 files changed, 6736 insertions(+), 1428 deletions(-)
create mode 100644 Documentation/hid/hid-bpf.rst
create mode 100644 drivers/hid/bpf/Kconfig
create mode 100644 drivers/hid/bpf/Makefile
create mode 100644 drivers/hid/bpf/entrypoints/Makefile
create mode 100644 drivers/hid/bpf/entrypoints/README
create mode 100644 drivers/hid/bpf/entrypoints/entrypoints.bpf.c
create mode 100644 drivers/hid/bpf/entrypoints/entrypoints.lskel.h
create mode 100644 drivers/hid/bpf/hid_bpf_dispatch.c
create mode 100644 drivers/hid/bpf/hid_bpf_dispatch.h
create mode 100644 drivers/hid/bpf/hid_bpf_jmp_table.c
create mode 100644 drivers/hid/hid-evision.c
create mode 100644 drivers/hid/hid-input-test.c
create mode 100644 drivers/hid/hid-uclogic-core-test.c
create mode 100644 include/linux/hid_bpf.h
create mode 100644 samples/hid/.gitignore
create mode 100644 samples/hid/Makefile
create mode 100644 samples/hid/Makefile.target
create mode 100644 samples/hid/hid_bpf_attach.bpf.c
create mode 100644 samples/hid/hid_bpf_attach.h
create mode 100644 samples/hid/hid_bpf_helpers.h
create mode 100644 samples/hid/hid_mouse.bpf.c
create mode 100644 samples/hid/hid_mouse.c
create mode 100644 samples/hid/hid_surface_dial.bpf.c
create mode 100644 samples/hid/hid_surface_dial.c
create mode 100644 tools/testing/selftests/hid/.gitignore
create mode 100644 tools/testing/selftests/hid/Makefile
create mode 100644 tools/testing/selftests/hid/config
create mode 100644 tools/testing/selftests/hid/config.common
create mode 100644 tools/testing/selftests/hid/config.x86_64
create mode 100644 tools/testing/selftests/hid/hid_bpf.c
create mode 100644 tools/testing/selftests/hid/progs/hid.c
create mode 100644 tools/testing/selftests/hid/progs/hid_bpf_helpers.h
create mode 100755 tools/testing/selftests/hid/vmtest.sh