Skip to content

Commit 7f87a5e

Browse files
committed
Merge tag 'hid-for-linus-2026040801' of git://git.kernel.org/pub/scm/linux/kernel/git/hid/hid
Pull HID fixes from Jiri Kosina: - handling of new keycodes for contextual AI usages (Akshai Murari) - fix for UAF in hid-roccat (Benoît Sevens) - deduplication of error logging in amd_sfh (Maximilian Pezzullo) - various device-specific quirks and device ID additions (Even Xu, Lode Willems, Leo Vriska) * tag 'hid-for-linus-2026040801' of git://git.kernel.org/pub/scm/linux/kernel/git/hid/hid: Input: add keycodes for contextual AI usages (HUTRR119) HID: Kysona: Add support for VXE Dragonfly R1 Pro HID: amd_sfh: don't log error when device discovery fails with -EOPNOTSUPP HID: quirks: add HID_QUIRK_ALWAYS_POLL for 8BitDo Pro 3 HID: roccat: fix use-after-free in roccat_report_event HID: Intel-thc-hid: Intel-quickspi: Add NVL Device IDs HID: Intel-thc-hid: Intel-quicki2c: Add NVL Device IDs
2 parents 52f657e + 45065a5 commit 7f87a5e

12 files changed

Lines changed: 46 additions & 1 deletion

File tree

drivers/hid/amd-sfh-hid/amd_sfh_pcie.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -413,7 +413,8 @@ static void sfh_init_work(struct work_struct *work)
413413
rc = amd_sfh_hid_client_init(mp2);
414414
if (rc) {
415415
amd_sfh_clear_intr(mp2);
416-
dev_err(&pdev->dev, "amd_sfh_hid_client_init failed err %d\n", rc);
416+
if (rc != -EOPNOTSUPP)
417+
dev_err(&pdev->dev, "amd_sfh_hid_client_init failed err %d\n", rc);
417418
return;
418419
}
419420

drivers/hid/hid-debug.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -990,6 +990,9 @@ static const struct hid_usage_entry hid_usage_table[] = {
990990
{ 0x0c, 0x01c9, "ALContactSync" },
991991
{ 0x0c, 0x01ca, "ALNavigation" },
992992
{ 0x0c, 0x01cb, "ALContextawareDesktopAssistant" },
993+
{ 0x0c, 0x01cc, "ALActionOnSelection" },
994+
{ 0x0c, 0x01cd, "ALContextualInsertion" },
995+
{ 0x0c, 0x01ce, "ALContextualQuery" },
993996
{ 0x0c, 0x0200, "GenericGUIApplicationControls" },
994997
{ 0x0c, 0x0201, "ACNew" },
995998
{ 0x0c, 0x0202, "ACOpen" },
@@ -3375,6 +3378,9 @@ static const char *keys[KEY_MAX + 1] = {
33753378
[KEY_BRIGHTNESS_MIN] = "BrightnessMin",
33763379
[KEY_BRIGHTNESS_MAX] = "BrightnessMax",
33773380
[KEY_BRIGHTNESS_AUTO] = "BrightnessAuto",
3381+
[KEY_ACTION_ON_SELECTION] = "ActionOnSelection",
3382+
[KEY_CONTEXTUAL_INSERT] = "ContextualInsert",
3383+
[KEY_CONTEXTUAL_QUERY] = "ContextualQuery",
33783384
[KEY_KBDINPUTASSIST_PREV] = "KbdInputAssistPrev",
33793385
[KEY_KBDINPUTASSIST_NEXT] = "KbdInputAssistNext",
33803386
[KEY_KBDINPUTASSIST_PREVGROUP] = "KbdInputAssistPrevGroup",

drivers/hid/hid-ids.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@
2222
#define USB_DEVICE_ID_3M2256 0x0502
2323
#define USB_DEVICE_ID_3M3266 0x0506
2424

25+
#define USB_VENDOR_ID_8BITDO 0x2dc8
26+
#define USB_DEVICE_ID_8BITDO_PRO_3 0x6009
27+
2528
#define USB_VENDOR_ID_A4TECH 0x09da
2629
#define USB_DEVICE_ID_A4TECH_WCP32PU 0x0006
2730
#define USB_DEVICE_ID_A4TECH_X5_005D 0x000a
@@ -1471,6 +1474,10 @@
14711474
#define USB_VENDOR_ID_VTL 0x0306
14721475
#define USB_DEVICE_ID_VTL_MULTITOUCH_FF3F 0xff3f
14731476

1477+
#define USB_VENDOR_ID_VXE 0x3554
1478+
#define USB_DEVICE_ID_VXE_DRAGONFLY_R1_PRO_DONGLE 0xf58a
1479+
#define USB_DEVICE_ID_VXE_DRAGONFLY_R1_PRO_WIRED 0xf58c
1480+
14741481
#define USB_VENDOR_ID_WACOM 0x056a
14751482
#define USB_DEVICE_ID_WACOM_GRAPHIRE_BLUETOOTH 0x81
14761483
#define USB_DEVICE_ID_WACOM_INTUOS4_BLUETOOTH 0x00BD

drivers/hid/hid-input.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1227,6 +1227,9 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel
12271227
case 0x1bc: map_key_clear(KEY_MESSENGER); break;
12281228
case 0x1bd: map_key_clear(KEY_INFO); break;
12291229
case 0x1cb: map_key_clear(KEY_ASSISTANT); break;
1230+
case 0x1cc: map_key_clear(KEY_ACTION_ON_SELECTION); break;
1231+
case 0x1cd: map_key_clear(KEY_CONTEXTUAL_INSERT); break;
1232+
case 0x1ce: map_key_clear(KEY_CONTEXTUAL_QUERY); break;
12301233
case 0x201: map_key_clear(KEY_NEW); break;
12311234
case 0x202: map_key_clear(KEY_OPEN); break;
12321235
case 0x203: map_key_clear(KEY_CLOSE); break;

drivers/hid/hid-kysona.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -272,6 +272,8 @@ static void kysona_remove(struct hid_device *hdev)
272272
static const struct hid_device_id kysona_devices[] = {
273273
{ HID_USB_DEVICE(USB_VENDOR_ID_KYSONA, USB_DEVICE_ID_KYSONA_M600_DONGLE) },
274274
{ HID_USB_DEVICE(USB_VENDOR_ID_KYSONA, USB_DEVICE_ID_KYSONA_M600_WIRED) },
275+
{ HID_USB_DEVICE(USB_VENDOR_ID_VXE, USB_DEVICE_ID_VXE_DRAGONFLY_R1_PRO_DONGLE) },
276+
{ HID_USB_DEVICE(USB_VENDOR_ID_VXE, USB_DEVICE_ID_VXE_DRAGONFLY_R1_PRO_WIRED) },
275277
{ }
276278
};
277279
MODULE_DEVICE_TABLE(hid, kysona_devices);

drivers/hid/hid-quirks.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
*/
2626

2727
static const struct hid_device_id hid_quirks[] = {
28+
{ HID_USB_DEVICE(USB_VENDOR_ID_8BITDO, USB_DEVICE_ID_8BITDO_PRO_3), HID_QUIRK_ALWAYS_POLL },
2829
{ HID_USB_DEVICE(USB_VENDOR_ID_AASHIMA, USB_DEVICE_ID_AASHIMA_GAMEPAD), HID_QUIRK_BADPAD },
2930
{ HID_USB_DEVICE(USB_VENDOR_ID_AASHIMA, USB_DEVICE_ID_AASHIMA_PREDATOR), HID_QUIRK_BADPAD },
3031
{ HID_USB_DEVICE(USB_VENDOR_ID_ADATA_XPG, USB_VENDOR_ID_ADATA_XPG_WL_GAMING_MOUSE), HID_QUIRK_ALWAYS_POLL },

drivers/hid/hid-roccat.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,7 @@ int roccat_report_event(int minor, u8 const *data)
257257
if (!new_value)
258258
return -ENOMEM;
259259

260+
mutex_lock(&device->readers_lock);
260261
mutex_lock(&device->cbuf_lock);
261262

262263
report = &device->cbuf[device->cbuf_end];
@@ -279,6 +280,7 @@ int roccat_report_event(int minor, u8 const *data)
279280
}
280281

281282
mutex_unlock(&device->cbuf_lock);
283+
mutex_unlock(&device->readers_lock);
282284

283285
wake_up_interruptible(&device->wait);
284286
return 0;

drivers/hid/intel-thc-hid/intel-quicki2c/pci-quicki2c.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,11 @@ static struct quicki2c_ddata ptl_ddata = {
2626
.max_interrupt_delay = MAX_RX_INTERRUPT_DELAY,
2727
};
2828

29+
static struct quicki2c_ddata nvl_ddata = {
30+
.max_detect_size = MAX_RX_DETECT_SIZE_NVL,
31+
.max_interrupt_delay = MAX_RX_INTERRUPT_DELAY,
32+
};
33+
2934
/* THC QuickI2C ACPI method to get device properties */
3035
/* HIDI2C device method */
3136
static guid_t i2c_hid_guid =
@@ -1032,6 +1037,8 @@ static const struct pci_device_id quicki2c_pci_tbl[] = {
10321037
{ PCI_DEVICE_DATA(INTEL, THC_PTL_U_DEVICE_ID_I2C_PORT2, &ptl_ddata) },
10331038
{ PCI_DEVICE_DATA(INTEL, THC_WCL_DEVICE_ID_I2C_PORT1, &ptl_ddata) },
10341039
{ PCI_DEVICE_DATA(INTEL, THC_WCL_DEVICE_ID_I2C_PORT2, &ptl_ddata) },
1040+
{ PCI_DEVICE_DATA(INTEL, THC_NVL_H_DEVICE_ID_I2C_PORT1, &nvl_ddata) },
1041+
{ PCI_DEVICE_DATA(INTEL, THC_NVL_H_DEVICE_ID_I2C_PORT2, &nvl_ddata) },
10351042
{ }
10361043
};
10371044
MODULE_DEVICE_TABLE(pci, quicki2c_pci_tbl);

drivers/hid/intel-thc-hid/intel-quicki2c/quicki2c-dev.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
#define PCI_DEVICE_ID_INTEL_THC_PTL_U_DEVICE_ID_I2C_PORT2 0xE44A
1616
#define PCI_DEVICE_ID_INTEL_THC_WCL_DEVICE_ID_I2C_PORT1 0x4D48
1717
#define PCI_DEVICE_ID_INTEL_THC_WCL_DEVICE_ID_I2C_PORT2 0x4D4A
18+
#define PCI_DEVICE_ID_INTEL_THC_NVL_H_DEVICE_ID_I2C_PORT1 0xD348
19+
#define PCI_DEVICE_ID_INTEL_THC_NVL_H_DEVICE_ID_I2C_PORT2 0xD34A
1820

1921
/* Packet size value, the unit is 16 bytes */
2022
#define MAX_PACKET_SIZE_VALUE_LNL 256
@@ -40,6 +42,8 @@
4042

4143
/* PTL Max packet size detection capability is 255 Bytes */
4244
#define MAX_RX_DETECT_SIZE_PTL 255
45+
/* NVL Max packet size detection capability is 64K Bytes */
46+
#define MAX_RX_DETECT_SIZE_NVL 65535
4347
/* Max interrupt delay capability is 2.56ms */
4448
#define MAX_RX_INTERRUPT_DELAY 256
4549

drivers/hid/intel-thc-hid/intel-quickspi/pci-quickspi.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,10 @@ struct quickspi_driver_data arl = {
3737
.max_packet_size_value = MAX_PACKET_SIZE_VALUE_MTL,
3838
};
3939

40+
struct quickspi_driver_data nvl = {
41+
.max_packet_size_value = MAX_PACKET_SIZE_VALUE_LNL,
42+
};
43+
4044
/* THC QuickSPI ACPI method to get device properties */
4145
/* HIDSPI Method: {6e2ac436-0fcf-41af-a265-b32a220dcfab} */
4246
static guid_t hidspi_guid =
@@ -982,6 +986,8 @@ static const struct pci_device_id quickspi_pci_tbl[] = {
982986
{PCI_DEVICE_DATA(INTEL, THC_WCL_DEVICE_ID_SPI_PORT2, &ptl), },
983987
{PCI_DEVICE_DATA(INTEL, THC_ARL_DEVICE_ID_SPI_PORT1, &arl), },
984988
{PCI_DEVICE_DATA(INTEL, THC_ARL_DEVICE_ID_SPI_PORT2, &arl), },
989+
{PCI_DEVICE_DATA(INTEL, THC_NVL_H_DEVICE_ID_SPI_PORT1, &nvl), },
990+
{PCI_DEVICE_DATA(INTEL, THC_NVL_H_DEVICE_ID_SPI_PORT2, &nvl), },
985991
{}
986992
};
987993
MODULE_DEVICE_TABLE(pci, quickspi_pci_tbl);

0 commit comments

Comments
 (0)