<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux.git/drivers/hid/Kconfig, branch master</title>
<subtitle>Linux kernel source tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/'/>
<entry>
<title>Merge branch 'for-7.3/hyperx' into for-linus</title>
<updated>2026-08-19T07:24:50+00:00</updated>
<author>
<name>Jiri Kosina</name>
<email>jkosina@suse.com</email>
</author>
<published>2026-08-19T07:24:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=2b6e857455af0b98f1f2b99c044d1a8934f73f36'/>
<id>2b6e857455af0b98f1f2b99c044d1a8934f73f36</id>
<content type='text'>
- support for HyperX QuadCast 2 (Benjamin Blume)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- support for HyperX QuadCast 2 (Benjamin Blume)
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'for-7.3/msi' into for-linus</title>
<updated>2026-08-19T07:21:17+00:00</updated>
<author>
<name>Jiri Kosina</name>
<email>jkosina@suse.com</email>
</author>
<published>2026-08-19T07:21:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=310b6aff4faa66ed6f9f0ab0488cc01fcec5d624'/>
<id>310b6aff4faa66ed6f9f0ab0488cc01fcec5d624</id>
<content type='text'>
- support for MSI Claw (Derek J. Clark)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- support for MSI Claw (Derek J. Clark)
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'for-7.3/roccat' into for-linus</title>
<updated>2026-08-19T07:18:43+00:00</updated>
<author>
<name>Jiri Kosina</name>
<email>jkosina@suse.com</email>
</author>
<published>2026-08-19T07:18:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=5c4364ae1caa9a857fe7cf5d98ee0d867dc9839f'/>
<id>5c4364ae1caa9a857fe7cf5d98ee0d867dc9839f</id>
<content type='text'>
- memory management fix on device cleanup path (Xu Rao)
- profile index handling fix (Michael Bommarito)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- memory management fix on device cleanup path (Xu Rao)
- profile index handling fix (Michael Bommarito)
</pre>
</div>
</content>
</entry>
<entry>
<title>HID: hid-msi: Add MSI Claw configuration driver</title>
<updated>2026-08-03T19:41:51+00:00</updated>
<author>
<name>Derek J. Clark</name>
<email>derekjohn.clark@gmail.com</email>
</author>
<published>2026-07-20T03:15:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=a9517958e828429ffd88558a8dae80f49f8cfbea'/>
<id>a9517958e828429ffd88558a8dae80f49f8cfbea</id>
<content type='text'>
Adds configuration HID driver for the MSI Claw series of handheld PC's.
In this initial patch add the initial driver outline and attributes for
changing the gamepad mode, M-key behavior, and add a WO reset function.

Sending the SWITCH_MODE and RESET commands causes a USB disconnect in
the device. The completion will therefore never get hit and would trigger
an -EIO. To avoid showing the user an error for every write to these
attrs a bypass for the completion handling is introduced when timeout ==
0.

The initial version of this patch was written by Denis Benato, which
contained the initial reverse-engineering and implementation for the
gamepad mode switching. This work was later expanded by Zhouwang Huang
to include more gamepad modes. Finally, I refactored the drivers data
in/out flow and overall format to conform to kernel driver best
practices and style guides. Claude was used as an initial reviewer of
this patch.

Assisted-by: Claude:claude-sonnet-4-6
Co-developed-by: Denis Benato &lt;denis.benato@linux.dev&gt;
Signed-off-by: Denis Benato &lt;denis.benato@linux.dev&gt;
Co-developed-by: Zhouwang Huang &lt;honjow311@gmail.com&gt;
Signed-off-by: Zhouwang Huang &lt;honjow311@gmail.com&gt;
Signed-off-by: Derek J. Clark &lt;derekjohn.clark@gmail.com&gt;
Signed-off-by: Jiri Kosina &lt;jkosina@suse.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Adds configuration HID driver for the MSI Claw series of handheld PC's.
In this initial patch add the initial driver outline and attributes for
changing the gamepad mode, M-key behavior, and add a WO reset function.

Sending the SWITCH_MODE and RESET commands causes a USB disconnect in
the device. The completion will therefore never get hit and would trigger
an -EIO. To avoid showing the user an error for every write to these
attrs a bypass for the completion handling is introduced when timeout ==
0.

