Hey Dmitry, this patch series seems to have only gotten radio silence as well. What could we do to get this moving? On Fri, 2023-02-24 at 17:21 -0800, Vicki Pfau wrote: > Some third-party controllers, such as the HORPIAD FPS for Nintendo Switch and > Gamesir-G3w, require a specific packet that the first-party XInput driver sends > before it will start sending reports. It's not currently known what this packet > does, but since the first-party driver always sends it's unlikely that this > could cause issues with existing controllers. > > Co-authored-by: Andrey Smirnov <andrew.smirnov@xxxxxxxxx> > Signed-off-by: Vicki Pfau <vi@xxxxxxxxxxx> > --- > drivers/input/joystick/xpad.c | 22 ++++++++++++++++++++++ > 1 file changed, 22 insertions(+) > > diff --git a/drivers/input/joystick/xpad.c b/drivers/input/joystick/xpad.c > index 403b57e8176b..04af2213407f 100644 > --- a/drivers/input/joystick/xpad.c > +++ b/drivers/input/joystick/xpad.c > @@ -265,6 +265,7 @@ static const struct xpad_device { > { 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 }, > + { 0x0f0d, 0x00dc, "HORIPAD FPS for Nintendo Switch", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOX360 }, > { 0x0f30, 0x010b, "Philips Recoil", 0, XTYPE_XBOX }, > { 0x0f30, 0x0202, "Joytech Advanced Controller", 0, XTYPE_XBOX }, > { 0x0f30, 0x8888, "BigBen XBMiniPad Controller", 0, XTYPE_XBOX }, > @@ -2020,6 +2021,27 @@ static int xpad_probe(struct usb_interface *intf, const struct usb_device_id *id > goto err_free_in_urb; > } > > + if (xpad->xtype == XTYPE_XBOX360) { > + /* Some third-party controllers Xbox 360-style controllers > + * require this message to finish initialization */ > + uint8_t dummy[20]; > + int ret; > + > + usb_control_msg_recv(udev, 0, > + /* bRequest */ 0x01, > + /* bmRequestType */ > + USB_TYPE_VENDOR | USB_DIR_IN | > + USB_RECIP_INTERFACE, > + /* wValue */ 0x100, > + /* wIndex */ 0x00, > + dummy, sizeof(dummy), > + 25, > + GFP_KERNEL); > + if (ret) > + dev_warn(&xpad->dev->dev, > + "unable to receive magic message: %d\n", ret); > + } > + > ep_irq_in = ep_irq_out = NULL; > > for (i = 0; i < 2; i++) { -- Cheers, Lyude Paul (she/her) Software Engineer at Red Hat