[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-Id: <9c470f55-2f53-4669-b976-9a81d8bfe856@app.fastmail.com>
Date: Sun, 25 Jan 2026 19:53:38 -0500
From: "Mark Pearson" <mpearson-lenovo@...ebb.ca>
To: "Derek J . Clark" <derekjohn.clark@...il.com>,
"Jiri Kosina" <jikos@...nel.org>, "Benjamin Tissoires" <bentiss@...nel.org>
Cc: "Limonciello, Mario" <mario.limonciello@....com>,
"Zhixin Zhang" <zhangzx36@...ovo.com>, "Mia Shao" <shaohz1@...ovo.com>,
"Pierre-Loup A . Griffais" <pgriffais@...vesoftware.com>,
linux-input@...r.kernel.org, linux-doc@...r.kernel.org,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH v3 00/16] HID: Add Legion Go and Go S Drivers
On Fri, Jan 23, 2026, at 8:48 PM, Derek J. Clark wrote:
> This series adds configuration driver support for the Legion Go S,
> Legion Go, and Legion Go 2 built-in controller HID interfaces. This
> allows for configuring hardware specific attributes such as the auso
> sleep timeout, rumble intensity, etc. non-configuration reports are
> forwarded to the HID subsystem to ensure no loss of functionality in
> userspace. Basic gamepad functionality is provided through xpad, while
> advanced features are currently only implemented in userspace daemons
> such as InputPlumber[1]. I plan to move this functionality into the
> kernel in a later patch series.
>
> Three new device.h macros are added that solve a fairly specific
> problem. Many of the attributes need to have the same name as other
> attributes when they are in separate attribute subdirectories. The
> previous version of this series, along with the upcoming his-asus-ally
> driver[2] use this macro to simplify the sysfs by removing redundancy.
> An upcoming out of tree driver for the Zotac Zone [3] also found this
> macro to be useful. This greatly reduces the path length and term
> redundancy of file paths in the sysfs, while also allowing for cleaner
> subdirectories that are grouped by functionality. Rather than carry the
> same macro in four drivers, it seems beneficial to me that we include the
> macro with the other device macros.
>
> A new HID uevent property is also added, HID_FIRMWARE_VERSION, so as to
> permit fwupd to read the firmware version of the Go S HID interface without
> detaching the kernel driver.
>
> Finally, there are some checkpatch warnings that will need to be supressed:
> WARNING: ENOSYS means 'invalid syscall nr' and nothing else
> 1292: FILE: drivers/hid/lenovo-legos-hid/lenovo-legos-hid-config.c:1085:
> + case -ENOSYS: /* during rmmod -ENOSYS is expected */
>
> This error handling case was added as it is experienced in the real world
> when the driver is rmmod. The LED subsystem produces this error code in
> its legacy code and this is not a new novel use of -ENOSYS, we are simply
> catching the case to avoid spurious errors in dmesg when the drivers are
> removed.
>
> [1]:
> https://github.com/ShadowBlip/InputPlumber/tree/main/src/drivers/lego
> [2]: https://lore.kernel.org/all/20240806081212.56860-1-luke@ljones.dev/
> [3]:
> https://github.com/flukejones/linux/tree/wip/zotac-zone-6.15/drivers/hid/zotac-zone-hid
>
> Signed-off-by: Derek J. Clark <derekjohn.clark@...il.com>
> ---
> Change Log
> V3:
> - Fix Documentation formatting by removing extra + characters
> - Fix bugs in hid-lenovo-go-s IMU & TP RO attributes being tied to the
> wrong _show function.
> - Rename enume os_mode_index to os_mode_types_index to fix collision
> with os_mode_index attribute.
> - Remove accidental rename for enabled->enable attributes in patch 4
> - Add SOB for Mario in patch 10 as Co-Developer
> V2:
> https://lore.kernel.org/linux-input/20251229031753.581664-1-derekjohn.clark@gmail.com/
> - Break up adding the Go S driver into feature specific patches
> - Rename Go S driver from lenovo-legos-hid to hid-lenovo-go-s
> - Drop the arbitrary uevent properties patch
> - Add Go serires driver
> - Move DEVICE_ATTR_NAMED macros to device.h
> V1:
> https://lore.kernel.org/linux-input/20250703004943.515919-1-derekjohn.clark@gmail.com/
>
>
> Derek J. Clark (15):
> include: device.h: Add named device attributes
> HID: hid-lenovo-go: Add Lenovo Legion Go Series HID Driver
> HID: hid-lenovo-go: Add Feature Status Attributes
> HID: hid-lenovo-go: Add Rumble and Haptic Settings
> HID: hid-lenovo-go: Add FPS Mode DPI settings
> HID: hid-lenovo-go: Add RGB LED control interface
> HID: hid-lenovo-go: Add Calibration Settings
> HID: hid-lenovo-go: Add OS Mode Toggle
> HID: hid-lenovo-go-s: Add Lenovo Legion Go S Series HID Driver
> HID: hid-lenovo-go-s: Add MCU ID Attribute
> HID: hid-lenovo-go-s: Add Feature Status Attributes
> HID: hid-lenovo-go-s: Add Touchpad Mode Attributes
> HID: hid-lenovo-go-s: Add RGB LED control interface
> HID: hid-lenovo-go-s: Add IMU and Touchpad RO Attributes
> HID: Add documentation for Lenovo Legion Go drivers
>
> Mario Limonciello (1):
> HID: Include firmware version in the uevent
>
> .../ABI/testing/sysfs-driver-hid-lenovo-go | 724 +++++
> .../ABI/testing/sysfs-driver-hid-lenovo-go-s | 304 +++
> MAINTAINERS | 11 +
> drivers/hid/Kconfig | 24 +
> drivers/hid/Makefile | 2 +
> drivers/hid/hid-core.c | 5 +
> drivers/hid/hid-ids.h | 7 +
> drivers/hid/hid-lenovo-go-s.c | 1577 +++++++++++
> drivers/hid/hid-lenovo-go.c | 2399 +++++++++++++++++
> include/linux/device.h | 46 +
> include/linux/hid.h | 1 +
> 11 files changed, 5100 insertions(+)
> create mode 100644 Documentation/ABI/testing/sysfs-driver-hid-lenovo-go
> create mode 100644 Documentation/ABI/testing/sysfs-driver-hid-lenovo-go-s
> create mode 100644 drivers/hid/hid-lenovo-go-s.c
> create mode 100644 drivers/hid/hid-lenovo-go.c
>
> --
> 2.52.0
For the series - all looks good to me.
Reviewed-by: Mark Pearson <mpearson-lenovo@...ebb.ca>
Mark
Powered by blists - more mailing lists