The initial version of this patch was written by Denis Benato, which
contained the initial reverse-engineering and implementation for the
gamepad mode switching. This work was later expanded by Zhouwang Huang
to include more gamepad modes. Finally, I refactored the drivers data
in/out flow and overall format to conform to kernel driver best
practices and style guides. Claude was used as an initial reviewer of
this patch.

Assisted-by: Claude:claude-sonnet-4-6
Co-developed-by: Denis Benato &lt;denis.benato@linux.dev&gt;
Signed-off-by: Denis Benato &lt;denis.benato@linux.dev&gt;
Co-developed-by: Zhouwang Huang &lt;honjow311@gmail.com&gt;
Signed-off-by: Zhouwang Huang &lt;honjow311@gmail.com&gt;
Signed-off-by: Derek J. Clark &lt;derekjohn.clark@gmail.com&gt;
Signed-off-by: Jiri Kosina &lt;jkosina@suse.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>HID: hyperx: add driver for the HyperX QuadCast 2 mute button</title>
<updated>2026-08-03T19:38:55+00:00</updated>
<author>
<name>Benjamin Blume</name>
<email>benjaminblume@posteo.de</email>
</author>
<published>2026-07-13T12:42:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=663870a84c1734b2817f51d93c0e61f1dc1c5f1e'/>
<id>663870a84c1734b2817f51d93c0e61f1dc1c5f1e</id>
<content type='text'>
The tap-to-mute button of the HyperX QuadCast 2 (03f0:07b4) is handled
entirely in the device firmware.  The firmware gates the audio internally
but never sends the Telephony "Phone Mute" usage (0x2f) that its own report
descriptor advertises, and it does not touch the UAC feature unit either.
Consequently neither an evdev key event nor an ALSA mixer change is ever
generated, and userspace has no way to learn that the microphone was muted:
desktops keep showing the microphone as live, and conferencing applications
keep displaying an unmuted microphone while transmitting silence.

The mute state is reported through a vendor-defined collection instead:

  06 c0 ff        Usage Page (Vendor-Defined 0xFFC0)
  a1 01           Collection (Application)
  06 c1 ff          Usage Page (Vendor-Defined 0xFFC1)
  85 77             Report ID (0x77)
  09 f0             Usage (0xF0)
  75 08  95 3f      Report Size (8), Report Count (63)
  81 02             Input (Data,Var,Abs)

Pressing the button emits a 64-byte report on that collection:

  77 06 00 00 ...   microphone unmuted
  77 06 01 00 ...   microphone muted

where byte 1 identifies the mute event and byte 2 carries the resulting
state.  As the payload is an opaque vendor blob carrying no HID usages,
hid-input cannot map it and a hwdb entry cannot express it either.

Add a driver that decodes the report and emits KEY_MICMUTE, which makes the
button behave like any other microphone mute key.

Note that the device reports the resulting absolute state, whereas
KEY_MICMUTE is a momentary key that userspace acts on as a toggle, so the
driver emits one keypress per state change.

Tested on a HyperX QuadCast 2 (03f0:07b4).

Signed-off-by: Benjamin Blume &lt;benjaminblume@posteo.de&gt;
Signed-off-by: Jiri Kosina &lt;jkosina@suse.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The tap-to-mute button of the HyperX QuadCast 2 (03f0:07b4) is handled
entirely in the device firmware.  The firmware gates the audio internally
but never sends the Telephony "Phone Mute" usage (0x2f) that its own report
descriptor advertises, and it does not touch the UAC feature unit either.
Consequently neither an evdev key event nor an ALSA mixer change is ever
generated, and userspace has no way to learn that the microphone was muted:
desktops keep showing the microphone as live, and conferencing applications
keep displaying an unmuted microphone while transmitting silence.

The mute state is reported through a vendor-defined collection instead:

  06 c0 ff        Usage Page (Vendor-Defined 0xFFC0)
  a1 01           Collection (Application)
  06 c1 ff          Usage Page (Vendor-Defined 0xFFC1)
  85 77             Report ID (0x77)
  09 f0             Usage (0xF0)
  75 08  95 3f      Report Size (8), Report Count (63)
  81 02             Input (Data,Var,Abs)

Pressing the button emits a 64-byte report on that collection:

  77 06 00 00 ...   microphone unmuted
  77 06 01 00 ...   microphone muted

where byte 1 identifies the mute event and byte 2 carries the resulting
state.  As the payload is an opaque vendor blob carrying no HID usages,
hid-input cannot map it and a hwdb entry cannot express it either.

Add a driver that decodes the report and emits KEY_MICMUTE, which makes the
button behave like any other microphone mute key.

Note that the device reports the resulting absolute state, whereas
KEY_MICMUTE is a momentary key that userspace acts on as a toggle, so the
driver emits one keypress per state change.

Tested on a HyperX QuadCast 2 (03f0:07b4).

Signed-off-by: Benjamin Blume &lt;benjaminblume@posteo.de&gt;
Signed-off-by: Jiri Kosina &lt;jkosina@suse.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>HID: hyperv: add KUnit coverage for device info bounds</title>
<updated>2026-08-03T19:09:48+00:00</updated>
<author>
<name>Michael Bommarito</name>
<email>michael.bommarito@gmail.com</email>
</author>
<published>2026-07-10T02:28:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=83df7b5fa6735b5084ecd296a0f67208650ba497'/>
<id>83df7b5fa6735b5084ecd296a0f67208650ba497</id>
<content type='text'>
Add KUnit coverage for Hyper-V synthetic HID initial device-info parsing.
The tests cover zero bLength, a valid descriptor plus report descriptor,
and a malformed report descriptor length that exceeds the received
message.

The same-translation-unit test uses a KUnit-only ACK bypass so parser
coverage does not require a live VMBus channel.

Assisted-by: Codex:gpt-5-5-xhigh
Signed-off-by: Michael Bommarito &lt;michael.bommarito@gmail.com&gt;
Signed-off-by: Jiri Kosina &lt;jkosina@suse.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Add KUnit coverage for Hyper-V synthetic HID initial device-info parsing.
The tests cover zero bLength, a valid descriptor plus report descriptor,
and a malformed report descriptor length that exceeds the received
message.

The same-translation-unit test uses a KUnit-only ACK bypass so parser
coverage does not require a live VMBus channel.

Assisted-by: Codex:gpt-5-5-xhigh
Signed-off-by: Michael Bommarito &lt;michael.bommarito@gmail.com&gt;
Signed-off-by: Jiri Kosina &lt;jkosina@suse.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>HID: rapoo: fix missing hid_is_usb() check</title>
<updated>2026-08-03T18:42:08+00:00</updated>
<author>
<name>Jann Horn</name>
<email>jannh@google.com</email>
</author>
<published>2026-07-03T15:45:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=b57af2448268c30c25509a832b6ff6dc27176b28'/>
<id>b57af2448268c30c25509a832b6ff6dc27176b28</id>
<content type='text'>
to_usb_interface() can only be used on a hid_device whose parent is really
USB; uhid can create devices that identify as being on BUS_USB, but don't
actually have a USB parent.
Fix the use of to_usb_interface() without a hid_is_usb() check.

Add a dependency on USB_HID for hid_is_usb(), as other HID drivers do; the
alternative would be to provide a simple stub implementation on !USB_HID
builds.

I have verified that it is currently possible to trigger a kernel splat due
to this bug in an ASAN build, and that this commit fixes the issue.

Fixes: b3b1c68fb726 ("HID: rapoo: Add support for side buttons on RAPOO 0x2015 mouse")
Cc: stable@vger.kernel.org
Signed-off-by: Jann Horn &lt;jannh@google.com&gt;
Signed-off-by: Jiri Kosina &lt;jkosina@suse.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
to_usb_interface() can only be used on a hid_device whose parent is really
USB; uhid can create devices that identify as being on BUS_USB, but don't
actually have a USB parent.
Fix the use of to_usb_interface() without a hid_is_usb() check.

Add a dependency on USB_HID for hid_is_usb(), as other HID drivers do; the
alternative would be to provide a simple stub implementation on !USB_HID
builds.

I have verified that it is currently possible to trigger a kernel splat due
to this bug in an ASAN build, and that this commit fixes the issue.

