All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/4] Input: xpad - sync with github fork
@ 2022-08-18 13:00 Pavel Rojtberg
  2022-08-18 13:00 ` [PATCH 1/4] Input: xpad - add supported devices as contributed on github Pavel Rojtberg
                   ` (3 more replies)
  0 siblings, 4 replies; 15+ messages in thread
From: Pavel Rojtberg @ 2022-08-18 13:00 UTC (permalink / raw)
  To: linux-input, dmitry.torokhov, gregkh; +Cc: Pavel Rojtberg

From: Pavel Rojtberg <rojtberg@gmail.com>

I maintain the fork of the xpad driver at https://github.com/paroj/xpad.
This upstreams some changes that have proven to be stable.

The first patch merely updates the list of supported devices.

The next two patches improve xbox360w gamepad support.
I have tested those myself, as I own that device.

The last patch carries most of the diff and adds support for
"paddle" buttons found on some Xbox One controllers.

Cameron Gutman (1):
  Input: xpad - fix wireless 360 controller breaking after suspend

Christopher Crockett (1):
  Input: xpad - add support for XBOX One Elite paddles

Pavel Rojtberg (1):
  Input: xpad - add supported devices as contributed on github

Santosh De Massari (1):
  Input: xpad - Poweroff XBOX360W on mode button long press

 drivers/input/joystick/xpad.c | 298 +++++++++++++++++++++++++++++++++++++++++++++------------
 1 file changed, 236 insertions(+), 62 deletions(-)

-- 
2.34.1


^ permalink raw reply	[flat|nested] 15+ messages in thread

* [PATCH 1/4] Input: xpad - add supported devices as contributed on github
  2022-08-18 13:00 [PATCH 0/4] Input: xpad - sync with github fork Pavel Rojtberg
@ 2022-08-18 13:00 ` Pavel Rojtberg
  2022-08-18 13:10   ` Greg KH
  2022-08-18 13:00 ` [PATCH 2/4] Input: xpad - fix wireless 360 controller breaking after suspend Pavel Rojtberg
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 15+ messages in thread
From: Pavel Rojtberg @ 2022-08-18 13:00 UTC (permalink / raw)
  To: linux-input, dmitry.torokhov, gregkh
  Cc: Pavel Rojtberg, Jasper Poppe, Jeremy Palmer, Ruineka,
	Cleber de Mattos Casali, Kyle Gospodnetich

From: Pavel Rojtberg <rojtberg@gmail.com>

This is based on multiple commits at https://github.com/paroj/xpad

Signed-off-by: Jasper Poppe <jgpoppe@gmail.com>
Signed-off-by: Jeremy Palmer <jpalmer@linz.govt.nz>
Signed-off-by: Ruineka <ruinairas1992@gmail.com>
Signed-off-by: Cleber de Mattos Casali <clebercasali@gmail.com>
Signed-off-by: Kyle Gospodnetich <me@kylegospodneti.ch>
Signed-off-by: Pavel Rojtberg <rojtberg@gmail.com>
---
 drivers/input/joystick/xpad.c | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/drivers/input/joystick/xpad.c b/drivers/input/joystick/xpad.c
index 53126d9..629646b 100644
--- a/drivers/input/joystick/xpad.c
+++ b/drivers/input/joystick/xpad.c
@@ -113,6 +113,8 @@ static const struct xpad_device {
 	u8 xtype;
 } xpad_device[] = {
 	{ 0x0079, 0x18d4, "GPD Win 2 X-Box Controller", 0, XTYPE_XBOX360 },
+	{ 0x03eb, 0xff01, "Wooting One (Legacy)", 0, XTYPE_XBOX360 },
+	{ 0x03eb, 0xff02, "Wooting Two (Legacy)", 0, XTYPE_XBOX360 },
 	{ 0x044f, 0x0f00, "Thrustmaster Wheel", 0, XTYPE_XBOX },
 	{ 0x044f, 0x0f03, "Thrustmaster Wheel", 0, XTYPE_XBOX },
 	{ 0x044f, 0x0f07, "Thrustmaster, Inc. Controller", 0, XTYPE_XBOX },
@@ -244,6 +246,7 @@ static const struct xpad_device {
 	{ 0x0f0d, 0x0063, "Hori Real Arcade Pro Hayabusa (USA) Xbox One", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOXONE },
 	{ 0x0f0d, 0x0067, "HORIPAD ONE", 0, XTYPE_XBOXONE },
 	{ 0x0f0d, 0x0078, "Hori Real Arcade Pro V Kai Xbox One", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOXONE },
+	{ 0x0f0d, 0x00c5, "Hori Fighting Commander ONE", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOXONE },
 	{ 0x0f30, 0x010b, "Philips Recoil", 0, XTYPE_XBOX },
 	{ 0x0f30, 0x0202, "Joytech Advanced Controller", 0, XTYPE_XBOX },
 	{ 0x0f30, 0x8888, "BigBen XBMiniPad Controller", 0, XTYPE_XBOX },
@@ -260,6 +263,7 @@ static const struct xpad_device {
 	{ 0x1430, 0x8888, "TX6500+ Dance Pad (first generation)", MAP_DPAD_TO_BUTTONS, XTYPE_XBOX },
 	{ 0x1430, 0xf801, "RedOctane Controller", 0, XTYPE_XBOX360 },
 	{ 0x146b, 0x0601, "BigBen Interactive XBOX 360 Controller", 0, XTYPE_XBOX360 },
+	{ 0x146b, 0x0604, "Bigben Interactive DAIJA Arcade Stick", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOX360 },
 	{ 0x1532, 0x0037, "Razer Sabertooth", 0, XTYPE_XBOX360 },
 	{ 0x1532, 0x0a00, "Razer Atrox Arcade Stick", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOXONE },
 	{ 0x1532, 0x0a03, "Razer Wildcat", 0, XTYPE_XBOXONE },
@@ -325,6 +329,7 @@ static const struct xpad_device {
 	{ 0x24c6, 0x5502, "Hori Fighting Stick VX Alt", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOX360 },
 	{ 0x24c6, 0x5503, "Hori Fighting Edge", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOX360 },
 	{ 0x24c6, 0x5506, "Hori SOULCALIBUR V Stick", 0, XTYPE_XBOX360 },
+	{ 0x24c6, 0x5510, "Hori Fighting Commander ONE (Xbox 360/PC Mode)", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOX360 },
 	{ 0x24c6, 0x550d, "Hori GEM Xbox controller", 0, XTYPE_XBOX360 },
 	{ 0x24c6, 0x550e, "Hori Real Arcade Pro V Kai 360", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOX360 },
 	{ 0x24c6, 0x551a, "PowerA FUSION Pro Controller", 0, XTYPE_XBOXONE },
@@ -334,6 +339,14 @@ static const struct xpad_device {
 	{ 0x24c6, 0x5b03, "Thrustmaster Ferrari 458 Racing Wheel", 0, XTYPE_XBOX360 },
 	{ 0x24c6, 0x5d04, "Razer Sabertooth", 0, XTYPE_XBOX360 },
 	{ 0x24c6, 0xfafe, "Rock Candy Gamepad for Xbox 360", 0, XTYPE_XBOX360 },
+	{ 0x2563, 0x058d, "OneXPlayer Gamepad", 0, XTYPE_XBOX360 },
+	{ 0x2dc8, 0x2000, "8BitDo Pro 2 Wired Controller fox Xbox", 0, XTYPE_XBOXONE },
+	{ 0x31e3, 0x1100, "Wooting One", 0, XTYPE_XBOX360 },
+	{ 0x31e3, 0x1200, "Wooting Two", 0, XTYPE_XBOX360 },
+	{ 0x31e3, 0x1210, "Wooting Lekker", 0, XTYPE_XBOX360 },
+	{ 0x31e3, 0x1220, "Wooting Two HE", 0, XTYPE_XBOX360 },
+	{ 0x31e3, 0x1300, "Wooting 60HE (AVR)", 0, XTYPE_XBOX360 },
+	{ 0x31e3, 0x1310, "Wooting 60HE (ARM)", 0, XTYPE_XBOX360 },
 	{ 0x3285, 0x0607, "Nacon GC-100", 0, XTYPE_XBOX360 },
 	{ 0x3767, 0x0101, "Fanatec Speedster 3 Forceshock Wheel", 0, XTYPE_XBOX },
 	{ 0xffff, 0xffff, "Chinese-made Xbox Controller", 0, XTYPE_XBOX },
@@ -419,6 +432,7 @@ static const signed short xpad_abs_triggers[] = {
 static const struct usb_device_id xpad_table[] = {
 	{ USB_INTERFACE_INFO('X', 'B', 0) },	/* X-Box USB-IF not approved class */
 	XPAD_XBOX360_VENDOR(0x0079),		/* GPD Win 2 Controller */
+	XPAD_XBOX360_VENDOR(0x03eb),		/* Wooting Keyboards (Legacy) */
 	XPAD_XBOX360_VENDOR(0x044f),		/* Thrustmaster X-Box 360 controllers */
 	XPAD_XBOX360_VENDOR(0x045e),		/* Microsoft X-Box 360 controllers */
 	XPAD_XBOXONE_VENDOR(0x045e),		/* Microsoft X-Box One controllers */
@@ -429,6 +443,7 @@ static const struct usb_device_id xpad_table[] = {
 	{ USB_DEVICE(0x0738, 0x4540) },		/* Mad Catz Beat Pad */
 	XPAD_XBOXONE_VENDOR(0x0738),		/* Mad Catz FightStick TE 2 */
 	XPAD_XBOX360_VENDOR(0x07ff),		/* Mad Catz GamePad */
+	XPAD_XBOX360_VENDOR(0x0c12),		/* Zeroplus X-Box 360 controllers */
 	XPAD_XBOX360_VENDOR(0x0e6f),		/* 0x0e6f X-Box 360 controllers */
 	XPAD_XBOXONE_VENDOR(0x0e6f),		/* 0x0e6f X-Box One controllers */
 	XPAD_XBOX360_VENDOR(0x0f0d),		/* Hori Controllers */
@@ -450,8 +465,12 @@ static const struct usb_device_id xpad_table[] = {
 	XPAD_XBOXONE_VENDOR(0x20d6),		/* PowerA Controllers */
 	XPAD_XBOX360_VENDOR(0x24c6),		/* PowerA Controllers */
 	XPAD_XBOXONE_VENDOR(0x24c6),		/* PowerA Controllers */
+	XPAD_XBOX360_VENDOR(0x2563),		/* OneXPlayer Gamepad */
+	XPAD_XBOX360_VENDOR(0x260d),		/* Dareu H101 */
+	XPAD_XBOXONE_VENDOR(0x2dc8),		/* 8BitDo Pro 2 Wired Controller for Xbox */
 	XPAD_XBOXONE_VENDOR(0x2e24),		/* Hyperkin Duke X-Box One pad */
 	XPAD_XBOX360_VENDOR(0x2f24),		/* GameSir Controllers */
+	XPAD_XBOX360_VENDOR(0x31e3),		/* Wooting Keyboards */
 	XPAD_XBOX360_VENDOR(0x3285),		/* Nacon GC-100 */
 	{ }
 };
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH 2/4] Input: xpad - fix wireless 360 controller breaking after suspend
  2022-08-18 13:00 [PATCH 0/4] Input: xpad - sync with github fork Pavel Rojtberg
  2022-08-18 13:00 ` [PATCH 1/4] Input: xpad - add supported devices as contributed on github Pavel Rojtberg
