| From 8cd5d990993860e7563eb0a2ea92fb730bd5e9d6 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Wed, 22 Apr 2020 14:13:09 -0700 |
| Subject: Input: xpad - add custom init packet for Xbox One S controllers |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| From: Łukasz Patron <priv.luk@gmail.com> |
| |
| [ Upstream commit 764f7f911bf72450c51eb74cbb262ad9933741d8 ] |
| |
| Sending [ 0x05, 0x20, 0x00, 0x0f, 0x06 ] packet for Xbox One S controllers |
| fixes an issue where controller is stuck in Bluetooth mode and not sending |
| any inputs. |
| |
| Signed-off-by: Łukasz Patron <priv.luk@gmail.com> |
| Reviewed-by: Cameron Gutman <aicommander@gmail.com> |
| Cc: stable@vger.kernel.org |
| Link: https://lore.kernel.org/r/20200422075206.18229-1-priv.luk@gmail.com |
| Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/input/joystick/xpad.c | 12 ++++++++++++ |
| 1 file changed, 12 insertions(+) |
| |
| diff --git a/drivers/input/joystick/xpad.c b/drivers/input/joystick/xpad.c |
| index 26476a64e663..54a6691d7d87 100644 |
| --- a/drivers/input/joystick/xpad.c |
| +++ b/drivers/input/joystick/xpad.c |
| @@ -475,6 +475,16 @@ static const u8 xboxone_fw2015_init[] = { |
| 0x05, 0x20, 0x00, 0x01, 0x00 |
| }; |
| |
| +/* |
| + * This packet is required for Xbox One S (0x045e:0x02ea) |
| + * and Xbox One Elite Series 2 (0x045e:0x0b00) pads to |
| + * initialize the controller that was previously used in |
| + * Bluetooth mode. |
| + */ |
| +static const u8 xboxone_s_init[] = { |
| + 0x05, 0x20, 0x00, 0x0f, 0x06 |
| +}; |
| + |
| /* |
| * This packet is required for the Titanfall 2 Xbox One pads |
| * (0x0e6f:0x0165) to finish initialization and for Hori pads |
| @@ -533,6 +543,8 @@ static const struct xboxone_init_packet xboxone_init_packets[] = { |
| XBOXONE_INIT_PKT(0x0e6f, 0x0165, xboxone_hori_init), |
| XBOXONE_INIT_PKT(0x0f0d, 0x0067, xboxone_hori_init), |
| XBOXONE_INIT_PKT(0x0000, 0x0000, xboxone_fw2015_init), |
| + XBOXONE_INIT_PKT(0x045e, 0x02ea, xboxone_s_init), |
| + XBOXONE_INIT_PKT(0x045e, 0x0b00, xboxone_s_init), |
| XBOXONE_INIT_PKT(0x0e6f, 0x0000, xboxone_pdp_init1), |
| XBOXONE_INIT_PKT(0x0e6f, 0x0000, xboxone_pdp_init2), |
| XBOXONE_INIT_PKT(0x24c6, 0x541a, xboxone_rumblebegin_init), |
| -- |
| 2.25.1 |
| |