lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <32e14a5d6ee839edc3253587f2f99ec6cd0ddfa0.camel@hadess.net>
Date: Mon, 12 Jan 2026 14:09:46 +0100
From: Bastien Nocera <hadess@...ess.net>
To: Sriman Achanta <srimanachanta@...il.com>, Jiri Kosina
 <jikos@...nel.org>,  Benjamin Tissoires	 <bentiss@...nel.org>,
 linux-input@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH v2 4/4] HID: steelseries: Add support for Arctis headset
 lineup

On Sun, 2026-01-11 at 23:19 -0500, Sriman Achanta wrote:
> Add full support for the SteelSeries Arctis wireless gaming headset
> lineup, extending the driver from basic support for 2 models (Arctis
> 1
> and 9) to comprehensive support for 25+ models across all Arctis
> generations.
> 
> This is a major restructure of the hid-steelseries driver that
> replaces
> the previous minimal implementation with a unified, capability-based
> architecture.

This patch needs to be split up, at the very least it needs new
features to be split up from any other refactoring that might be needed
to support features with each new feature getting its own commit.

As mentioned in the earlier patch, sidetone control, chatmix level, mic
level, volume limiter and bluetooth call volume all should be
implemented as ALSA mixers/switches so they can be toggled with stock
tools and presented in a uniform way up the stack (Pipewire/Pulseaudio
and desktop environments).

An additional comments inline.

> <snip>
> -/* Fixed report descriptor for Steelseries SRW-S1 wheel controller
> - *
> - * The original descriptor hides the sensitivity and assists dials
> - * a custom vendor usage page. This inserts a patch to make them
> - * appear in the 'Generic Desktop' usage.
> - */
> -
> +/* Fixed report descriptor for Steelseries SRW-S1 wheel controller
> */

There's really no need to reindent this array.

