Message ID | 20230225012147.276489-2-vi@endrift.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Input: xpad - Additional controller support | expand |
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@gmail.com> > Signed-off-by: Vicki Pfau <vi@endrift.com> > --- > 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++) {
Ah wnoops, Vicki pointed out I made a mistake here and that this one is still awaiting reviews from someone. will review in just a moment On Thu, 2023-03-23 at 17:39 -0400, Lyude Paul wrote: > 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@gmail.com> > > Signed-off-by: Vicki Pfau <vi@endrift.com> > > --- > > 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++) { >
On Fri, Feb 24, 2023 at 05:21:46PM -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@gmail.com> > Signed-off-by: Vicki Pfau <vi@endrift.com> > --- > 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); You are not setting "ret", how was this tested? > + } > + > ep_irq_in = ep_irq_out = NULL; > > for (i = 0; i < 2; i++) { > -- > 2.39.2 >
On 3/23/23 18:30, Dmitry Torokhov wrote: > On Fri, Feb 24, 2023 at 05:21:46PM -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@gmail.com> >> Signed-off-by: Vicki Pfau <vi@endrift.com> >> --- >> 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); > > You are not setting "ret", how was this tested? Presumably with a stack frame that had that space unwittingly initialized to zero. Good catch, thanks. I've resubmitted with this fixed in v2. > >> + } >> + >> ep_irq_in = ep_irq_out = NULL; >> >> for (i = 0; i < 2; i++) { >> -- >> 2.39.2 >> >
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++) {
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@gmail.com> Signed-off-by: Vicki Pfau <vi@endrift.com> --- drivers/input/joystick/xpad.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+)