From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-qv1-f49.google.com (mail-qv1-f49.google.com [209.85.219.49]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DFE353AA1B5 for ; Tue, 30 Jun 2026 17:29:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.219.49 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782840581; cv=none; b=JccVJnGb4Vp/tbUOUUhALW9o1lS+ng9PKxE1PEmEum2JDHyyL/+zhy07bc7xbyTko2TEDYMUj4JA+VD4Q6MGw/UJpElrpo+pafZoW98wxFTY2B5SXacc6Y9QD5uOMPdPwNEUKjA9dTPbChqhDC64dBXcvPfi5yDcPXF7hpoqfqA= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782840581; c=relaxed/simple; bh=14JXHDUov15sI4LmCFpwfcUzJJoRGPOo2nja8t2Haug=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=qmRv598PisYnT6uv9OXbRfFrdlYx644PH4bNZzPp0iFCWMJptbjNZule+fg5fFhaUz57vaErDJiWtGQ3wzr8a1M8GyaO/eiim8aLqP8mlWq/dCLLjT0Oj6t9iyo2YI/R0JBrwmy53bGweKxl/U66RYggVJiktY/A4vyTFhukpko= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=aRVc7ssC; arc=none smtp.client-ip=209.85.219.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="aRVc7ssC" Received: by mail-qv1-f49.google.com with SMTP id 6a1803df08f44-8f29ec73064so4576626d6.1 for ; Tue, 30 Jun 2026 10:29:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1782840579; x=1783445379; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=7Zjcp730a59IfEeXDluRv9CB0OdLpPfJWTJZjwALmu8=; b=aRVc7ssC9UNW84kYl4z992yDl4me4DrWZks3A5hrNXtzAsg3/adkVaUsJRur1PlSe/ 6nKE/vYkpzrGFXlBiAUV6gedxreF8Bsr7nAP8RRa6vI/MozNQE8PMSpG6K+6/MsJZNP6 2keVi8fF7+pqg4Fe6CwaLLjorwKHKiy5FlkAuuyGbRNJwbhdGtcrqOtxyt1wQR1tEg+A ZRHXpTqRKKc9Molmgk4TbPk9jiW+CKFtUxh1FIDm6SMVy1/Ro7C84NBQPJHnJ971u87O pBpbjFGodSUBGnmJ+ApjIIT0e47+3zD4tkdsAciBbNGLRNqhHu/qO9bgjpP4etUunHeg UgRQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782840579; x=1783445379; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=7Zjcp730a59IfEeXDluRv9CB0OdLpPfJWTJZjwALmu8=; b=nU/UQ+9m6qy1FamlNA69MgLqAq882L635kP1dj94yFFNj0u2ZEp/UhdqYDJ9kfsXt8 mJvbi9fivQYVYQGZ2bNI97xsToLyp7TEEekqJhxCabWA+8xagIv1W/PQG9Oo2eAXSXHc k+lU++ubPpZ65HXbuWvam+n3oSa3XLEcGEMKvaZ7Pfs5dX0fEZ3R9NtAOzKoqP6LDqdw 3Fea8Xm6x5q3inI8kyHyP5DS6BH1xTrDeVHAXpdA8kdCNjIiVSPd/o3mnjX+vrqpTgkP Y+MRjHMIUlgtHSachjJ92MpY/PE/VBIAAsAaTrrtdRbxFbEAlxBYlpeZZDhHuSn/+mTV EDiA== X-Forwarded-Encrypted: i=1; AHgh+Rru06bBKhhO81tGeLz8pPaURcNpe0WUmGmT4wPQsGNHD56azj826ukTqgSwYbsQ7EY3cX8/6Cl5hCV02yc=@vger.kernel.org X-Gm-Message-State: AOJu0YyWeA5Jq8PDNzWPX39yPENUgDVuQLl98ubJXvxNnbb56iQAhCwd 0RnAh1C6tdeqJZW3abLNptiYaOxgLh5vTXhVxxWgg5LZy5A4oiDTYG9d X-Gm-Gg: AfdE7cliPtw4IXpThFhNoTB79/734bmZtEI25n+oWcr5EWTr69k82lJDUaL1eYrDCYC U8WgrXge6NPNL0h8bbTt9vhe1tB0+OC8f4Eyene9Qw8GuonSOJ2Cz+wFM8pmGXIO5qT2D9A9SKs 1wrulqzzSQOL6DfCfS8OCRAaFO54gTeQBcsl+bCioeD/1VRsNRsz7bpDoYSlPrqj7Emcc0HjOPR 4CE6XoHayMsbOLL05GlRqDLbf5GpFLbXRGszkxPt12MDwXR+i/EEvMVSlFR9l+ON9i9VFJMUPf1 squM+dRdXixaTMTvVT9AoQZAPvCnNsgJrO40IML7ys99qTvq2VsLHdVaCSB3zCdtpVoEfN009bY +Hgnoc7VOPD+xgGqzXhbogHOZDoDcV1Q4zqsvKtYGhpm0QX+YfUwN7Y3ilYz3Tu2IR8ns//HgLN Pbz+xrBrnqG56wWkk8UJZG3KzrzK4ho1pYUY/zeTdXiZlDcyq3 X-Received: by 2002:a05:6214:5901:b0:8e9:f62b:bee8 with SMTP id 6a1803df08f44-8f1bc867a9cmr76677786d6.56.1782840578671; Tue, 30 Jun 2026 10:29:38 -0700 (PDT) Received: from achantapc.mynetworksettings.com ([2600:4040:122a:dd00:da6a:a6e4:2464:e6a1]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-8f1a69c32cdsm29822906d6.31.2026.06.30.10.29.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 Jun 2026 10:29:38 -0700 (PDT) From: Sriman Achanta To: Jiri Kosina , Benjamin Tissoires Cc: linux-input@vger.kernel.org, linux-kernel@vger.kernel.org, Bastien Nocera , Simon Wood , Christian Mayer , Sriman Achanta Subject: [PATCH v5 0/9] HID: steelseries: split out Arctis driver and add Nova 7 Gen2 support Date: Tue, 30 Jun 2026 13:29:21 -0400 Message-ID: X-Mailer: git-send-email 2.54.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit This series moves the SteelSeries Arctis headset support out of hid-steelseries.c into its own module, reworks it around a per-model device_info table, hardens the battery power-supply lifetime, adds an asynchronous status interface, and finally adds support for the Arctis Nova 7 Gen2 family. After the split, hid-steelseries.c is left handling only the SRW-S1 racing wheel. Changes since v4: - Refactor: send the Arctis 1 and Arctis 9 status requests as output reports again. v4 regressed these to feature reports during the refactor, which can stall the endpoint and break battery polling. The now-unused feature-report helper is removed. - Refactor: the Arctis 1 parser validates the report length and the 0x06 0x12 header before consuming a report as battery status, instead of parsing every incoming report. - Refactor: the Arctis 9 parser only reads capacity/charging from a 0xaa 0x01 status frame and treats every other frame (including the 0x55 "no status" and the 0x03 "stale" replies) as disconnected. - Refcounting: register the power supply into a local variable and publish sd->battery only on success, so a concurrent raw_event can never observe an error pointer. - Async: publish the sync interface's drvdata only once the device is fully initialised, so the async sibling never attaches to a half-initialised or failed instance; the probe error path is simplified accordingly. - Async: the sibling lookup verifies the sibling is bound to this driver and takes a reference before using its data, guarding against type confusion and use-after-free. - Dropped the standalone "Fix whitespace in srws1 report descriptor" patch from v4; it was unrelated churn and the descriptor is left untouched from upstream. - Rebased on the 7.2 merge window. Sriman Achanta (9): HID: steelseries: Fix ARCTIS_1_X device mislabeling HID: steelseries: Split Arctis headset driver into separate module HID: steelseries: Inline and simplify SRWS1 wheel driver HID: steelseries: Refactor Arctis driver to use device_info framework HID: steelseries: Report POWER_SUPPLY_STATUS_FULL when full HID: steelseries: Correct Arctis 9 battery calibration range HID: steelseries: Manage battery lifetime with refcounting HID: steelseries: Add async status interface support HID: steelseries: Add support for Arctis Nova 7 Gen2 family drivers/hid/Makefile | 2 +- drivers/hid/hid-ids.h | 12 +- drivers/hid/hid-quirks.c | 10 +- drivers/hid/hid-steelseries-arctis.c | 643 +++++++++++++++++++++++++++ drivers/hid/hid-steelseries.c | 406 +---------------- 5 files changed, 672 insertions(+), 401 deletions(-) create mode 100644 drivers/hid/hid-steelseries-arctis.c base-commit: 840ef6c78e6a2f694b578ecb9063241c992aaa9e -- 2.54.0