public inbox for linux-input@vger.kernel.org
 help / color / mirror / Atom feed
From: Bastien Nocera <hadess@hadess.net>
To: Sriman Achanta <srimanachanta@gmail.com>,
	Jiri Kosina <jikos@kernel.org>,
	 Benjamin Tissoires	 <bentiss@kernel.org>,
	linux-input@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 4/4] HID: steelseries: Add support for Arctis headset lineup
Date: Mon, 12 Jan 2026 14:09:46 +0100	[thread overview]
Message-ID: <32e14a5d6ee839edc3253587f2f99ec6cd0ddfa0.camel@hadess.net> (raw)
In-Reply-To: <20260112041941.40531-5-srimanachanta@gmail.com>

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                      */
>  };

  reply	other threads:[~2026-01-12 13:11 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-01-12  4:19 [PATCH v2 0/4] HID: steelseries: Add support for Arctis headset lineup Sriman Achanta
2026-01-12  4:19 ` [PATCH v2 1/4] HID: hid-ids: Add SteelSeries Arctis headset device IDs Sriman Achanta
2026-01-12 13:08   ` Bastien Nocera
2026-01-12  4:19 ` [PATCH v2 2/4] HID: quirks: Add INPUT_CONFIGURED quirk for SteelSeries Arctis headsets Sriman Achanta
2026-01-12 13:08   ` Bastien Nocera
2026-01-12  4:19 ` [PATCH v2 3/4] Documentation: ABI: Document SteelSeries headset sysfs attributes Sriman Achanta
2026-01-12 13:08   ` Bastien Nocera
2026-01-12  4:19 ` [PATCH v2 4/4] HID: steelseries: Add support for Arctis headset lineup Sriman Achanta
2026-01-12 13:09   ` Bastien Nocera [this message]
     [not found]     ` <CABMjph80yxmXnZjLgUrhFN7cKf2P=VjWF0rfWxG0rYOa42f5eQ@mail.gmail.com>
     [not found]       ` <e5b256fa8da7fe079f3e3b10a1b0b6a0faf8e913.camel@hadess.net>
     [not found]         ` <CABMjph9TzmCfks0OEtCx4gFFe0pKOccBwVutq6dVH2DhzSC5vA@mail.gmail.com>
2026-02-26 10:01           ` Bastien Nocera
2026-01-20 19:01 ` [PATCH v2 0/4] " Benjamin Wheeler
2026-01-20 20:01 ` [PATCH 0/3] HID: steelseries: clean up functions, move battery request data to structs Benjamin Wheeler
2026-01-20 20:02   ` [PATCH 1/3] HID: steelseries: Clean up hid send_report functions Benjamin Wheeler
2026-01-20 20:02   ` [PATCH 2/3] HID: steelseries: Add battery request info (byte flags) to device info Benjamin Wheeler
2026-01-20 20:02   ` [PATCH 3/3] HID: steelseries: Use device data for battery requests Benjamin Wheeler

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=32e14a5d6ee839edc3253587f2f99ec6cd0ddfa0.camel@hadess.net \
    --to=hadess@hadess.net \
    --cc=bentiss@kernel.org \
    --cc=jikos@kernel.org \
    --cc=linux-input@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=srimanachanta@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox