UPSTREAM: HID: add driver for Valve Steam Controller

There are two ways to connect the Steam Controller: directly to the USB
or with the USB wireless adapter.  Both methods are similar, but the
wireless adapter can connect up to 4 devices at the same time.

The wired device will appear as 3 interfaces: a virtual mouse, a virtual
keyboard and a custom HID device.

The wireless device will appear as 5 interfaces: a virtual keyboard and
4 custom HID devices, that will remain silent until a device is actually
connected.

The custom HID device has a report descriptor with all vendor specific
usages, so the hid-generic is not very useful. In a PC/SteamBox Valve
Steam Client provices a software translation by using hidraw and a
creates a uinput virtual gamepad and XTest keyboard/mouse.

This driver intercepts the hidraw usage, so it can get out of the way
when the Steam Client is in use.

(cherry picked from commit c164d6abf3841ffacfdb757c10616f9cb1f67276
("HID: add driver for Valve Steam Controller"))
https://github.com/torvalds/linux/commit/c164d6abf3841ffacfdb757c10616f9cb1f67276

Signed-off-by: Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>

Change-Id: Ic435163998560885afb2a6d71b1604de21fb8b11
Signed-Off-By: Siarhei Vishniakou <svv@google.com>
Bug: 136263708
Test: connected steam controller to Android
6 files changed