Commit d97e7d7c authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'hid-for-linus-2026041601' of git://git.kernel.org/pub/scm/linux/kernel/git/hid/hid

Pull HID updates from Jiri Kosina:
 "Core:
   - fixed handling of 0-sized reports (Dmitry Torokhov)
   - convert core code to __free() (Dmitry Torokhov)
   - support for multiple batteries per HID device (Lucas Zampieri)

  Drivers:
   - support for rumble effects in winwing driver (Ivan Gorinov)
   - new support for a variety of Sony Rock Band and Sony DJ Hero
     Turntable devices (Rosalie Wanders)
   - new driver for Lenovo Legion Go / S devices (Derek J. Clark)
   - power management improvements to intel-thc-hid driver (Even Xu)

  ... other assorted cleanups, fixes and device-specific quirks"

* tag 'hid-for-linus-2026041601' of git://git.kernel.org/pub/scm/linux/kernel/git/hid/hid: (73 commits)
  HID: core: clamp report_size in s32ton() to avoid undefined shift
  HID: logitech-dj: fix wrong detection of bad DJ_SHORT output report
  HID: logitech-hidpp: fix race condition when accessing stale stack pointer
  HID: winwing: Enable rumble effects
  HID: core: do not allow parsing 0-sized reports
  HID: usbhid: refactor endpoint lookup
  HID: huawei: fix CD30 keyboard report descriptor issue
  HID: playstation: validate num_touch_reports in DualShock 4 reports
  HID: drop 'default !EXPERT' from tristate symbols
  HID: usbhid: fix deadlock in hid_post_reset()
  HID: apple: ensure the keyboard backlight is off if suspending
  HID: quirks: Set ALWAYS_POLL for LOGITECH_BOLT_RECEIVER
  HID: alps: fix NULL pointer dereference in alps_raw_event()
  HID: logitech-dj: Prevent REPORT_ID_DJ_SHORT related user initiated OOB write
  HID: logitech-dj: Standardise hid_report_enum variable nomenclature
  HID: sony: update module description
  HID: logitech-hidpp: Check bounds when deleting force-feedback effects
  HID: sony: add battery status support for Rock Band 4 PS5 guitars
  HID: sony: fix style issues
  HID: quirks: update hid-sony supported devices
  ...
parents 87768582 b8a5774c
Loading
Loading
Loading
Loading
+724 −0

File added.

Preview size limit exceeded, changes collapsed.

+304 −0
Original line number Diff line number Diff line
What:		/sys/class/leds/go_s:rgb:joystick_rings/effect
Date:		April 2026
Contact:	linux-input@vger.kernel.org
Description:	This controls the display effect of the RGB interface.

		Values are monocolor, breathe, chroma, or rainbow.

		Applies to Lenovo Legion Go S line of handheld devices.

What:		/sys/class/leds/go_s:rgb:joystick_rings/effect_index
Date:		April 2026
Contact:	linux-input@vger.kernel.org
Description:	This displays the available options for the effect attribute.

		Values are monocolor, breathe, chroma, or rainbow.

		Applies to Lenovo Legion Go S line of handheld devices.

What:		/sys/class/leds/go_s:rgb:joystick_rings/enabled
Date:		April 2026
Contact:	linux-input@vger.kernel.org
Description:	This controls enabling or disabling the RGB interface.

		Values are true or false.

		Applies to Lenovo Legion Go S line of handheld devices.

What:		/sys/class/leds/go_s:rgb:joystick_rings/enabled_index
Date:		April 2026
Contact:	linux-input@vger.kernel.org
Description:	This displays the available options for the enabled attribute.

		Values are true or false.

		Applies to Lenovo Legion Go S line of handheld devices.

What:		/sys/class/leds/go_s:rgb:joystick_rings/mode
Date:		April 2026
Contact:	linux-input@vger.kernel.org
Description:	This controls the operating mode of the RGB interface.

		Values are dynamic or custom. Custom allows setting the RGB effect and color.
    Dynamic is a Windows mode for syncing Lenovo RGB interfaces not currently
    supported under Linux.

		Applies to Lenovo Legion Go S line of handheld devices.

What:		/sys/class/leds/go_s:rgb:joystick_rings/mode_index
Date:		April 2026
Contact:	linux-input@vger.kernel.org
Description:	This displays the available options for the mode attribute.

		Values are dynamic or custom.

		Applies to Lenovo Legion Go S line of handheld devices.

What:		/sys/class/leds/go_s:rgb:joystick_rings/profile
Date:		April 2026
Contact:	linux-input@vger.kernel.org
Description:	This controls selecting the configured RGB profile.

		Values are 1-3.

		Applies to Lenovo Legion Go S line of handheld devices.

What:		/sys/class/leds/go_s:rgb:joystick_rings/profile_range
Date:		April 2026
Contact:	linux-input@vger.kernel.org
Description:	This displays the available options for the profile attribute.

		Values are 1-3.

		Applies to Lenovo Legion Go S line of handheld devices.

What:		/sys/class/leds/go_s:rgb:joystick_rings/speed
Date:		April 2026
Contact:	linux-input@vger.kernel.org
Description:	This controls the change rate for the breathe, chroma, and rainbow effects.

		Values are 0-100.

		Applies to Lenovo Legion Go S line of handheld devices.

What:		/sys/class/leds/go_s:rgb:joystick_rings/speed_range
Date:		April 2026
Contact:	linux-input@vger.kernel.org
Description:	This displays the available options for the speed attribute.

		Values are 0-100.

		Applies to Lenovo Legion Go S line of handheld devices.

What:		/sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/gamepad/auto_sleep_time
Date:		April 2026
Contact:	linux-input@vger.kernel.org
Description:	This controls the sleep timer due to inactivity for the built-in controller.

		Values are 0-255.

		Applies to Lenovo Legion Go S line of handheld devices.

What:		/sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/gamepad/auto_sleep_time_range
Date:		April 2026
Contact:	linux-input@vger.kernel.org
Description:	This displays the available options for the gamepad/auto_sleep_time attribute.

		Values are 0-255.

		Applies to Lenovo Legion Go S line of handheld devices.

What:		/sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/gamepad/dpad_mode
Date:		April 2026
Contact:	linux-input@vger.kernel.org
Description:	This controls the operating mode of the built-in controllers D-pad.

		Values are 4-way or 8-way.

		Applies to Lenovo Legion Go S line of handheld devices.

What:		/sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/gamepad/dpad_mode_index
Date:		April 2026
Contact:	linux-input@vger.kernel.org
Description:	This displays the available options for the gamepad/dpad_mode attribute.

		Values are 4-way or 8-way.

		Applies to Lenovo Legion Go S line of handheld devices.

What:		/sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/gamepad/mode
Date:		April 2026
Contact:	linux-input@vger.kernel.org
Description:	This controls the operating mode of the built-in controller.

		Values are xinput or dinput.

		Applies to Lenovo Legion Go S line of handheld devices.

What:		/sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/gamepad/mode_index
Date:		April 2026
Contact:	linux-input@vger.kernel.org
Description:	This displays the available options for the gamepad/mode attribute.

		Values are xinput or dinput.

		Applies to Lenovo Legion Go S line of handheld devices.

What:		/sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/gamepad/poll_rate
Date:		April 2026
Contact:	linux-input@vger.kernel.org
Description:	This controls the poll rate in Hz of the built-in controller.

		Values are 125, 250, 500, or 1000.

		Applies to Lenovo Legion Go S line of handheld devices.

What:		/sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/gamepad/poll_rate_index
Date:		April 2026
Contact:	linux-input@vger.kernel.org
Description:	This displays the available options for the gamepad/poll_rate attribute.

		Values are 125, 250, 500, or 1000.

		Applies to Lenovo Legion Go S line of handheld devices.

What:		/sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/imu/bypass_enabled
Date:		April 2026
Contact:	linux-input@vger.kernel.org
Description:	This controls enabling or disabling the IMU bypass function. When enabled the IMU data is directly reported to the OS through
an HIDRAW interface.

		Values are true or false.

		Applies to Lenovo Legion Go S line of handheld devices.

What:		/sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/imu/bypass_enabled_index
Date:		April 2026
Contact:	linux-input@vger.kernel.org
Description:	This displays the available options for the imu/bypass_enabled attribute.

		Values are true or false.

What:		/sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/imu/manufacturer
Date:		April 2026
Contact:	linux-input@vger.kernel.org
Description:	This displays the manufacturer of the intertial measurment unit.

		Values are Bosch or ST.

		Applies to Lenovo Legion Go S line of handheld devices.

What:		/sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/imu/sensor_enabled
Date:		April 2026
Contact:	linux-input@vger.kernel.org
Description:	This controls enabling or disabling the IMU.

		Values are true, false, or wake-2s.

		Applies to Lenovo Legion Go S line of handheld devices.

What:		/sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/imu/sensor_enabled_index
Date:		April 2026
Contact:	linux-input@vger.kernel.org
Description:	This displays the available options for the imu/sensor_enabled attribute.

		Values are true, false, or wake-2s.

		Applies to Lenovo Legion Go S line of handheld devices.

What:		/sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/mcu_id
Date:		April 2026
Contact:	linux-input@vger.kernel.org
Description:	This displays the MCU Identification Number

		Applies to Lenovo Legion Go S line of handheld devices.

What:		/sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/mouse/step
Date:		April 2026
Contact:	linux-input@vger.kernel.org
Description:	This controls which value is used for the mouse sensitivity.

		Values are 1-127.

		Applies to Lenovo Legion Go S line of handheld devices.

What:		/sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/mouse/step_range
Date:		April 2026
Contact:	linux-input@vger.kernel.org
Description:	This displays the available options for the mouse/step attribute.

		Values are 1-127.

		Applies to Lenovo Legion Go S line of handheld devices.

What:		/sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/os_mode
Date:		April 2026
Contact:	linux-input@vger.kernel.org
Description:	This controls which value is used for the touchpads operating mode.

		Values are windows or linux.

		Applies to Lenovo Legion Go S line of handheld devices.

What:		/sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/os_mode_index
Date:		April 2026
Contact:	linux-input@vger.kernel.org
Description:	This displays the available options for the os_mode attribute.

		Values are windows or linux.

		Applies to Lenovo Legion Go S line of handheld devices.

What:		/sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/touchpad/enabled
Date:		April 2026
Contact:	linux-input@vger.kernel.org
Description:	This controls enabling or disabling the built-in touchpad.

		Values are true or false.

		Applies to Lenovo Legion Go S line of handheld devices.

What:		/sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/touchpad/enabled_index
Date:		April 2026
Contact:	linux-input@vger.kernel.org
Description:	This displays the available options for the touchpad/enabled attribute.

		Values are true or false.

		Applies to Lenovo Legion Go S line of handheld devices.

What:		/sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/touchpad/linux_mode
Date:		April 2026
Contact:	linux-input@vger.kernel.org
Description:	This controls behavior of the touchpad events when os_mode is set to linux.

		Values are absolute or relative.

		Applies to Lenovo Legion Go S line of handheld devices.

What:		/sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/touchpad/linux_mode_index
Date:		April 2026
Contact:	linux-input@vger.kernel.org
Description:	This displays the available options for the touchpad/linux_mode attribute.

		Values are absolute or relative.

		Applies to Lenovo Legion Go S line of handheld devices.

What:		/sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/touchpad/windows_mode
Date:		April 2026
Contact:	linux-input@vger.kernel.org
Description:	This controls behavior of the touchpad events when os_mode is set to windows.

		Values are absolute or relative.

		Applies to Lenovo Legion Go S line of handheld devices.

What:		/sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/touchpad/windows_mode_index
Date:		April 2026
Contact:	linux-input@vger.kernel.org
Description:	This displays the available options for the touchpad/windows_mode attribute.

		Values are absolute or relative.

		Applies to Lenovo Legion Go S line of handheld devices.
