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

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

Pull HID updates from Jiri Kosina:

 - global switch of HID drivers to use pm_*ptr instead of #ifdef
   CONFIG_PM* (Bastien Nocera)

 - support for new firmware handling in intel-ish-hid (Vishnu Sankar)

 - support for HID output reports in the Quicki2c in intel-thc (Even Xu)

 - solidify register configuration updates in intel-thc (Even Xu)

 - Support for Rock band 4 PS4 and PS5 guitars (Rosalie Wanders)

 - fn lock and WMI fan control handling improvements in certain Asus
   models (ROG, ProArt P16) (Ionut Nechita, Connor Belli)

 - fix for potential NULL pointer dereference during warm reset in
   intel-ish-hid (Ryan Lin)

 - fix for potential NULL pointer derefence in probe error paths in
   hid-pl (Oliver Neukum)

 - various other small assorted fixes and new device ID additions /
   device-specific quirks

* tag 'hid-for-linus-2026020901' of git://git.kernel.org/pub/scm/linux/kernel/git/hid/hid: (41 commits)
  HID: sony: add dongle device IDs for CRKD Gibson SG
  HID: Intel-thc-hid: Intel-thc: Fix wrong register fields updating
  HID: intel-ish-hid: fix NULL-ptr-deref in ishtp_bus_remove_all_clients
  HID: logitech-hidpp: Add support for Logitech K980
  HID: logitech-dj: Differentiate "invalid device index" error
  HID: sony: Use pm_ptr instead of #ifdef CONFIG_PM
  HID: wacom: Use pm_ptr instead of #ifdef CONFIG_PM
  HID: uclogic: Use pm_ptr instead of #ifdef CONFIG_PM
  HID: hid-sensor-hub: Use pm_ptr instead of #ifdef CONFIG_PM
  HID: picolcd_core: Use pm_ptr instead of #ifdef CONFIG_PM
  HID: nintendo: Use pm_ptr instead of #ifdef CONFIG_PM
  HID: logitech-dj: Use pm_ptr instead of #ifdef CONFIG_PM
  HID: lenovo: Use pm_ptr instead of #ifdef CONFIG_PM
  HID: asus: Use pm_ptr instead of #ifdef CONFIG_PM
  HID: appletb-kbd: Use pm_ptr instead of #ifdef CONFIG_PM
  HID: hid-alps: Use pm_ptr instead of #ifdef CONFIG_PM
  HID: multitouch: add eGalaxTouch EXC3188 support
  HID: elecom: Add support for ELECOM HUGE Plus M-HT1MRBK
  HID: sony: add support for bluetooth Rock Band 4 PS4 guitars
  HID: logitech-hidpp: Check maxfield in hidpp_get_report_length()
  ...
parents 532355a7 33312c4d
Loading
Loading
Loading
Loading
+14 −5
Original line number Diff line number Diff line
@@ -413,6 +413,10 @@ Vendors who wish to upstream their custom firmware should follow these guideline

- The firmware filename should use one of the following patterns:

  - ``ish_${intel_plat_gen}_${SYS_VENDOR_CRC32}_${PRODUCT_FAMILY_CRC32}_${PRODUCT_NAME_CRC32}_${PRODUCT_SKU_CRC32}.bin``
  - ``ish_${intel_plat_gen}_${SYS_VENDOR_CRC32}_${PRODUCT_FAMILY_CRC32}_${PRODUCT_SKU_CRC32}.bin``
  - ``ish_${intel_plat_gen}_${SYS_VENDOR_CRC32}_${PRODUCT_FAMILY_CRC32}_${PRODUCT_NAME_CRC32}.bin``
  - ``ish_${intel_plat_gen}_${SYS_VENDOR_CRC32}_${PRODUCT_FAMILY_CRC32}.bin``
  - ``ish_${intel_plat_gen}_${SYS_VENDOR_CRC32}_${PRODUCT_NAME_CRC32}_${PRODUCT_SKU_CRC32}.bin``
  - ``ish_${intel_plat_gen}_${SYS_VENDOR_CRC32}_${PRODUCT_SKU_CRC32}.bin``
  - ``ish_${intel_plat_gen}_${SYS_VENDOR_CRC32}_${PRODUCT_NAME_CRC32}.bin``
@@ -420,16 +424,21 @@ Vendors who wish to upstream their custom firmware should follow these guideline

- ``${intel_plat_gen}`` indicates the Intel platform generation (e.g., ``lnlm`` for Lunar Lake) and must not exceed 8 characters in length.
- ``${SYS_VENDOR_CRC32}`` is the CRC32 checksum of the ``sys_vendor`` value from the DMI field ``DMI_SYS_VENDOR``.
- ``${PRODUCT_FAMILY_CRC32}`` is the CRC32 checksum of the ``product_family`` value from the DMI field ``DMI_PRODUCT_FAMILY``.
- ``${PRODUCT_NAME_CRC32}`` is the CRC32 checksum of the ``product_name`` value from the DMI field ``DMI_PRODUCT_NAME``.
- ``${PRODUCT_SKU_CRC32}`` is the CRC32 checksum of the ``product_sku`` value from the DMI field ``DMI_PRODUCT_SKU``.

During system boot, the ISH Linux driver will attempt to load the firmware in the following order, prioritizing custom firmware with more precise matching patterns:

1. ``intel/ish/ish_${intel_plat_gen}_${SYS_VENDOR_CRC32}_${PRODUCT_NAME_CRC32}_${PRODUCT_SKU_CRC32}.bin``
2. ``intel/ish/ish_${intel_plat_gen}_${SYS_VENDOR_CRC32}_${PRODUCT_SKU_CRC32}.bin``
3. ``intel/ish/ish_${intel_plat_gen}_${SYS_VENDOR_CRC32}_${PRODUCT_NAME_CRC32}.bin``
4. ``intel/ish/ish_${intel_plat_gen}_${SYS_VENDOR_CRC32}.bin``
5. ``intel/ish/ish_${intel_plat_gen}.bin``
1. ``intel/ish/ish_${intel_plat_gen}_${SYS_VENDOR_CRC32}_${PRODUCT_FAMILY_CRC32}_${PRODUCT_NAME_CRC32}_${PRODUCT_SKU_CRC32}.bin``
2. ``intel/ish/ish_${intel_plat_gen}_${SYS_VENDOR_CRC32}_${PRODUCT_FAMILY_CRC32}_${PRODUCT_SKU_CRC32}.bin``
3. ``intel/ish/ish_${intel_plat_gen}_${SYS_VENDOR_CRC32}_${PRODUCT_FAMILY_CRC32}_${PRODUCT_NAME_CRC32}.bin``
4. ``intel/ish/ish_${intel_plat_gen}_${SYS_VENDOR_CRC32}_${PRODUCT_FAMILY_CRC32}.bin``
5. ``intel/ish/ish_${intel_plat_gen}_${SYS_VENDOR_CRC32}_${PRODUCT_NAME_CRC32}_${PRODUCT_SKU_CRC32}.bin``
6. ``intel/ish/ish_${intel_plat_gen}_${SYS_VENDOR_CRC32}_${PRODUCT_SKU_CRC32}.bin``
7. ``intel/ish/ish_${intel_plat_gen}_${SYS_VENDOR_CRC32}_${PRODUCT_NAME_CRC32}.bin``
8. ``intel/ish/ish_${intel_plat_gen}_${SYS_VENDOR_CRC32}.bin``
9. ``intel/ish/ish_${intel_plat_gen}.bin``

The driver will load the first matching firmware and skip the rest. If no matching firmware is found, it will proceed to the next pattern in the specified order. If all searches fail, the default Intel firmware, listed last in the order above, will be loaded.

+9 −2
Original line number Diff line number Diff line
@@ -369,6 +369,7 @@ config HID_ELECOM
	  - EX-G Trackballs (M-XT3DRBK, M-XT3URBK)
	  - DEFT Trackballs (M-DT1DRBK, M-DT1URBK, M-DT2DRBK, M-DT2URBK)
	  - HUGE Trackballs (M-HT1DRBK, M-HT1URBK)
	  - HUGE Plus Trackball (M-HT1MRBK)

config HID_ELO
	tristate "ELO USB 4000/4500 touchscreen"
@@ -1015,6 +1016,12 @@ config HID_PXRC
       To compile this driver as a module, choose M here: the
       module will be called hid-pxrc.

config HID_RAPOO
	tristate "Rapoo non-fully HID-compliant devices"
	help
	Support for Rapoo devices that are not fully compliant with the
	HID standard.

config HID_RAZER
	tristate "Razer non-fully HID-compliant devices"
	help
@@ -1084,7 +1091,7 @@ config HID_SIGMAMICRO
	  - Rapoo V500

config HID_SONY
	tristate "Sony PS2/3/4 accessories"
	tristate "Sony PS2/3/4/5 accessories"
	depends on USB_HID
	depends on NEW_LEDS
	depends on LEDS_CLASS
@@ -1094,12 +1101,12 @@ config HID_SONY
	Support for

	  * Sony PS3 6-axis controllers
	  * Sony PS4 DualShock 4 controllers
	  * 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
	  * Rock Band 4 PS4 and PS5 guitars

config SONY_FF
	bool "Sony PS2/3/4 accessories force feedback support"
+1 −0
Original line number Diff line number Diff line
@@ -113,6 +113,7 @@ obj-$(CONFIG_HID_PLANTRONICS) += hid-plantronics.o
obj-$(CONFIG_HID_PLAYSTATION)	+= hid-playstation.o
obj-$(CONFIG_HID_PRIMAX)	+= hid-primax.o
obj-$(CONFIG_HID_PXRC)		+= hid-pxrc.o
obj-$(CONFIG_HID_RAPOO) += hid-rapoo.o
obj-$(CONFIG_HID_RAZER)	+= hid-razer.o
obj-$(CONFIG_HID_REDRAGON)	+= hid-redragon.o
obj-$(CONFIG_HID_RETRODE)	+= hid-retrode.o
+2 −4
Original line number Diff line number Diff line
@@ -840,10 +840,8 @@ static struct hid_driver alps_driver = {
	.raw_event		= alps_raw_event,
	.input_mapping		= alps_input_mapping,
	.input_configured	= alps_input_configured,
#ifdef CONFIG_PM
	.resume			= alps_post_resume,
	.reset_resume		= alps_post_reset,
#endif
	.resume			= pm_ptr(alps_post_resume),
	.reset_resume		= pm_ptr(alps_post_reset),
};

module_hid_driver(alps_driver);
+1 −0
Original line number Diff line number Diff line
@@ -354,6 +354,7 @@ static const struct apple_key_translation swapped_fn_leftctrl_keys[] = {
};

static const struct apple_non_apple_keyboard non_apple_keyboards[] = {
	{ "SONiX KN85 Keyboard" },
	{ "SONiX USB DEVICE" },
	{ "SONiX AK870 PRO" },
	{ "Keychron" },
Loading