linux-stable/drivers/input
Brenton Simpson 17a6d7a0a7 Input: xpad - add Lenovo Legion Go controllers
[ Upstream commit 80441f76ee ]

The Lenovo Legion Go is a handheld gaming system, similar to a Steam Deck.
It has a gamepad (including rear paddles), 3 gyroscopes, a trackpad,
volume buttons, a power button, and 2 LED ring lights.

The Legion Go firmware presents these controls as a USB hub with various
devices attached.  In its default state, the gamepad is presented as an
Xbox controller connected to this hub.  (By holding a combination of
buttons, it can be changed to use the older DirectInput API.)

This patch teaches the existing Xbox controller module `xpad` to bind to
the controller in the Legion Go, which enables support for the:

- directional pad,
- analog sticks (including clicks),
- X, Y, A, B,
- start and select (or menu and capture),
- shoulder buttons, and
- rumble.

The trackpad, touchscreen, volume controls, and power button are already
supported via existing kernel modules.  Two of the face buttons, the
gyroscopes, rear paddles, and LEDs are not.

After this patch lands, the Legion Go will be mostly functional in Linux,
out-of-the-box.  The various components of the USB hub can be synthesized
into a single logical controller (including the additional buttons) in
userspace with [Handheld Daemon](https://github.com/hhd-dev/hhd), which
makes the Go fully functional.

Signed-off-by: Brenton Simpson <appsforartists@google.com>
Link: https://lore.kernel.org/r/20240118183546.418064-1-appsforartists@google.com
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-03-01 13:34:51 +01:00
..
gameport Input: gameport - add ISA and HAS_IOPORT dependencies 2023-07-05 17:32:34 -07:00
joystick Input: xpad - add Lenovo Legion Go controllers 2024-03-01 13:34:51 +01:00
keyboard Input: atkbd - skip ATKBD_CMD_SETLEDS when skipping ATKBD_CMD_GETID 2024-02-16 19:10:55 +01:00
misc Input: soc_button_array - add mapping for airplane mode button 2024-01-01 12:42:41 +00:00
mouse Input: psmouse - enable Synaptics InterTouch for ThinkPad L14 G1 2024-01-20 11:51:43 +01:00
rmi4 Input: synaptics-rmi4 - fix use after free in rmi_unregister_function() 2023-11-20 11:59:34 +01:00
serio Input: i8042 - fix strange behavior of touchpad on Clevo NS70PU 2024-02-16 19:10:55 +01:00
tablet Input: pegasus-notetaker - check pipe type when probing 2023-04-09 19:19:14 -07:00
tests Input: tests - add test to cover all input_grab_device() function 2023-05-23 14:50:28 -07:00
touchscreen Input: goodix - accept ACPI resources with gpio_count == 3 && gpio_int_idx == 0 2024-03-01 13:34:50 +01:00
apm-power.c
evbug.c
evdev.c
ff-core.c
ff-memless.c
input-compat.c
input-compat.h
input-core-private.h
input-leds.c
input-mt.c
input-poller.c
input-poller.h
input.c Linux 6.4 2023-07-17 09:20:46 -07:00
joydev.c
Kconfig Input: tests - modular KUnit tests should not depend on KUNIT=y 2023-05-02 10:39:00 -07:00
Makefile Input: Add KUnit tests for some of the input core helper functions 2023-04-01 22:47:04 -07:00
matrix-keymap.c
mousedev.c
sparse-keymap.c
touchscreen.c
vivaldi-fmap.c