@ 2022-08-18 13:00 ` Pavel Rojtberg
  2022-08-18 13:10   ` Greg KH
  2022-08-18 13:00 ` [PATCH 3/4] Input: xpad - Poweroff XBOX360W on mode button long press Pavel Rojtberg
  2022-08-18 13:00 ` [PATCH 4/4] Input: xpad - add support for XBOX One Elite paddles Pavel Rojtberg
  3 siblings, 1 reply; 15+ messages in thread
From: Pavel Rojtberg @ 2022-08-18 13:00 UTC (permalink / raw)
  To: linux-input, dmitry.torokhov, gregkh; +Cc: Cameron Gutman, Pavel Rojtberg

From: Cameron Gutman <aicommander@gmail.com>

Suspending and resuming the system can sometimes cause the out
URB to get hung after a reset_resume. This causes LED setting
and force feedback to break on resume. To avoid this, just drop
the reset_resume callback so the USB core rebinds xpad to the
wireless pads on resume if a reset happened.

A nice side effect of this change is the LED ring on wireless
controllers is now set correctly on system resume.

Signed-off-by: Cameron Gutman <aicommander@gmail.com>
Signed-off-by: Pavel Rojtberg <rojtberg@gmail.com>
---
 drivers/input/joystick/xpad.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/drivers/input/joystick/xpad.c b/drivers/input/joystick/xpad.c
index 629646b..4e01056 100644
--- a/drivers/input/joystick/xpad.c
+++ b/drivers/input/joystick/xpad.c
@@ -1991,7 +1991,6 @@ static struct usb_driver xpad_driver = {
 	.disconnect	= xpad_disconnect,
 	.suspend	= xpad_suspend,
 	.resume		= xpad_resume,
-	.reset_resume	= xpad_resume,
 	.id_table	= xpad_table,
 };
 
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH 3/4] Input: xpad - Poweroff XBOX360W on mode button long press
  2022-08-18 13:00 [PATCH 0/4] Input: xpad - sync with github fork Pavel Rojtberg
  2022-08-18 13:00 ` [PATCH 1/4] Input: xpad - add supported devices as contributed on github Pavel Rojtberg
  2022-08-18 13:00 ` [PATCH 2/4] Input: xpad - fix wireless 360 controller breaking after suspend Pavel Rojtberg
