Commit 6017b13a authored by Daniel Tobias's avatar Daniel Tobias Committed by Kleber Sacilotto de Souza

Input: xpad - move reporting xbox one home button to common function

BugLink: https://bugs.launchpad.net/bugs/1810967

[ Upstream commit 4f88476c ]

xbox one was the only device that has a *_process_buttons routine.
Signed-off-by: default avatarPavel Rojtberg <rojtberg@gmail.com>
Signed-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
Signed-off-by: default avatarJuerg Haefliger <juergh@canonical.com>
Signed-off-by: default avatarKleber Sacilotto de Souza <kleber.souza@canonical.com>
parent e75d0475
...@@ -610,14 +610,28 @@ static void xpad360w_process_packet(struct usb_xpad *xpad, u16 cmd, unsigned cha ...@@ -610,14 +610,28 @@ static void xpad360w_process_packet(struct usb_xpad *xpad, u16 cmd, unsigned cha
} }
/* /*
* xpadone_process_buttons * xpadone_process_packet
* *
* Process a button update packet from an Xbox one controller. * Completes a request by converting the data into events for the
* input subsystem. This version is for the Xbox One controller.
*
* The report format was gleaned from
* https://github.com/kylelemons/xbox/blob/master/xbox.go
*/ */
static void xpadone_process_buttons(struct usb_xpad *xpad, static void xpadone_process_packet(struct usb_xpad *xpad, u16 cmd, unsigned char *data)
struct input_dev *dev,
unsigned char *data)
{ {
struct input_dev *dev = xpad->dev;
/* the xbox button has its own special report */
if (data[0] == 0X07) {
input_report_key(dev, BTN_MODE, data[4] & 0x01);
input_sync(dev);
return;
}
/* check invalid packet */
else if (data[0] != 0X20)
return;
/* menu/view buttons */ /* menu/view buttons */
input_report_key(dev, BTN_START, data[4] & 0x04); input_report_key(dev, BTN_START, data[4] & 0x04);
input_report_key(dev, BTN_SELECT, data[4] & 0x08); input_report_key(dev, BTN_SELECT, data[4] & 0x08);
...@@ -680,34 +694,6 @@ static void xpadone_process_buttons(struct usb_xpad *xpad, ...@@ -680,34 +694,6 @@ static void xpadone_process_buttons(struct usb_xpad *xpad,
input_sync(dev); input_sync(dev);
} }
/*
* xpadone_process_packet
*
* Completes a request by converting the data into events for the
* input subsystem. This version is for the Xbox One controller.
*
* The report format was gleaned from
* https://github.com/kylelemons/xbox/blob/master/xbox.go
*/
static void xpadone_process_packet(struct usb_xpad *xpad,
u16 cmd, unsigned char *data)
{
struct input_dev *dev = xpad->dev;
switch (data[0]) {
case 0x20:
xpadone_process_buttons(xpad, dev, data);
break;
case 0x07:
/* the xbox button has its own special report */
input_report_key(dev, BTN_MODE, data[4] & 0x01);
input_sync(dev);
break;
}
}
static void xpad_irq_in(struct urb *urb) static void xpad_irq_in(struct urb *urb)
{ {
struct usb_xpad *xpad = urb->context; struct usb_xpad *xpad = urb->context;
......
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