linux/drivers/input
Cameron Gutman f5308d1b83 Input: xpad - fix PowerA init quirk for some gamepad models
The PowerA gamepad initialization quirk worked with the PowerA
wired gamepad I had around (0x24c6:0x543a), but a user reported [0]
that it didn't work for him, even though our gamepads shared the
same vendor and product IDs.

When I initially implemented the PowerA quirk, I wanted to avoid
actually triggering the rumble action during init. My tests showed
that my gamepad would work correctly even if it received a rumble
of 0 intensity, so that's what I went with.

Unfortunately, this apparently isn't true for all models (perhaps
a firmware difference?). This non-working gamepad seems to require
the real magic rumble packet that the Microsoft driver sends, which
actually vibrates the gamepad. To counteract this effect, I still
send the old zero-rumble PowerA quirk packet which cancels the
rumble effect before the motors can spin up enough to vibrate.

[0]: https://github.com/paroj/xpad/issues/48#issuecomment-313904867

Reported-by: Kyle Beauchamp <kyleabeauchamp@gmail.com>
Tested-by: Kyle Beauchamp <kyleabeauchamp@gmail.com>
Fixes: 81093c9848 ("Input: xpad - support some quirky Xbox One pads")
Cc: stable@vger.kernel.org # v4.12
Signed-off-by: Cameron Gutman <aicommander@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
2017-08-31 11:55:11 -07:00
..
gameport Input: gameport - use setup_timer 2017-04-10 20:41:39 -07:00
joystick Input: xpad - fix PowerA init quirk for some gamepad models 2017-08-31 11:55:11 -07:00
keyboard Merge branch 'next' into for-linus 2017-07-12 14:17:17 -07:00
misc Input: soc_button_array - silence -ENOENT error on Dell XPS13 9365 2017-08-20 09:30:23 -07:00
mouse Input: synaptics - fix device info appearing different on reconnect 2017-08-28 10:36:46 -07:00
rmi4 Merge branch 'next' into for-linus 2017-07-06 13:51:43 -07:00
serio Merge branch 'next' into for-linus 2017-07-12 14:17:17 -07:00
tablet Input: kbtab - validate number of endpoints before using them 2017-03-16 13:56:53 -07:00
touchscreen Merge branch 'next' into for-linus 2017-07-06 13:51:43 -07:00
apm-power.c
evbug.c
evdev.c input: utilize new cdev_device_add helper function 2017-03-21 06:44:32 +01:00
ff-core.c
ff-memless.c
input-compat.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
input-compat.h
input-leds.c
input-mt.c
input-polldev.c
input.c Input: switch to using sizeof(*type) when allocating memory 2017-05-10 14:39:34 -07:00
joydev.c input: utilize new cdev_device_add helper function 2017-03-21 06:44:32 +01:00
Kconfig Input: mousedev - stop offering PS/2 to userspace by default 2017-01-31 11:31:49 -08:00
Makefile
matrix-keymap.c Input: matrix-keypad - switch to using generic device properties 2017-01-31 11:31:48 -08:00
mousedev.c input: utilize new cdev_device_add helper function 2017-03-21 06:44:32 +01:00
sparse-keymap.c Input: sparse-keymap - remove sparse_keymap_free() 2017-05-29 20:02:01 -07:00