@ 2022-08-18 13:00 ` Pavel Rojtberg
  2022-08-18 13:11   ` Greg KH
  2022-08-18 13:00 ` [PATCH 4/4] Input: xpad - add support for XBOX One Elite paddles Pavel Rojtberg
  3 siblings, 1 reply; 15+ messages in thread
From: Pavel Rojtberg @ 2022-08-18 13:00 UTC (permalink / raw)
  To: linux-input, dmitry.torokhov, gregkh; +Cc: Santosh De Massari, Pavel Rojtberg

From: Santosh De Massari <s.demassari@gmail.com>

Newer gamepads turn themselves off when the mode button is held down.
For XBOX360W gamepads we must do this in the driver.

Do not use BIT() macro for consistency within the file.

Signed-off-by: Santosh De Massari <s.demassari@gmail.com>
Signed-off-by: Pavel Rojtberg <rojtberg@gmail.com>
---
 drivers/input/joystick/xpad.c | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/drivers/input/joystick/xpad.c b/drivers/input/joystick/xpad.c
index 4e01056..f964219 100644
--- a/drivers/input/joystick/xpad.c
+++ b/drivers/input/joystick/xpad.c
@@ -89,6 +89,11 @@
 #define XTYPE_XBOXONE     3
 #define XTYPE_UNKNOWN     4
 
+/* Send power-off packet to xpad360w after holding the mode button for this many
+ * seconds
+ */
+#define XPAD360W_POWEROFF_TIMEOUT 5
+
 static bool dpad_to_buttons;
 module_param(dpad_to_buttons, bool, S_IRUGO);
 MODULE_PARM_DESC(dpad_to_buttons, "Map D-PAD to buttons rather than axes for unknown pads");
@@ -630,11 +635,13 @@ struct usb_xpad {
 	int pad_nr;			/* the order x360 pads were attached */
 	const char *name;		/* name of the device */
 	struct work_struct work;	/* init/remove device from callback */
+	time64_t mode_btn_down_ts;
 };
 
 static int xpad_init_input(struct usb_xpad *xpad);
 static void xpad_deinit_input(struct usb_xpad *xpad);
 static void xpadone_ack_mode_report(struct usb_xpad *xpad, u8 seq_num);
+static void xpad360w_poweroff_controller(struct usb_xpad *xpad);
 
 /*
  *	xpad_process_packet
@@ -786,6 +793,23 @@ static void xpad360_process_packet(struct usb_xpad *xpad, struct input_dev *dev,
 	}
 
 	input_sync(dev);
+
+	/* XBOX360W controllers can't be turned off without driver assistance */
+	if (xpad->xtype == XTYPE_XBOX360W) {
+		if (xpad->mode_btn_down_ts > 0 && xpad->pad_present &&
+		    ((ktime_get_seconds() - xpad->mode_btn_down_ts) >=
+		     XPAD360W_POWEROFF_TIMEOUT)) {
+			xpad360w_poweroff_controller(xpad);
+			xpad->mode_btn_down_ts = 0;
+			return;
+		}
+
+		/* mode button down/up */
+		if (data[3] & 0x04)
+			xpad->mode_btn_down_ts = ktime_get_seconds();
+		else
+			xpad->mode_btn_down_ts = 0;
+	}
 }
 
 static void xpad_presence_work(struct work_struct *work)
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH 4/4] Input: xpad - add support for XBOX One Elite paddles
  2022-08-18 13:00 [PATCH 0/4] Input: xpad - sync with github fork Pavel Rojtberg
                   ` (2 preceding siblings ...)
  2022-08-18 13:00 ` [PATCH 3/4] Input: xpad - Poweroff XBOX360W on mode button long press Pavel Rojtberg
@ 2022-08-18 13:00 ` Pavel Rojtberg
  2022-08-18 13:12   ` Greg KH
  3 siblings, 1 reply; 15+ messages in thread
From: Pavel Rojtberg @ 2022-08-18 13:00 UTC (permalink / raw)
  To: linux-input, dmitry.torokhov, gregkh; +Cc: Christopher Crockett, Pavel Rojtberg

From: Christopher Crockett <chaorace@gmail.com>

An effort has been made to support every official model and firmware
version I could track down info on. The following controllers _should_
have working paddles with this PR:
- Xbox Elite (**untested**)
- Xbox Elite Series 2 on early firmwares (**untested**)
- Xbox Elite Series 2 on v4 firmwares (Tested v4.8.1908.0)
- Xbox Elite Series 2 on v5 pre-BLE firmwares (**untested**)
- Xbox Elite Series 2 on v5 post-BLE firmwares (Tested v5.13.3143.0)

This patch also introduces correct handling for the Elite 1 controller
and properly suppresses paddle inputs when using a custom profile slot.

Starting with firmware v5.11, certain inputs for the Elite 2 were moved
to an extra packet that is not enabled by default.

We must first manually enable this extra packet in order to correctly
process paddle input data with these later firmwares.

Signed-off-by: Christopher Crockett <chaorace@gmail.com>
Signed-off-by: Pavel Rojtberg <rojtberg@gmail.com>
---
 drivers/input/joystick/xpad.c | 254 +++++++++++++++++++++++++++++++++++++++++++--------------
 1 file changed, 193 insertions(+), 61 deletions(-)

diff --git a/drivers/input/joystick/xpad.c b/drivers/input/joystick/xpad.c
index f964219..4d0e581 100644
--- a/drivers/input/joystick/xpad.c
+++ b/drivers/input/joystick/xpad.c
@@ -80,6 +80,7 @@
 #define MAP_TRIGGERS_TO_BUTTONS		(1 << 1)
 #define MAP_STICKS_TO_NULL		(1 << 2)
 #define MAP_SELECT_BUTTON		(1 << 3)
+#define MAP_PADDLES				(1 << 4)
 #define DANCEPAD_MAP_CONFIG	(MAP_DPAD_TO_BUTTONS |			\
 				MAP_TRIGGERS_TO_BUTTONS | MAP_STICKS_TO_NULL)
 
@@ -94,6 +95,12 @@
  */
 #define XPAD360W_POWEROFF_TIMEOUT 5
 
+#define PKT_XB              0
+#define PKT_XBE1            1
+#define PKT_XBE2_FW_OLD     2
+#define PKT_XBE2_FW_5_EARLY 3
+#define PKT_XBE2_FW_5_11    4
+
 static bool dpad_to_buttons;
 module_param(dpad_to_buttons, bool, S_IRUGO);
 MODULE_PARM_DESC(dpad_to_buttons, "Map D-PAD to buttons rather than axes for unknown pads");
@@ -116,6 +123,7 @@ static const struct xpad_device {
 	char *name;
 	u8 mapping;
 	u8 xtype;
+	u8 packet_type;
 } xpad_device[] = {
 	{ 0x0079, 0x18d4, "GPD Win 2 X-Box Controller", 0, XTYPE_XBOX360 },
 	{ 0x03eb, 0xff01, "Wooting One (Legacy)", 0, XTYPE_XBOX360 },
@@ -135,7 +143,8 @@ static const struct xpad_device {
 	{ 0x045e, 0x0291, "Xbox 360 Wireless Receiver (XBOX)", MAP_DPAD_TO_BUTTONS, XTYPE_XBOX360W },
 	{ 0x045e, 0x02d1, "Microsoft X-Box One pad", 0, XTYPE_XBOXONE },
 	{ 0x045e, 0x02dd, "Microsoft X-Box One pad (Firmware 2015)", 0, XTYPE_XBOXONE },
-	{ 0x045e, 0x02e3, "Microsoft X-Box One Elite pad", 0, XTYPE_XBOXONE },
+	{ 0x045e, 0x02e3, "Microsoft X-Box One Elite pad", MAP_PADDLES, XTYPE_XBOXONE },
+	{ 0x045e, 0x0b00, "Microsoft X-Box One Elite 2 pad", MAP_PADDLES, XTYPE_XBOXONE },
 	{ 0x045e, 0x02ea, "Microsoft X-Box One S pad", 0, XTYPE_XBOXONE },
 	{ 0x045e, 0x0719, "Xbox 360 Wireless Receiver", MAP_DPAD_TO_BUTTONS, XTYPE_XBOX360W },
 	{ 0x045e, 0x0b12, "Microsoft Xbox Series S|X Controller", MAP_SELECT_BUTTON, XTYPE_XBOXONE },
@@ -408,6 +417,13 @@ static const signed short xpad_abs_triggers[] = {
 	-1
 };
 
+/* used when the controller has extra paddle buttons */
+static const signed short xpad_btn_paddles[] = {
+	BTN_TRIGGER_HAPPY5, BTN_TRIGGER_HAPPY6, /* paddle upper right, lower right */
+	BTN_TRIGGER_HAPPY7, BTN_TRIGGER_HAPPY8, /* paddle upper left, lower left */
+	-1						/* terminating entry */
+};
+
 /*
  * Xbox 360 has a vendor-specific class, so we cannot match it with only
  * USB_INTERFACE_INFO (also specifically refused by USB subsystem), so we
@@ -516,6 +532,15 @@ static const u8 xboxone_s_init[] = {
 	0x05, 0x20, 0x00, 0x0f, 0x06
 };
 
+/*
+ * This packet is required to get additional input data
+ * from Xbox One Elite Series 2 (0x045e:0x0b00) pads.
+ * We mostly do this right now to get paddle data
+ */
+static const u8 extra_input_packet_init[] = {
+	0x4d, 0x10, 0x01, 0x02, 0x07, 0x00
+};
+
 /*
  * This packet is required for the Titanfall 2 Xbox One pads
  * (0x0e6f:0x0165) to finish initialization and for Hori pads
@@ -576,6 +601,7 @@ static const struct xboxone_init_packet xboxone_init_packets[] = {
 	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(0x045e, 0x0b00, extra_input_packet_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),
@@ -632,6 +658,7 @@ struct usb_xpad {
 
 	int mapping;			/* map d-pad to buttons or to axes */
 	int xtype;			/* type of xbox device */
+	int packet_type;		/* type of the extended packet */
 	int pad_nr;			/* the order x360 pads were attached */
 	const char *name;		/* name of the device */
 	struct work_struct work;	/* init/remove device from callback */
@@ -889,6 +916,7 @@ static void xpad360w_process_packet(struct usb_xpad *xpad, u16 cmd, unsigned cha
 static void xpadone_process_packet(struct usb_xpad *xpad, u16 cmd, unsigned char *data)
 {
 	struct input_dev *dev = xpad->dev;
+	bool do_sync = false;
 
 	/* the xbox button has its own special report */
 	if (data[0] == 0X07) {
@@ -901,75 +929,140 @@ static void xpadone_process_packet(struct usb_xpad *xpad, u16 cmd, unsigned char
 			xpadone_ack_mode_report(xpad, data[2]);
 
 		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);
-	if (xpad->mapping & MAP_SELECT_BUTTON)
-		input_report_key(dev, KEY_RECORD, data[22] & 0x01);
 
-	/* buttons A,B,X,Y */
-	input_report_key(dev, BTN_A,	data[4] & 0x10);
-	input_report_key(dev, BTN_B,	data[4] & 0x20);
-	input_report_key(dev, BTN_X,	data[4] & 0x40);
-	input_report_key(dev, BTN_Y,	data[4] & 0x80);
+		do_sync = true;
+	} else if (data[0] == 0X0C) {
+		/* Some packet formats force us to use this separate to poll paddle inputs */
+		if (xpad->packet_type == PKT_XBE2_FW_5_11) {
+			/* Mute paddles if controller is in a custom profile slot
+			 * Checked by looking at the active profile slot to
+			 * verify it's the default slot
+			 */
+			if (data[19] != 0)
+				data[18] = 0;
 
-	/* digital pad */
-	if (xpad->mapping & MAP_DPAD_TO_BUTTONS) {
-		/* dpad as buttons (left, right, up, down) */
-		input_report_key(dev, BTN_TRIGGER_HAPPY1, data[5] & 0x04);
-		input_report_key(dev, BTN_TRIGGER_HAPPY2, data[5] & 0x08);
-		input_report_key(dev, BTN_TRIGGER_HAPPY3, data[5] & 0x01);
-		input_report_key(dev, BTN_TRIGGER_HAPPY4, data[5] & 0x02);
-	} else {
-		input_report_abs(dev, ABS_HAT0X,
-				 !!(data[5] & 0x08) - !!(data[5] & 0x04));
-		input_report_abs(dev, ABS_HAT0Y,
-				 !!(data[5] & 0x02) - !!(data[5] & 0x01));
-	}
+			/* Elite Series 2 split packet paddle bits */
+			input_report_key(dev, BTN_TRIGGER_HAPPY5, data[18] & 0x01);
+			input_report_key(dev, BTN_TRIGGER_HAPPY6, data[18] & 0x02);
+			input_report_key(dev, BTN_TRIGGER_HAPPY7, data[18] & 0x04);
+			input_report_key(dev, BTN_TRIGGER_HAPPY8, data[18] & 0x08);
 
-	/* TL/TR */
-	input_report_key(dev, BTN_TL,	data[5] & 0x10);
-	input_report_key(dev, BTN_TR,	data[5] & 0x20);
+			do_sync = true;
+		}
+	} else if (data[0] == 0X20) { /* The main valid packet type for inputs */
+		/* menu/view buttons */
+		input_report_key(dev, BTN_START,  data[4] & 0x04);
+		input_report_key(dev, BTN_SELECT, data[4] & 0x08);
+		if (xpad->mapping & MAP_SELECT_BUTTON)
+			input_report_key(dev, KEY_RECORD, data[22] & 0x01);
+
+		/* buttons A,B,X,Y */
+		input_report_key(dev, BTN_A,	data[4] & 0x10);
+		input_report_key(dev, BTN_B,	data[4] & 0x20);
+		input_report_key(dev, BTN_X,	data[4] & 0x40);
+		input_report_key(dev, BTN_Y,	data[4] & 0x80);
+
+		/* digital pad */
+		if (xpad->mapping & MAP_DPAD_TO_BUTTONS) {
+			/* dpad as buttons (left, right, up, down) */
+			input_report_key(dev, BTN_TRIGGER_HAPPY1, data[5] & 0x04);
+			input_report_key(dev, BTN_TRIGGER_HAPPY2, data[5] & 0x08);
+			input_report_key(dev, BTN_TRIGGER_HAPPY3, data[5] & 0x01);
+			input_report_key(dev, BTN_TRIGGER_HAPPY4, data[5] & 0x02);
+		} else {
+			input_report_abs(dev, ABS_HAT0X,
+					!!(data[5] & 0x08) - !!(data[5] & 0x04));
+			input_report_abs(dev, ABS_HAT0Y,
+					!!(data[5] & 0x02) - !!(data[5] & 0x01));
+		}
 
-	/* stick press left/right */
-	input_report_key(dev, BTN_THUMBL, data[5] & 0x40);
-	input_report_key(dev, BTN_THUMBR, data[5] & 0x80);
+		/* TL/TR */
+		input_report_key(dev, BTN_TL,	data[5] & 0x10);
+		input_report_key(dev, BTN_TR,	data[5] & 0x20);
+
+		/* stick press left/right */
+		input_report_key(dev, BTN_THUMBL, data[5] & 0x40);
+		input_report_key(dev, BTN_THUMBR, data[5] & 0x80);
+
+		if (!(xpad->mapping & MAP_STICKS_TO_NULL)) {
+			/* left stick */
+			input_report_abs(dev, ABS_X,
+					(__s16) le16_to_cpup((__le16 *)(data + 10)));
+			input_report_abs(dev, ABS_Y,
+					~(__s16) le16_to_cpup((__le16 *)(data + 12)));
+
+			/* right stick */
+			input_report_abs(dev, ABS_RX,
+					(__s16) le16_to_cpup((__le16 *)(data + 14)));
+			input_report_abs(dev, ABS_RY,
+					~(__s16) le16_to_cpup((__le16 *)(data + 16)));
+		}
 
-	if (!(xpad->mapping & MAP_STICKS_TO_NULL)) {
-		/* left stick */
-		input_report_abs(dev, ABS_X,
-				 (__s16) le16_to_cpup((__le16 *)(data + 10)));
-		input_report_abs(dev, ABS_Y,
-				 ~(__s16) le16_to_cpup((__le16 *)(data + 12)));
+		/* triggers left/right */
+		if (xpad->mapping & MAP_TRIGGERS_TO_BUTTONS) {
+			input_report_key(dev, BTN_TL2,
+					(__u16) le16_to_cpup((__le16 *)(data + 6)));
+			input_report_key(dev, BTN_TR2,
+					(__u16) le16_to_cpup((__le16 *)(data + 8)));
+		} else {
+			input_report_abs(dev, ABS_Z,
+					(__u16) le16_to_cpup((__le16 *)(data + 6)));
+			input_report_abs(dev, ABS_RZ,
+					(__u16) le16_to_cpup((__le16 *)(data + 8)));
+		}
 
-		/* right stick */
-		input_report_abs(dev, ABS_RX,
-				 (__s16) le16_to_cpup((__le16 *)(data + 14)));
-		input_report_abs(dev, ABS_RY,
-				 ~(__s16) le16_to_cpup((__le16 *)(data + 16)));
-	}
+		/* paddle handling */
+		/* based on SDL's SDL_hidapi_xboxone.c */
+		if (xpad->mapping & MAP_PADDLES) {
+			if (xpad->packet_type == PKT_XBE1) {
+				/* Mute paddles if controller has a custom mapping applied.
+				 * Checked by comparing the current mapping
+				 * config against the factory mapping config
+				 */
+				if (memcmp(&data[4], &data[18], 2) != 0)
+					data[32] = 0;
+
+				/* OG Elite Series Controller paddle bits */
+				input_report_key(dev, BTN_TRIGGER_HAPPY5, data[32] & 0x02);
+				input_report_key(dev, BTN_TRIGGER_HAPPY6, data[32] & 0x08);
+				input_report_key(dev, BTN_TRIGGER_HAPPY7, data[32] & 0x01);
+				input_report_key(dev, BTN_TRIGGER_HAPPY8, data[32] & 0x04);
+			} else if (xpad->packet_type == PKT_XBE2_FW_OLD) {
+				/* Mute paddles if controller has a custom mapping applied.
+				 * Checked by comparing the current mapping
+				 * config against the factory mapping config
+				 */
+				if (data[19] != 0)
+					data[18] = 0;
+
+				/* Elite Series 2 4.x firmware paddle bits */
+				input_report_key(dev, BTN_TRIGGER_HAPPY5, data[18] & 0x01);
+				input_report_key(dev, BTN_TRIGGER_HAPPY6, data[18] & 0x02);
+				input_report_key(dev, BTN_TRIGGER_HAPPY7, data[18] & 0x04);
+				input_report_key(dev, BTN_TRIGGER_HAPPY8, data[18] & 0x08);
+			} else if (xpad->packet_type == PKT_XBE2_FW_5_EARLY) {
+				/* Mute paddles if controller has a custom mapping applied.
+				 * Checked by comparing the current mapping
+				 * config against the factory mapping config
+				 */
+				if (data[23] != 0)
+					data[22] = 0;
+
+				/* Elite Series 2 5.x firmware paddle bits
+				 * (before the packet was split)
+				 */
+				input_report_key(dev, BTN_TRIGGER_HAPPY5, data[22] & 0x01);
+				input_report_key(dev, BTN_TRIGGER_HAPPY6, data[22] & 0x02);
+				input_report_key(dev, BTN_TRIGGER_HAPPY7, data[22] & 0x04);
+				input_report_key(dev, BTN_TRIGGER_HAPPY8, data[22] & 0x08);
+			}
+		}
 
-	/* triggers left/right */
-	if (xpad->mapping & MAP_TRIGGERS_TO_BUTTONS) {
-		input_report_key(dev, BTN_TL2,
-				 (__u16) le16_to_cpup((__le16 *)(data + 6)));
-		input_report_key(dev, BTN_TR2,
-				 (__u16) le16_to_cpup((__le16 *)(data + 8)));
-	} else {
-		input_report_abs(dev, ABS_Z,
-				 (__u16) le16_to_cpup((__le16 *)(data + 6)));
-		input_report_abs(dev, ABS_RZ,
-				 (__u16) le16_to_cpup((__le16 *)(data + 8)));
+		do_sync = true;
 	}
 
-	input_sync(dev);
+	if (do_sync)
+		input_sync(dev);
 }
 
 static void xpad_irq_in(struct urb *urb)
@@ -1736,6 +1829,12 @@ static int xpad_init_input(struct usb_xpad *xpad)
 					     xpad_btn_pad[i]);
 	}
 
+	/* set up paddles if the controller has them */
+	if (xpad->mapping & MAP_PADDLES) {
+		for (i = 0; xpad_btn_paddles[i] >= 0; i++)
+			input_set_capability(input_dev, EV_KEY, xpad_btn_paddles[i]);
+	}
+
 	/*
 	 * This should be a simple else block. However historically
 	 * xbox360w has mapped DPAD to buttons while xbox360 did not. This
@@ -1822,6 +1921,7 @@ static int xpad_probe(struct usb_interface *intf, const struct usb_device_id *id
 	xpad->mapping = xpad_device[i].mapping;
 	xpad->xtype = xpad_device[i].xtype;
 	xpad->name = xpad_device[i].name;
+	xpad->packet_type = PKT_XB;
 	INIT_WORK(&xpad->work, xpad_presence_work);
 
 	if (xpad->xtype == XTYPE_UNKNOWN) {
@@ -1887,6 +1987,38 @@ static int xpad_probe(struct usb_interface *intf, const struct usb_device_id *id
 
 	usb_set_intfdata(intf, xpad);
 
+	/* Packet type detection */
+	if (le16_to_cpu(udev->descriptor.idVendor) == 0x045e) { /* Microsoft controllers */
+		if (le16_to_cpu(udev->descriptor.idProduct) == 0x02e3) {
+			/* The original elite controller always uses the oldest
+			 * type of extended packet
+			 */
+			xpad->packet_type = PKT_XBE1;
+		} else if (le16_to_cpu(udev->descriptor.idProduct) == 0x0b00) {
+			/* The elite 2 controller has seen multiple packet
+			 * revisions. These are tied to specific firmware
+			 * versions
+			 */
+			if (le16_to_cpu(udev->descriptor.bcdDevice) < 0x0500) {
+				/* This is the format that the Elite 2 used
+				 * prior to the BLE update
+				 */
+				xpad->packet_type = PKT_XBE2_FW_OLD;
+			} else if (le16_to_cpu(udev->descriptor.bcdDevice) <
+				   0x050b) {
+				/* This is the format that the Elite 2 used
+				 * prior to the update that split the packet
+				 */
+				xpad->packet_type = PKT_XBE2_FW_5_EARLY;
+			} else {
+				/* The split packet format that was introduced
+				 * in firmware v5.11
+				 */
+				xpad->packet_type = PKT_XBE2_FW_5_11;
+			}
+		}
+	}
+
 	if (xpad->xtype == XTYPE_XBOX360W) {
 		/*
 		 * Submit the int URB immediately rather than waiting for open
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* Re: [PATCH 1/4] Input: xpad - add supported devices as contributed on github
  2022-08-18 13:00 ` [PATCH 1/4] Input: xpad - add supported devices as contributed on github Pavel Rojtberg
@ 2022-08-18 13:10   ` Greg KH
  2022-08-18 13:46     ` Pavel Rojtberg
  0 siblings, 1 reply; 15+ messages in thread
From: Greg KH @ 2022-08-18 13:10 UTC (permalink / raw)
  To: Pavel Rojtberg
  Cc: linux-input, dmitry.torokhov, Jasper Poppe, Jeremy Palmer,
	Ruineka, Cleber de Mattos Casali, Kyle Gospodnetich

On Thu, Aug 18, 2022 at 03:00:18PM +0200, Pavel Rojtberg wrote:
> From: Pavel Rojtberg <rojtberg@gmail.com>
> 
> This is based on multiple commits at https://github.com/paroj/xpad
> 
> Signed-off-by: Jasper Poppe <jgpoppe@gmail.com>
> Signed-off-by: Jeremy Palmer <jpalmer@linz.govt.nz>
> Signed-off-by: Ruineka <ruinairas1992@gmail.com>
> Signed-off-by: Cleber de Mattos Casali <clebercasali@gmail.com>
> Signed-off-by: Kyle Gospodnetich <me@kylegospodneti.ch>
> Signed-off-by: Pavel Rojtberg <rojtberg@gmail.com>

Why not just submit the individual commits?

Also, should this be backported to stable kernels?

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 2/4] Input: xpad - fix wireless 360 controller breaking after suspend
  2022-08-18 13:00 ` [PATCH 2/4] Input: xpad - fix wireless 360 controller breaking after suspend Pavel Rojtberg
@ 2022-08-18 13:10   ` Greg KH
  2022-08-18 13:51     ` Pavel Rojtberg
  0 siblings, 1 reply; 15+ messages in thread
From: Greg KH @ 2022-08-18 13:10 UTC (permalink / raw)
  To: Pavel Rojtberg; +Cc: linux-input, dmitry.torokhov, Cameron Gutman

On Thu, Aug 18, 2022 at 03:00:19PM +0200, Pavel Rojtberg wrote:
> From: Cameron Gutman <aicommander@gmail.com>
> 
> Suspending and resuming the system can sometimes cause the out
> URB to get hung after a reset_resume. This causes LED setting
> and force feedback to break on resume. To avoid this, just drop
> the reset_resume callback so the USB core rebinds xpad to the
> wireless pads on resume if a reset happened.
> 
> A nice side effect of this change is the LED ring on wireless
> controllers is now set correctly on system resume.
> 
> Signed-off-by: Cameron Gutman <aicommander@gmail.com>
> Signed-off-by: Pavel Rojtberg <rojtberg@gmail.com>
> ---
>  drivers/input/joystick/xpad.c | 1 -
>  1 file changed, 1 deletion(-)

What commit id does this fix?  Should it go to stable kernels?

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 3/4] Input: xpad - Poweroff XBOX360W on mode button long press
  2022-08-18 13:00 ` [PATCH 3/4] Input: xpad - Poweroff XBOX360W on mode button long press Pavel Rojtberg
@ 2022-08-18 13:11   ` Greg KH
  2022-08-18 13:53     ` Pavel Rojtberg
  0 siblings, 1 reply; 15+ messages in thread
From: Greg KH @ 2022-08-18 13:11 UTC (permalink / raw)
  To: Pavel Rojtberg; +Cc: linux-input, dmitry.torokhov, Santosh De Massari

On Thu, Aug 18, 2022 at 03:00:20PM +0200, Pavel Rojtberg wrote:
> From: Santosh De Massari <s.demassari@gmail.com>
> 
> Newer gamepads turn themselves off when the mode button is held down.
> For XBOX360W gamepads we must do this in the driver.
> 
> Do not use BIT() macro for consistency within the file.

You can fix the file up to properly use the BIT() macro :)

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 4/4] Input: xpad - add support for XBOX One Elite paddles
  2022-08-18 13:00 ` [PATCH 4/4] Input: xpad - add support for XBOX One Elite paddles Pavel Rojtberg
@ 2022-08-18 13:12   ` Greg KH
  0 siblings, 0 replies; 15+ messages in thread
From: Greg KH @ 2022-08-18 13:12 UTC (permalink / raw)
  To: Pavel Rojtberg; +Cc: linux-input, dmitry.torokhov, Christopher Crockett

On Thu, Aug 18, 2022 at 03:00:21PM +0200, Pavel Rojtberg wrote:
> From: Christopher Crockett <chaorace@gmail.com>
> 
> An effort has been made to support every official model and firmware
> version I could track down info on. The following controllers _should_
> have working paddles with this PR:
> - Xbox Elite (**untested**)
> - Xbox Elite Series 2 on early firmwares (**untested**)
> - Xbox Elite Series 2 on v4 firmwares (Tested v4.8.1908.0)
> - Xbox Elite Series 2 on v5 pre-BLE firmwares (**untested**)
> - Xbox Elite Series 2 on v5 post-BLE firmwares (Tested v5.13.3143.0)
> 
> This patch also introduces correct handling for the Elite 1 controller
> and properly suppresses paddle inputs when using a custom profile slot.
> 
> Starting with firmware v5.11, certain inputs for the Elite 2 were moved
> to an extra packet that is not enabled by default.
> 
> We must first manually enable this extra packet in order to correctly
> process paddle input data with these later firmwares.
> 
> Signed-off-by: Christopher Crockett <chaorace@gmail.com>
> Signed-off-by: Pavel Rojtberg <rojtberg@gmail.com>
> ---
>  drivers/input/joystick/xpad.c | 254 +++++++++++++++++++++++++++++++++++++++++++--------------
>  1 file changed, 193 insertions(+), 61 deletions(-)

