Commit d69ccfcb authored by Derek J. Clark's avatar Derek J. Clark Committed by Jiri Kosina
Browse files

HID: hid-lenovo-go: Add Lenovo Legion Go Series HID Driver



Adds initial framework for a new HID driver, hid-lenovo-go, along with
attributes that report the firmware and hardware version for each
component of the HID device, of which there are 4 parts: The MCU, the
transmission dongle, the left "handle" controller half, and the right
"handle" controller half. Each of these devices are provided an attribute
group to contain its device specific attributes. Additionally, the touchpad
device attributes are logically separated from the other components in
another attribute group.

This driver primarily provides access to the configurable settings of the
Lenovo Legion Go and Lenovo Legion Go 2 controllers running the latest
firmware. As previously noted, the Legion Go controllers recently had a
firmware update[1] which switched from the original "SepentiaUSB" protocol
to a brand new protocol for the Go 2, primarily to ensure backwards and
forwards compatibility between the Go and Go 2 devices. As part of that
update the PIDs for the controllers were changed, so there is no risk of
this driver attaching to controller firmware that it doesn't support.

--
v6:
  - Make attributes static.
  - Use NULL instead of 0 in mcu_propery_out when there is no data.
v5:
  - Make version attributes static, retrieve them using delayed work
    during probe.
  - Fix endianness of version strings and print as hex.
v3:
  - Add hid-lenovo.c and Mark Pearson to LENOVO HID DRIVERS entry in MAINTAINERS

Reviewed-by: default avatarMark Pearson <mpearson-lenovo@squebb.ca>
Signed-off-by: default avatarDerek J. Clark <derekjohn.clark@gmail.com>
Signed-off-by: default avatarJiri Kosina <jkosina@suse.com>
parent 1b891f4c
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -14467,6 +14467,14 @@ L: platform-driver-x86@vger.kernel.org
S:	Maintained
F:	drivers/platform/x86/lenovo/wmi-hotkey-utilities.c
LENOVO HID drivers
M:	Derek J. Clark <derekjohn.clark@gmail.com>
M:	Mark Pearson <mpearson-lenovo@squebb.ca>
L:	linux-input@vger.kernel.org
S:	Maintained
F:	drivers/hid/hid-lenovo-go.c
F:	drivers/hid/hid-lenovo.c
LETSKETCH HID TABLET DRIVER
M:	Hans de Goede <hansg@kernel.org>
L:	linux-input@vger.kernel.org
+12 −0
Original line number Diff line number Diff line
@@ -623,6 +623,18 @@ config HID_LENOVO
	- ThinkPad Compact Bluetooth Keyboard with TrackPoint (supports Fn keys)
	- ThinkPad Compact USB Keyboard with TrackPoint (supports Fn keys)

config HID_LENOVO_GO
	tristate "HID Driver for Lenovo Legion Go Series Controllers"
	depends on USB_HID
	select LEDS_CLASS
	select LEDS_CLASS_MULTICOLOR
	help
	Support for Lenovo Legion Go devices with detachable controllers.

	Say Y here to include configuration interface support for the Lenovo Legion Go
	and Legion Go 2 Handheld Console Controllers. Say M here to compile this
	driver as a module. The module will be called hid-lenovo-go.

config HID_LETSKETCH
	tristate "Letsketch WP9620N tablets"
	depends on USB_HID
+1 −0
Original line number Diff line number Diff line
@@ -76,6 +76,7 @@ obj-$(CONFIG_HID_KYE) += hid-kye.o
obj-$(CONFIG_HID_KYSONA)	+= hid-kysona.o
obj-$(CONFIG_HID_LCPOWER)	+= hid-lcpower.o
obj-$(CONFIG_HID_LENOVO)	+= hid-lenovo.o
obj-$(CONFIG_HID_LENOVO_GO)	+= hid-lenovo-go.o
obj-$(CONFIG_HID_LETSKETCH)	+= hid-letsketch.o
obj-$(CONFIG_HID_LOGITECH)	+= hid-logitech.o
obj-$(CONFIG_HID_LOGITECH)	+= hid-lg-g15.o
+3 −0
Original line number Diff line number Diff line
@@ -859,7 +859,10 @@
#define USB_DEVICE_ID_LENOVO_PIXART_USB_MOUSE_602E	0x602e
#define USB_DEVICE_ID_LENOVO_PIXART_USB_MOUSE_6093	0x6093
#define USB_DEVICE_ID_LENOVO_LEGION_GO_DUAL_DINPUT	0x6184
#define USB_DEVICE_ID_LENOVO_LEGION_GO2_XINPUT		0x61eb
#define USB_DEVICE_ID_LENOVO_LEGION_GO2_DINPUT		0x61ec
#define USB_DEVICE_ID_LENOVO_LEGION_GO2_DUAL_DINPUT	0x61ed
#define USB_DEVICE_ID_LENOVO_LEGION_GO2_FPS		0x61ee

#define USB_VENDOR_ID_LETSKETCH		0x6161
#define USB_DEVICE_ID_WP9620N		0x4d15
+914 −0

File added.

Preview size limit exceeded, changes collapsed.