diff mbox

Input: xpad - add USB IDs for Hyperkin Duke

Message ID 20180523161740.zi6zylh2ki67keca@S-D-KUBUNTU (mailing list archive)
State New, archived
Headers show

Commit Message

Shelby Jueden May 23, 2018, 4:17 p.m. UTC
Add the USB ID for the Hyperkin duke.

There is an issue where the controller resets, which causes a rumble and
to display the animation, after ~40 seconds if no application is
currently reading from it. As an example, running jstest, steam, or any
game stops this. Once the application begins reading from it, a different
reset happens that displays the animation, does not rumble, and stops
the reset loop. But once the application is closed the issue starts
again.

Signed-off-by: Shelby Jueden <shelby@jueden.org>
---
 drivers/input/joystick/xpad.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Dmitry Torokhov May 24, 2018, 11:45 p.m. UTC | #1
Hi Shelby,

On Wed, May 23, 2018 at 09:17:40AM -0700, Shelby Jueden wrote:
> Add the USB ID for the Hyperkin duke.
> 
> There is an issue where the controller resets, which causes a rumble and
> to display the animation, after ~40 seconds if no application is
> currently reading from it. As an example, running jstest, steam, or any
> game stops this. Once the application begins reading from it, a different
> reset happens that displays the animation, does not rumble, and stops
> the reset loop. But once the application is closed the issue starts
> again.

I am confused, the behavior you are describing happens with the dveice
ID added to xpad driver? I guess similarly to Xbox360W controllers we
need to start IO right away in probe for this controller.

This needs to be fixed before we can get this new ID in.

> 
> Signed-off-by: Shelby Jueden <shelby@jueden.org>
> ---
>  drivers/input/joystick/xpad.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/drivers/input/joystick/xpad.c b/drivers/input/joystick/xpad.c
> index 06e9650b3b30..04d21cfe1de5 100644
> --- a/drivers/input/joystick/xpad.c
> +++ b/drivers/input/joystick/xpad.c
> @@ -326,6 +326,7 @@ 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 },
> +	{ 0x2e24, 0x0652, "Hyperkin Duke X-Box One pad", 0, XTYPE_XBOXONE },
>  	{ 0x3767, 0x0101, "Fanatec Speedster 3 Forceshock Wheel", 0, XTYPE_XBOX },
>  	{ 0xffff, 0xffff, "Chinese-made Xbox Controller", 0, XTYPE_XBOX },
>  	{ 0x0000, 0x0000, "Generic X-Box pad", 0, XTYPE_UNKNOWN }
> @@ -435,6 +436,7 @@ static const struct usb_device_id xpad_table[] = {
>  	XPAD_XBOX360_VENDOR(0x1bad),		/* Harminix Rock Band Guitar and Drums */
>  	XPAD_XBOX360_VENDOR(0x24c6),		/* PowerA Controllers */
>  	XPAD_XBOXONE_VENDOR(0x24c6),		/* PowerA Controllers */
> +	XPAD_XBOXONE_VENDOR(0x2e24),		/* Hyperkin Duke X-Box One pad */
>  	{ }
>  };
>  
> -- 
> 2.14.1
> 

Thanks.
Shelby Jueden May 25, 2018, 4:09 a.m. UTC | #2
Yes, the restarting happens when the ID is added to the driver.

Probing IO immediately sounds like it may be a good solution. I'm going to
try and get familiar with the xpad driver so I can make the needed
changes. I'm thinking the Xbox360W probing you mentioned happens around
line 1822? Tomorrow I'm going to try to add something like that for this
controller.

On Thu, May 24, 2018 at 04:45:51PM -0700, Dmitry Torokhov wrote:
> Hi Shelby,
>
> On Wed, May 23, 2018 at 09:17:40AM -0700, Shelby Jueden wrote:
> > Add the USB ID for the Hyperkin duke.
> >
> > There is an issue where the controller resets, which causes a rumble and
> > to display the animation, after ~40 seconds if no application is
> > currently reading from it. As an example, running jstest, steam, or any
> > game stops this. Once the application begins reading from it, a different
> > reset happens that displays the animation, does not rumble, and stops
> > the reset loop. But once the application is closed the issue starts
> > again.
>
> I am confused, the behavior you are describing happens with the dveice
> ID added to xpad driver? I guess similarly to Xbox360W controllers we
> need to start IO right away in probe for this controller.
>
> This needs to be fixed before we can get this new ID in.
>
> >
> > Signed-off-by: Shelby Jueden <shelby@jueden.org>
> > ---
> >  drivers/input/joystick/xpad.c | 2 ++
> >  1 file changed, 2 insertions(+)
> >
> > diff --git a/drivers/input/joystick/xpad.c b/drivers/input/joystick/xpad.c
> > index 06e9650b3b30..04d21cfe1de5 100644
> > --- a/drivers/input/joystick/xpad.c
> > +++ b/drivers/input/joystick/xpad.c
> > @@ -326,6 +326,7 @@ 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 },
> > +	{ 0x2e24, 0x0652, "Hyperkin Duke X-Box One pad", 0, XTYPE_XBOXONE },
> >  	{ 0x3767, 0x0101, "Fanatec Speedster 3 Forceshock Wheel", 0, XTYPE_XBOX },
> >  	{ 0xffff, 0xffff, "Chinese-made Xbox Controller", 0, XTYPE_XBOX },
> >  	{ 0x0000, 0x0000, "Generic X-Box pad", 0, XTYPE_UNKNOWN }
> > @@ -435,6 +436,7 @@ static const struct usb_device_id xpad_table[] = {
> >  	XPAD_XBOX360_VENDOR(0x1bad),		/* Harminix Rock Band Guitar and Drums */
> >  	XPAD_XBOX360_VENDOR(0x24c6),		/* PowerA Controllers */
> >  	XPAD_XBOXONE_VENDOR(0x24c6),		/* PowerA Controllers */
> > +	XPAD_XBOXONE_VENDOR(0x2e24),		/* Hyperkin Duke X-Box One pad */
> >  	{ }
> >  };
> >
> > --
> > 2.14.1
> >
>
> Thanks.
>
> --
> Dmitry
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/input/joystick/xpad.c b/drivers/input/joystick/xpad.c
index 06e9650b3b30..04d21cfe1de5 100644
--- a/drivers/input/joystick/xpad.c
+++ b/drivers/input/joystick/xpad.c
@@ -326,6 +326,7 @@  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 },
+	{ 0x2e24, 0x0652, "Hyperkin Duke X-Box One pad", 0, XTYPE_XBOXONE },
 	{ 0x3767, 0x0101, "Fanatec Speedster 3 Forceshock Wheel", 0, XTYPE_XBOX },
 	{ 0xffff, 0xffff, "Chinese-made Xbox Controller", 0, XTYPE_XBOX },
 	{ 0x0000, 0x0000, "Generic X-Box pad", 0, XTYPE_UNKNOWN }
@@ -435,6 +436,7 @@  static const struct usb_device_id xpad_table[] = {
 	XPAD_XBOX360_VENDOR(0x1bad),		/* Harminix Rock Band Guitar and Drums */
 	XPAD_XBOX360_VENDOR(0x24c6),		/* PowerA Controllers */
 	XPAD_XBOXONE_VENDOR(0x24c6),		/* PowerA Controllers */
+	XPAD_XBOXONE_VENDOR(0x2e24),		/* Hyperkin Duke X-Box One pad */
 	{ }
 };