Nice work, that's messy to figure out.

Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 1/4] Input: xpad - add supported devices as contributed on github
  2022-08-18 13:10   ` Greg KH
@ 2022-08-18 13:46     ` Pavel Rojtberg
  2022-08-18 14:06       ` Greg KH
  0 siblings, 1 reply; 15+ messages in thread
From: Pavel Rojtberg @ 2022-08-18 13:46 UTC (permalink / raw)
  To: Greg KH
  Cc: linux-input, dmitry.torokhov, Jasper Poppe, Jeremy Palmer,
	Ruineka, Cleber de Mattos Casali, Kyle Gospodnetich

Am 18.08.22 um 15:10 schrieb Greg KH:
> On Thu, Aug 18, 2022 at 03:00:18PM +0200, Pavel Rojtberg wrote:
>> From: Pavel Rojtberg <rojtberg@gmail.com>
>>
>> This is based on multiple commits at https://github.com/paroj/xpad
>>
>> Signed-off-by: Jasper Poppe <jgpoppe@gmail.com>
>> Signed-off-by: Jeremy Palmer <jpalmer@linz.govt.nz>
>> Signed-off-by: Ruineka <ruinairas1992@gmail.com>
>> Signed-off-by: Cleber de Mattos Casali <clebercasali@gmail.com>
>> Signed-off-by: Kyle Gospodnetich <me@kylegospodneti.ch>
>> Signed-off-by: Pavel Rojtberg <rojtberg@gmail.com>
> 
> Why not just submit the individual commits?
> 
> Also, should this be backported to stable kernels?
> 
> thanks,
> 
> greg k-h

I thought it would be easier to review them in bulk instead of many one-line patches.
Nevertheless, I lost the individual commits while rebasing and it would be
a PITA to reconstruct them from github.
I will keep this mind for the next patch series though.

The changes are safe for backporting.

Greetings, Pavel

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 2/4] Input: xpad - fix wireless 360 controller breaking after suspend
  2022-08-18 13:10   ` Greg KH
@ 2022-08-18 13:51     ` Pavel Rojtberg
  2022-08-18 14:07       ` Greg KH
  0 siblings, 1 reply; 15+ messages in thread
From: Pavel Rojtberg @ 2022-08-18 13:51 UTC (permalink / raw)
  To: Greg KH; +Cc: linux-input, dmitry.torokhov, Cameron Gutman

Am 18.08.22 um 15:10 schrieb Greg KH:
> On Thu, Aug 18, 2022 at 03:00:19PM +0200, Pavel Rojtberg wrote:
>> From: Cameron Gutman <aicommander@gmail.com>
>>
>> Suspending and resuming the system can sometimes cause the out
>> URB to get hung after a reset_resume. This causes LED setting
>> and force feedback to break on resume. To avoid this, just drop
>> the reset_resume callback so the USB core rebinds xpad to the
>> wireless pads on resume if a reset happened.
>>
>> A nice side effect of this change is the LED ring on wireless
>> controllers is now set correctly on system resume.
>>
>> Signed-off-by: Cameron Gutman <aicommander@gmail.com>
>> Signed-off-by: Pavel Rojtberg <rojtberg@gmail.com>
>> ---
>>  drivers/input/joystick/xpad.c | 1 -
>>  1 file changed, 1 deletion(-)
> 
> What commit id does this fix?  Should it go to stable kernels?
> 
> thanks,
> 
> greg k-h

this is a fixup for 4220f7db1e424f2a086ad41217b5770cc9f003a9.

It should be applied to stable kernels, too.

Greetings, Pavel

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 3/4] Input: xpad - Poweroff XBOX360W on mode button long press
  2022-08-18 13:11   ` Greg KH
@ 2022-08-18 13:53     ` Pavel Rojtberg
  2022-08-18 14:07       ` Greg KH
  0 siblings, 1 reply; 15+ messages in thread
From: Pavel Rojtberg @ 2022-08-18 13:53 UTC (permalink / raw)
  To: Greg KH; +Cc: linux-input, dmitry.torokhov, Santosh De Massari

Am 18.08.22 um 15:11 schrieb Greg KH:
> On Thu, Aug 18, 2022 at 03:00:20PM +0200, Pavel Rojtberg wrote:
>> From: Santosh De Massari <s.demassari@gmail.com>
>>
>> Newer gamepads turn themselves off when the mode button is held down.
>> For XBOX360W gamepads we must do this in the driver.
>>
>> Do not use BIT() macro for consistency within the file.
> 
> You can fix the file up to properly use the BIT() macro :)
> 
> thanks,
> 
> greg k-h

That change should be a separate patch anyway, no?
Can we postpone this to the next patch series?

Greetings, Pavel

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 1/4] Input: xpad - add supported devices as contributed on github
  2022-08-18 13:46     ` Pavel Rojtberg
