aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVicki Pfau <[email protected]>2023-04-13 23:58:12 -0700
committerDmitry Torokhov <[email protected]>2023-04-14 00:02:55 -0700
commitcf5950187319346d7cdc62522f90479dfefd9235 (patch)
tree91c6b7a22ba9a296b08c544cd7b0c40f0f7bbc9c
parentf9b2e603c6216824e34dc9a67205d98ccc9a41ca (diff)
Input: xpad - fix PowerA EnWired Controller guide button
This commit explicitly disables the audio interface the same way the official driver does. This is needed for some controllers, such as the PowerA Enhanced Wired Controller for Series X|S (0x20d6:0x200e) to report the guide button. Signed-off-by: Vicki Pfau <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Dmitry Torokhov <[email protected]>
-rw-r--r--drivers/input/joystick/xpad.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/drivers/input/joystick/xpad.c b/drivers/input/joystick/xpad.c
index 6ea9c10dfb8a..138e4a9f341f 100644
--- a/drivers/input/joystick/xpad.c
+++ b/drivers/input/joystick/xpad.c
@@ -1396,6 +1396,21 @@ static int xpad_start_xbox_one(struct usb_xpad *xpad)
unsigned long flags;
int retval;
+ if (usb_ifnum_to_if(xpad->udev, GIP_WIRED_INTF_AUDIO)) {
+ /*
+ * Explicitly disable the audio interface. This is needed
+ * for some controllers, such as the PowerA Enhanced Wired
+ * Controller for Series X|S (0x20d6:0x200e) to report the
+ * guide button.
+ */
+ retval = usb_set_interface(xpad->udev,
+ GIP_WIRED_INTF_AUDIO, 0);
+ if (retval)
+ dev_warn(&xpad->dev->dev,
+ "unable to disable audio interface: %d\n",
+ retval);
+ }
+
spin_lock_irqsave(&xpad->odata_lock, flags);
/*