| From 747f1e85d579b86ea4aabe937f7368ab21ae1d6e Mon Sep 17 00:00:00 2001 |
| From: Daniel Tobias <dan.g.tob@gmail.com> |
| Date: Fri, 27 May 2016 16:25:32 -0700 |
| Subject: Input: xpad - move reporting xbox one home button to common function |
| |
| [ Upstream commit 4f88476c75429ba9ab71c428b4cd2f67575bc9c1 ] |
| |
| xbox one was the only device that has a *_process_buttons routine. |
| |
| Signed-off-by: Pavel Rojtberg <rojtberg@gmail.com> |
| Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/input/joystick/xpad.c | 52 +++++++++++++---------------------- |
| 1 file changed, 19 insertions(+), 33 deletions(-) |
| |
| diff --git a/drivers/input/joystick/xpad.c b/drivers/input/joystick/xpad.c |
| index 8b7fc47f7ffb..b06f4b0785f7 100644 |
| --- a/drivers/input/joystick/xpad.c |
| +++ b/drivers/input/joystick/xpad.c |
| @@ -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, |
| - struct input_dev *dev, |
| - unsigned char *data) |
| +static void xpadone_process_packet(struct usb_xpad *xpad, u16 cmd, 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 */ |
| input_report_key(dev, BTN_START, data[4] & 0x04); |
| input_report_key(dev, BTN_SELECT, data[4] & 0x08); |
| @@ -680,34 +694,6 @@ static void xpadone_process_buttons(struct usb_xpad *xpad, |
| 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) |
| { |
| struct usb_xpad *xpad = urb->context; |
| -- |
| 2.17.1 |
| |