Fixes: b3b1c68fb726 ("HID: rapoo: Add support for side buttons on RAPOO 0x2015 mouse")
Cc: stable@vger.kernel.org
Signed-off-by: Jann Horn &lt;jannh@google.com&gt;
Signed-off-by: Jiri Kosina &lt;jkosina@suse.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>HID: roccat: add KUnit test for kone profile-index bounds</title>
<updated>2026-06-29T09:16:26+00:00</updated>
<author>
<name>Michael Bommarito</name>
<email>michael.bommarito@gmail.com</email>
</author>
<published>2026-06-18T03:00:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=7a5f1acd06e5d195cf0934b68256536e5404ef47'/>
<id>7a5f1acd06e5d195cf0934b68256536e5404ef47</id>
<content type='text'>
Drive kone_keep_values_up_to_date() with a crafted switch-profile event;
an out-of-range value reads past profiles[] (KASAN slab-out-of-bounds on
an unpatched tree). A benign control with an in-range value exercises the
same path. The test object is sized to end at profiles[] so the over-read
lands in the KASAN redzone.

Assisted-by: Claude:claude-opus-4-8
Signed-off-by: Michael Bommarito &lt;michael.bommarito@gmail.com&gt;
Signed-off-by: Jiri Kosina &lt;jkosina@suse.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Drive kone_keep_values_up_to_date() with a crafted switch-profile event;
an out-of-range value reads past profiles[] (KASAN slab-out-of-bounds on
an unpatched tree). A benign control with an in-range value exercises the
same path. The test object is sized to end at profiles[] so the over-read
lands in the KASAN redzone.

Assisted-by: Claude:claude-opus-4-8
Signed-off-by: Michael Bommarito &lt;michael.bommarito@gmail.com&gt;
Signed-off-by: Jiri Kosina &lt;jkosina@suse.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'for-7.2/oxp' into for-linus</title>
<updated>2026-06-16T19:50:58+00:00</updated>
<author>
<name>Jiri Kosina</name>
<email>jkosina@suse.com</email>
</author>
<published>2026-06-16T19:50:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=714c861554d09b615824d5c8ee0c45fe51f3b463'/>
<id>714c861554d09b615824d5c8ee0c45fe51f3b463</id>
<content type='text'>
- suport for OneXPlayer (Derek J. Clark)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- suport for OneXPlayer (Derek J. Clark)
</pre>
</div>
</content>
</entry>
<entry>
<title>HID: hid-oxp: Add Second Generation RGB Control</title>
<updated>2026-05-12T15:55:57+00:00</updated>
<author>
<name>Derek J. Clark</name>
<email>derekjohn.clark@gmail.com</email>
</author>
<published>2026-04-19T04:26:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=252c4bf1d9316ee57f60cef93b9ce37da10307be'/>
<id>252c4bf1d9316ee57f60cef93b9ce37da10307be</id>
<content type='text'>
Adds support for the second generation of RGB Control for OneXPlayer
devices. The interface mirrors the first generation, with some
differences to how messages are formatted.

Some devices have both a GEN1 MCU for RGB control and a GEN2 MCU for
button mapping. To avoid conflicts, quirk these devices to skip RGB
setup for the GEN2_USAGE_PAGE.

Reviewed-by: Zhouwang Huang &lt;honjow311@gmail.com&gt;
Tested-by: Zhouwang Huang &lt;honjow311@gmail.com&gt;
Signed-off-by: Derek J. Clark &lt;derekjohn.clark@gmail.com&gt;
Signed-off-by: Jiri Kosina &lt;jkosina@suse.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Adds support for the second generation of RGB Control for OneXPlayer
devices. The interface mirrors the first generation, with some
differences to how messages are formatted.

Some devices have both a GEN1 MCU for RGB control and a GEN2 MCU for
button mapping. To avoid conflicts, quirk these devices to skip RGB
setup for the GEN2_USAGE_PAGE.

Reviewed-by: Zhouwang Huang &lt;honjow311@gmail.com&gt;
Tested-by: Zhouwang Huang &lt;honjow311@gmail.com&gt;
Signed-off-by: Derek J. Clark &lt;derekjohn.clark@gmail.com&gt;
Signed-off-by: Jiri Kosina &lt;jkosina@suse.com&gt;
</pre>
</div>
</content>
</entry>
</feed>