>  static const __u8 steelseries_srws1_rdesc_fixed[] = {
> -0x05, 0x01,         /*  Usage Page (Desktop)                */
> -0x09, 0x08,         /*  Usage (MultiAxis), Changed          */
> -0xA1, 0x01,         /*  Collection (Application),           */
> -0xA1, 0x02,         /*      Collection (Logical),           */
> -0x95, 0x01,         /*          Report Count (1),           */
> -0x05, 0x01,         /* Changed  Usage Page (Desktop),       */
> -0x09, 0x30,         /* Changed  Usage (X),                  */
> -0x16, 0xF8, 0xF8,   /*          Logical Minimum (-1800),    */
> -0x26, 0x08, 0x07,   /*          Logical Maximum (1800),     */
> -0x65, 0x14,         /*          Unit (Degrees),             */
> -0x55, 0x0F,         /*          Unit Exponent (15),         */
> -0x75, 0x10,         /*          Report Size (16),           */
> -0x81, 0x02,         /*          Input (Variable),           */
> -0x09, 0x31,         /* Changed  Usage (Y),                  */
> -0x15, 0x00,         /*          Logical Minimum (0),        */
> -0x26, 0xFF, 0x03,   /*          Logical Maximum (1023),     */
> -0x75, 0x0C,         /*          Report Size (12),           */
> -0x81, 0x02,         /*          Input (Variable),           */
> -0x09, 0x32,         /* Changed  Usage (Z),                  */
> -0x15, 0x00,         /*          Logical Minimum (0),        */
> -0x26, 0xFF, 0x03,   /*          Logical Maximum (1023),     */
> -0x75, 0x0C,         /*          Report Size (12),           */
> -0x81, 0x02,         /*          Input (Variable),           */
> -0x05, 0x01,         /*          Usage Page (Desktop),       */
> -0x09, 0x39,         /*          Usage (Hat Switch),         */
> -0x25, 0x07,         /*          Logical Maximum (7),        */
> -0x35, 0x00,         /*          Physical Minimum (0),       */
> -0x46, 0x3B, 0x01,   /*          Physical Maximum (315),     */
> -0x65, 0x14,         /*          Unit (Degrees),             */
> -0x75, 0x04,         /*          Report Size (4),            */
> -0x95, 0x01,         /*          Report Count (1),           */
> -0x81, 0x02,         /*          Input (Variable),           */
> -0x25, 0x01,         /*          Logical Maximum (1),        */
> -0x45, 0x01,         /*          Physical Maximum (1),       */
> -0x65, 0x00,         /*          Unit,                       */
> -0x75, 0x01,         /*          Report Size (1),            */
> -0x95, 0x03,         /*          Report Count (3),           */
> -0x81, 0x01,         /*          Input (Constant),           */
> -0x05, 0x09,         /*          Usage Page (Button),        */
> -0x19, 0x01,         /*          Usage Minimum (01h),        */
> -0x29, 0x11,         /*          Usage Maximum (11h),        */
> -0x95, 0x11,         /*          Report Count (17),          */
> -0x81, 0x02,         /*          Input (Variable),           */
> -                    /*   ---- Dial patch starts here ----   */
> -0x05, 0x01,         /*          Usage Page (Desktop),       */
> -0x09, 0x33,         /*          Usage (RX),                 */
> -0x75, 0x04,         /*          Report Size (4),            */
> -0x95, 0x02,         /*          Report Count (2),           */
> -0x15, 0x00,         /*          Logical Minimum (0),        */
> -0x25, 0x0b,         /*          Logical Maximum (b),        */
> -0x81, 0x02,         /*          Input (Variable),           */
> -0x09, 0x35,         /*          Usage (RZ),                 */
> -0x75, 0x04,         /*          Report Size (4),            */
> -0x95, 0x01,         /*          Report Count (1),           */
> -0x25, 0x03,         /*          Logical Maximum (3),        */
> -0x81, 0x02,         /*          Input (Variable),           */
> -                    /*    ---- Dial patch ends here ----    */
> -0x06, 0x00, 0xFF,   /*          Usage Page (FF00h),         */
> -0x09, 0x01,         /*          Usage (01h),                */
> -0x75, 0x04,         /* Changed  Report Size (4),            */
> -0x95, 0x0D,         /* Changed  Report Count (13),          */
> -0x81, 0x02,         /*          Input (Variable),           */
> -0xC0,               /*      End Collection,                 */
> -0xA1, 0x02,         /*      Collection (Logical),           */
> -0x09, 0x02,         /*          Usage (02h),                */
> -0x75, 0x08,         /*          Report Size (8),            */
> -0x95, 0x10,         /*          Report Count (16),          */
> -0x91, 0x02,         /*          Output (Variable),          */
> -0xC0,               /*      End Collection,                 */
> -0xC0                /*  End Collection                      */
> +	0x05, 0x01, /*  Usage Page (Desktop)                */
> +	0x09, 0x08, /*  Usage (MultiAxis), Changed          */
> +	0xA1, 0x01, /*  Collection (Application),           */
> +	0xA1, 0x02, /*      Collection (Logical),           */
> +	0x95, 0x01, /*          Report Count (1),           */
> +	0x05, 0x01, /* Changed  Usage Page (Desktop),       */
> +	0x09, 0x30, /* Changed  Usage (X),                  */
> +	0x16, 0xF8, 0xF8, /*          Logical Minimum (-1800),    */
> +	0x26, 0x08, 0x07, /*          Logical Maximum (1800),     */
> +	0x65, 0x14, /*          Unit (Degrees),             */
> +	0x55, 0x0F, /*          Unit Exponent (15),         */
> +	0x75, 0x10, /*          Report Size (16),           */
> +	0x81, 0x02, /*          Input (Variable),           */
> +	0x09, 0x31, /* Changed  Usage (Y),                  */
> +	0x15, 0x00, /*          Logical Minimum (0),        */
> +	0x26, 0xFF, 0x03, /*          Logical Maximum (1023),     */
> +	0x75, 0x0C, /*          Report Size (12),           */
> +	0x81, 0x02, /*          Input (Variable),           */
> +	0x09, 0x32, /* Changed  Usage (Z),                  */
> +	0x15, 0x00, /*          Logical Minimum (0),        */
> +	0x26, 0xFF, 0x03, /*          Logical Maximum (1023),     */
> +	0x75, 0x0C, /*          Report Size (12),           */
> +	0x81, 0x02, /*          Input (Variable),           */
> +	0x05, 0x01, /*          Usage Page (Desktop),       */
> +	0x09, 0x39, /*          Usage (Hat Switch),         */
> +	0x25, 0x07, /*          Logical Maximum (7),        */
> +	0x35, 0x00, /*          Physical Minimum (0),       */
> +	0x46, 0x3B, 0x01, /*          Physical Maximum (315),     */
> +	0x65, 0x14, /*          Unit (Degrees),             */
> +	0x75, 0x04, /*          Report Size (4),            */
> +	0x95, 0x01, /*          Report Count (1),           */
> +	0x81, 0x02, /*          Input (Variable),           */
> +	0x25, 0x01, /*          Logical Maximum (1),        */
> +	0x45, 0x01, /*          Physical Maximum (1),       */
> +	0x65, 0x00, /*          Unit,                       */
> +	0x75, 0x01, /*          Report Size (1),            */
> +	0x95, 0x03, /*          Report Count (3),           */
> +	0x81, 0x01, /*          Input (Constant),           */
> +	0x05, 0x09, /*          Usage Page (Button),        */
> +	0x19, 0x01, /*          Usage Minimum (01h),        */
> +	0x29, 0x11, /*          Usage Maximum (11h),        */
> +	0x95, 0x11, /*          Report Count (17),          */
> +	0x81, 0x02, /*          Input (Variable),           */
> +	/*   ---- Dial patch starts here ----   */
> +	0x05, 0x01, /*          Usage Page (Desktop),       */
> +	0x09, 0x33, /*          Usage (RX),                 */
> +	0x75, 0x04, /*          Report Size (4),            */
> +	0x95, 0x02, /*          Report Count (2),           */
> +	0x15, 0x00, /*          Logical Minimum (0),        */
> +	0x25, 0x0b, /*          Logical Maximum (b),        */
> +	0x81, 0x02, /*          Input (Variable),           */
> +	0x09, 0x35, /*          Usage (RZ),                 */
> +	0x75, 0x04, /*          Report Size (4),            */
> +	0x95, 0x01, /*          Report Count (1),           */
> +	0x25, 0x03, /*          Logical Maximum (3),        */
> +	0x81, 0x02, /*          Input (Variable),           */
> +	/*    ---- Dial patch ends here ----    */
> +	0x06, 0x00, 0xFF, /*          Usage Page (FF00h),         */
> +	0x09, 0x01, /*          Usage (01h),                */
> +	0x75, 0x04, /* Changed  Report Size (4),            */
> +	0x95, 0x0D, /* Changed  Report Count (13),          */
> +	0x81, 0x02, /*          Input (Variable),           */
> +	0xC0, /*      End Collection,                 */
> +	0xA1, 0x02, /*      Collection (Logical),           */
> +	0x09, 0x02, /*          Usage (02h),                */
> +	0x75, 0x08, /*          Report Size (8),            */
> +	0x95, 0x10, /*          Report Count (16),          */
> +	0x91, 0x02, /*          Output (Variable),          */
> +	0xC0, /*      End Collection,                 */
> +	0xC0 /*  End Collection                      */
>  };

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