+20 −8
Original line number Diff line number Diff line
@@ -11432,14 +11432,6 @@ F: drivers/hid/hid-sensor-*
F:	drivers/iio/*/hid-*
F:	include/linux/hid-sensor-*
HID UNIVERSAL PIDFF DRIVER
M:	Tomasz Pakuła <tomasz.pakula.oficjalny@gmail.com>
M:	Oleg Makarenko <oleg@makarenk.ooo>
L:	linux-input@vger.kernel.org
S:	Maintained
B:	https://github.com/JacKeTUs/universal-pidff/issues
F:	drivers/hid/hid-universal-pidff.c
HID VRC-2 CAR CONTROLLER DRIVER
M:	Marcus Folkesson <marcus.folkesson@gmail.com>
L:	linux-input@vger.kernel.org
@@ -14555,6 +14547,17 @@ L: platform-driver-x86@vger.kernel.org
S:	Maintained
F:	drivers/platform/x86/lenovo/wmi-hotkey-utilities.c
LENOVO HID drivers
M:	Derek J. Clark <derekjohn.clark@gmail.com>
M:	Mark Pearson <mpearson-lenovo@squebb.ca>
L:	linux-input@vger.kernel.org
S:	Maintained
F:	Documentation/ABI/testing/sysfs-driver-hid-lenovo-go
F:	Documentation/ABI/testing/sysfs-driver-hid-lenovo-go-s
F:	drivers/hid/hid-lenovo-go-s.c
F:	drivers/hid/hid-lenovo-go.c
F:	drivers/hid/hid-lenovo.c
LETSKETCH HID TABLET DRIVER
M:	Hans de Goede <hansg@kernel.org>
L:	linux-input@vger.kernel.org
@@ -27492,6 +27495,15 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/hid/hid.git
F:	Documentation/hid/hiddev.rst
F:	drivers/hid/usbhid/
USB HID PID DRIVERS (USB WHEELBASES, JOYSTICKS, RUDDERS, ...)
M:	Tomasz Pakuła <tomasz.pakula.oficjalny@gmail.com>
M:	Oleg Makarenko <oleg@makarenk.ooo>
L:	linux-input@vger.kernel.org
S:	Maintained
B:	https://github.com/JacKeTUs/universal-pidff/issues
F:	drivers/hid/usbhid/hid-pidff*
F:	drivers/hid/hid-universal-pidff.c
USB INTEL XHCI ROLE MUX DRIVER
M:	Hans de Goede <hansg@kernel.org>
L:	linux-usb@vger.kernel.org
+37 −20
Original line number Diff line number Diff line
@@ -107,7 +107,6 @@ menu "Special HID drivers"

config HID_A4TECH
	tristate "A4TECH mice"
	default !EXPERT
	help
	Support for some A4TECH mice with two scroll wheels.

@@ -140,7 +139,6 @@ config HID_APPLE
	tristate "Apple {i,Power,Mac}Books"
	depends on LEDS_CLASS
	depends on NEW_LEDS
	default !EXPERT
	help
	Support for some Apple devices which less or more break
	HID specification.
@@ -209,7 +207,6 @@ config HID_AUREAL

config HID_BELKIN
	tristate "Belkin Flip KVM and Wireless keyboard"
	default !EXPERT
	help
	Support for Belkin Flip KVM and Wireless keyboard.

@@ -237,14 +234,12 @@ config HID_BIGBEN_FF

config HID_CHERRY
	tristate "Cherry Cymotion keyboard"
	default !EXPERT
	help
	Support for Cherry Cymotion keyboard.

config HID_CHICONY
	tristate "Chicony devices"
	depends on USB_HID
	default !EXPERT
	help
	Support for Chicony Tactical pad and special keys on Chicony keyboards.

@@ -322,7 +317,6 @@ config HID_CREATIVE_SB0540

config HID_CYPRESS
	tristate "Cypress mouse and barcode readers"
	default !EXPERT
	help
	Support for cypress mouse and barcode readers.

@@ -388,7 +382,6 @@ config HID_EVISION

config HID_EZKEY
	tristate "Ezkey BTC 8193 keyboard"
	default !EXPERT
	help
	Support for Ezkey BTC 8193 keyboard.

@@ -564,7 +557,6 @@ config HID_ICADE

config HID_ITE
	tristate "ITE devices"
	default !EXPERT
	help
	Support for ITE devices not fully compliant with HID standard.

@@ -585,7 +577,6 @@ config HID_TWINHAN

config HID_KENSINGTON
	tristate "Kensington Slimblade Trackball"
	default !EXPERT
	help
	Support for Kensington Slimblade Trackball.

@@ -610,8 +601,7 @@ config HID_LED

config HID_LENOVO
	tristate "Lenovo / Thinkpad devices"
	select NEW_LEDS
	select LEDS_CLASS
	depends on LEDS_CLASS
	help
	Support for IBM/Lenovo devices that are not fully compliant with HID standard.

@@ -623,6 +613,28 @@ config HID_LENOVO
	- ThinkPad Compact Bluetooth Keyboard with TrackPoint (supports Fn keys)
	- ThinkPad Compact USB Keyboard with TrackPoint (supports Fn keys)

config HID_LENOVO_GO
	tristate "HID Driver for Lenovo Legion Go Series Controllers"
	depends on USB_HID
	depends on LEDS_CLASS_MULTICOLOR
	help
	Support for Lenovo Legion Go devices with detachable controllers.

	Say Y here to include configuration interface support for the Lenovo Legion Go
	and Legion Go 2 Handheld Console Controllers. Say M here to compile this
	driver as a module. The module will be called hid-lenovo-go.

config HID_LENOVO_GO_S
	tristate "HID Driver for Lenovo Legion Go S Controller"
	depends on USB_HID
	depends on LEDS_CLASS_MULTICOLOR
	help
	Support for Lenovo Legion Go S Handheld Console Controller.

	Say Y here to include configuration interface support for the Lenovo Legion Go
	S. Say M here to compile this driver as a module. The module will be called
	hid-lenovo-go-s.

config HID_LETSKETCH
	tristate "Letsketch WP9620N tablets"
	depends on USB_HID
@@ -642,7 +654,6 @@ config HID_LOGITECH
	depends on USB_HID
	depends on LEDS_CLASS
	depends on LEDS_CLASS_MULTICOLOR
	default !EXPERT
	help
	Support for Logitech devices that are not fully compliant with HID standard.

@@ -757,20 +768,17 @@ config HID_MEGAWORLD_FF

config HID_REDRAGON
	tristate "Redragon keyboards"
	default !EXPERT
	help
    Support for Redragon keyboards that need fix-ups to work properly.

config HID_MICROSOFT
	tristate "Microsoft non-fully HID-compliant devices"
	default !EXPERT
	select INPUT_FF_MEMLESS
	help
	Support for Microsoft devices that are not fully compliant with HID standard.

config HID_MONTEREY
	tristate "Monterey Genius KB29E keyboard"
	default !EXPERT
	help
	Support for Monterey Genius KB29E.

@@ -1100,13 +1108,15 @@ config HID_SONY
	help
	Support for

	  * Sony PS3 6-axis controllers
	  * Sixaxis controllers for PS3
	  * Buzz controllers
	  * Sony PS3 Blue-ray Disk Remote Control (Bluetooth)
	  * Logitech Harmony adapter for Sony Playstation 3 (Bluetooth)
	  * Guitar Hero Live PS3, Wii U and PS4 guitar dongles
	  * Guitar Hero PS3 and PC guitar dongles
	  * Blu-ray Disc Remote Control for PS3
	  * Logitech Harmony adapter for PS3
	  * Guitar Hero Live PS3, Wii U and PS4 guitars
	  * Guitar Hero PS3 and PC guitars
	  * Rock Band 1, 2 and 3 PS3 and Wii instruments
	  * Rock Band 4 PS4 and PS5 guitars
	  * DJ Hero Turntable for PS3

config SONY_FF
	bool "Sony PS2/3/4 accessories force feedback support"
@@ -1435,6 +1445,13 @@ config HID_KUNIT_TEST

	  If in doubt, say "N".

config HID_HUAWEI
	tristate "Huawei HID devices support"
	depends on USB_HID
	help
	  Support for huawei cd30 keyboard or other hid devices
	  that need fix-ups to work properly.

endmenu

source "drivers/hid/bpf/Kconfig"
+3 −0
Original line number Diff line number Diff line
@@ -76,6 +76,8 @@ obj-$(CONFIG_HID_KYE) += hid-kye.o
obj-$(CONFIG_HID_KYSONA)	+= hid-kysona.o
obj-$(CONFIG_HID_LCPOWER)	+= hid-lcpower.o
obj-$(CONFIG_HID_LENOVO)	+= hid-lenovo.o
obj-$(CONFIG_HID_LENOVO_GO)	+= hid-lenovo-go.o
obj-$(CONFIG_HID_LENOVO_GO_S)	+= hid-lenovo-go-s.o
obj-$(CONFIG_HID_LETSKETCH)	+= hid-letsketch.o
obj-$(CONFIG_HID_LOGITECH)	+= hid-logitech.o
obj-$(CONFIG_HID_LOGITECH)	+= hid-lg-g15.o
@@ -152,6 +154,7 @@ obj-$(CONFIG_HID_ZEROPLUS) += hid-zpff.o
obj-$(CONFIG_HID_ZYDACRON)	+= hid-zydacron.o
obj-$(CONFIG_HID_VIEWSONIC)	+= hid-viewsonic.o
obj-$(CONFIG_HID_VRC2)		+= hid-vrc2.o
obj-$(CONFIG_HID_HUAWEI)	+= hid-huawei.o

wacom-objs			:= wacom_wac.o wacom_sys.o
obj-$(CONFIG_HID_WACOM)		+= wacom.o
Loading