This series adds initial support for the Legion Go S's built-in controller HID configuration interface. In the first patch a new HID uevent property is added, HID_FIRMWARE_VERSION, so as to permit fwupd to read the firmware version of the HID interface without detaching the kernel driver. The second patch adds the ability for an hid_driver to assign new/arbitrary uevent properties for static data that doesn't benefit from having a sysfs entry. The third patch adds the VID and PID for the Lenovo Legion Go S MCU. The fourth patch adds ABI documentation for the config interface introduced in the final patch. The fifth patch introduces the core lenovo-legos-hid driver which acts as a routing interface for the different endpoints. The sixth path introduces the config lenovo-legos-hid driver wich uses both the HID_FIRMWARE_VERSION as well as arbitrary uevent properties. Additional interfaces and config properties are planned to be added in a future series. Patch 6 introduces a checkpatch WARNING that I'm unable to resolve: 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 driver is removed. If there is a way to prevent this error from being triggered by checkpatch in the first place, that would be an ideal remedy, but I'm not aware how that can be done at this time. Signed-off-by: Derek J. Clark <derekjohn.clark@xxxxxxxxx> Derek J. Clark (4): HID: Add Legion Go S ID's HID: Add documentation for lenovo-legos-hid driver HID: Add lenovo-legos-hid core HID: Add lenovo-legos-hid configuration endpoint interface Mario Limonciello (2): HID: Include firmware version in the uevent HID: Allow HID drivers to add more uevent variables .../ABI/testing/sysfs-driver-lenovo-legos-hid | 269 +++ MAINTAINERS | 7 + drivers/hid/Kconfig | 2 + drivers/hid/Makefile | 2 + drivers/hid/hid-core.c | 11 + drivers/hid/hid-ids.h | 4 + drivers/hid/lenovo-legos-hid/Kconfig | 11 + drivers/hid/lenovo-legos-hid/Makefile | 6 + drivers/hid/lenovo-legos-hid/config.c | 1518 +++++++++++++++++ drivers/hid/lenovo-legos-hid/config.h | 19 + drivers/hid/lenovo-legos-hid/core.c | 122 ++ drivers/hid/lenovo-legos-hid/core.h | 25 + include/linux/hid.h | 2 + 13 files changed, 1998 insertions(+) create mode 100644 Documentation/ABI/testing/sysfs-driver-lenovo-legos-hid create mode 100644 drivers/hid/lenovo-legos-hid/Kconfig create mode 100644 drivers/hid/lenovo-legos-hid/Makefile create mode 100644 drivers/hid/lenovo-legos-hid/config.c create mode 100644 drivers/hid/lenovo-legos-hid/config.h create mode 100644 drivers/hid/lenovo-legos-hid/core.c create mode 100644 drivers/hid/lenovo-legos-hid/core.h -- 2.50.0