@ 2022-08-18 14:06       ` Greg KH
  0 siblings, 0 replies; 15+ messages in thread
From: Greg KH @ 2022-08-18 14:06 UTC (permalink / raw)
  To: Pavel Rojtberg
  Cc: linux-input, dmitry.torokhov, Jasper Poppe, Jeremy Palmer,
	Ruineka, Cleber de Mattos Casali, Kyle Gospodnetich

On Thu, Aug 18, 2022 at 03:46:29PM +0200, Pavel Rojtberg wrote:
> Am 18.08.22 um 15:10 schrieb Greg KH:
> > On Thu, Aug 18, 2022 at 03:00:18PM +0200, Pavel Rojtberg wrote:
> >> From: Pavel Rojtberg <rojtberg@gmail.com>
> >>
> >> This is based on multiple commits at https://github.com/paroj/xpad
> >>
> >> Signed-off-by: Jasper Poppe <jgpoppe@gmail.com>
> >> Signed-off-by: Jeremy Palmer <jpalmer@linz.govt.nz>
> >> Signed-off-by: Ruineka <ruinairas1992@gmail.com>
> >> Signed-off-by: Cleber de Mattos Casali <clebercasali@gmail.com>
> >> Signed-off-by: Kyle Gospodnetich <me@kylegospodneti.ch>
> >> Signed-off-by: Pavel Rojtberg <rojtberg@gmail.com>
> > 
> > Why not just submit the individual commits?
> > 
> > Also, should this be backported to stable kernels?
> > 
> > thanks,
> > 
> > greg k-h
> 
> I thought it would be easier to review them in bulk instead of many one-line patches.
> Nevertheless, I lost the individual commits while rebasing and it would be
> a PITA to reconstruct them from github.
> I will keep this mind for the next patch series though.
> 
> The changes are safe for backporting.

Ok, when you resend, can you mark it with a "cc: stable" tag as the
stable documentation asks for?  You can see how to do that if you read
this file:
    https://www.kernel.org/doc/html/latest/process/stable-kernel-rules.html

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 2/4] Input: xpad - fix wireless 360 controller breaking after suspend
  2022-08-18 13:51     ` Pavel Rojtberg
@ 2022-08-18 14:07       ` Greg KH
  0 siblings, 0 replies; 15+ messages in thread
From: Greg KH @ 2022-08-18 14:07 UTC (permalink / raw)
  To: Pavel Rojtberg; +Cc: linux-input, dmitry.torokhov, Cameron Gutman

On Thu, Aug 18, 2022 at 03:51:55PM +0200, Pavel Rojtberg wrote:
> Am 18.08.22 um 15:10 schrieb Greg KH:
> > On Thu, Aug 18, 2022 at 03:00:19PM +0200, Pavel Rojtberg wrote:
> >> From: Cameron Gutman <aicommander@gmail.com>
> >>
> >> Suspending and resuming the system can sometimes cause the out
> >> URB to get hung after a reset_resume. This causes LED setting
> >> and force feedback to break on resume. To avoid this, just drop
> >> the reset_resume callback so the USB core rebinds xpad to the
> >> wireless pads on resume if a reset happened.
> >>
> >> A nice side effect of this change is the LED ring on wireless
> >> controllers is now set correctly on system resume.
> >>
> >> Signed-off-by: Cameron Gutman <aicommander@gmail.com>
> >> Signed-off-by: Pavel Rojtberg <rojtberg@gmail.com>
> >> ---
> >>  drivers/input/joystick/xpad.c | 1 -
> >>  1 file changed, 1 deletion(-)
> > 
> > What commit id does this fix?  Should it go to stable kernels?
> > 
> > thanks,
> > 
> > greg k-h
> 
> this is a fixup for 4220f7db1e424f2a086ad41217b5770cc9f003a9.

Great, can you resend and add the Fixes: tag for it like:
	Fixes: 4220f7db1e42 ("Input: xpad - workaround dead irq_out after suspend/ resume")

> It should be applied to stable kernels, too.

Great, it needs a stable tag too.

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 3/4] Input: xpad - Poweroff XBOX360W on mode button long press
  2022-08-18 13:53     ` Pavel Rojtberg
@ 2022-08-18 14:07       ` Greg KH
  0 siblings, 0 replies; 15+ messages in thread
From: Greg KH @ 2022-08-18 14:07 UTC (permalink / raw)
  To: Pavel Rojtberg; +Cc: linux-input, dmitry.torokhov, Santosh De Massari

On Thu, Aug 18, 2022 at 03:53:01PM +0200, Pavel Rojtberg wrote:
> Am 18.08.22 um 15:11 schrieb Greg KH:
> > On Thu, Aug 18, 2022 at 03:00:20PM +0200, Pavel Rojtberg wrote:
> >> From: Santosh De Massari <s.demassari@gmail.com>
> >>
> >> Newer gamepads turn themselves off when the mode button is held down.
> >> For XBOX360W gamepads we must do this in the driver.
> >>
> >> Do not use BIT() macro for consistency within the file.
> > 
> > You can fix the file up to properly use the BIT() macro :)
> > 
> > thanks,
> > 
> > greg k-h
> 
> That change should be a separate patch anyway, no?

Yes.

> Can we postpone this to the next patch series?

Sure, it's just not good to keep postponing it to allow you to keep
having to justify not using it in new changes.

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2022-08-18 14:08 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-08-18 13:00 [PATCH 0/4] Input: xpad - sync with github fork Pavel Rojtberg
2022-08-18 13:00 ` [PATCH 1/4] Input: xpad - add supported devices as contributed on github Pavel Rojtberg
2022-08-18 13:10   ` Greg KH
2022-08-18 13:46     ` Pavel Rojtberg
2022-08-18 14:06       ` Greg KH
2022-08-18 13:00 ` [PATCH 2/4] Input: xpad - fix wireless 360 controller breaking after suspend Pavel Rojtberg
2022-08-18 13:10   ` Greg KH
2022-08-18 13:51     ` Pavel Rojtberg
2022-08-18 14:07       ` Greg KH
2022-08-18 13:00 ` [PATCH 3/4] Input: xpad - Poweroff XBOX360W on mode button long press Pavel Rojtberg
2022-08-18 13:11   ` Greg KH
2022-08-18 13:53     ` Pavel Rojtberg
2022-08-18 14:07       ` Greg KH
2022-08-18 13:00 ` [PATCH 4/4] Input: xpad - add support for XBOX One Elite paddles Pavel Rojtberg
2022-08-18 13:12   ` Greg KH

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.