Commit 540c2608 authored by Cameron Gutman's avatar Cameron Gutman Committed by Dmitry Torokhov

Input: xpad - fix rumble on Xbox One controllers with 2015 firmware

Xbox One controllers that shipped with or were upgraded to the 2015
firmware discard the current rumble packets we send. This patch changes
the Xbox One rumble packet to a form that both the newer and older
firmware will accept.

It is based on changes made to support newer Xbox One controllers in
the SteamOS brewmaster-4.1 kernel branch.
Signed-off-by: default avatarCameron Gutman <aicommander@gmail.com>
Signed-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
parent f49cf3b8
...@@ -1031,17 +1031,17 @@ static int xpad_play_effect(struct input_dev *dev, void *data, struct ff_effect ...@@ -1031,17 +1031,17 @@ static int xpad_play_effect(struct input_dev *dev, void *data, struct ff_effect
case XTYPE_XBOXONE: case XTYPE_XBOXONE:
packet->data[0] = 0x09; /* activate rumble */ packet->data[0] = 0x09; /* activate rumble */
packet->data[1] = 0x08; packet->data[1] = 0x00;
packet->data[2] = xpad->odata_serial++; packet->data[2] = xpad->odata_serial++;
packet->data[3] = 0x08; /* continuous effect */ packet->data[3] = 0x09;
packet->data[4] = 0x00; /* simple rumble mode */ packet->data[4] = 0x00;
packet->data[5] = 0x03; /* L and R actuator only */ packet->data[5] = 0x0F;
packet->data[6] = 0x00; /* TODO: LT actuator */ packet->data[6] = 0x00;
packet->data[7] = 0x00; /* TODO: RT actuator */ packet->data[7] = 0x00;
packet->data[8] = strong / 512; /* left actuator */ packet->data[8] = strong / 512; /* left actuator */
packet->data[9] = weak / 512; /* right actuator */ packet->data[9] = weak / 512; /* right actuator */
packet->data[10] = 0x80; /* length of pulse */ packet->data[10] = 0xFF;
packet->data[11] = 0x00; /* stop period of pulse */ packet->data[11] = 0x00;
packet->data[12] = 0x00; packet->data[12] = 0x00;
packet->len = 13; packet->len = 13;
packet->pending = true; packet->pending = true;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment