From: Roderick Colenbrander <roderick.colenbrander@sony.com>
Hi,
The joydev changes introduced by this patch are the result of a discussion
on linux-input about handling of features in newer devices, which classic
joydev applications may not pick up and confuse. The original motivation
was dualshock 3 /4 and thq udraw devices, which expose motion sensors
on a subdevice. These got picked up by joydev and confused older applications
and users and has been a regression since 4.12.
The original patch proposed to filter out motion sensor capability from joydev,
but this was 'too wide' of a filter. Ultimately Dmitry suggested for joydev
to reject certain devices.
This patch introduces an initial blacklist mechanism for joydev. It is used
to filter out the motion sensor subdevice on dualshock 3 / 4 and thq udraw.
We hope this feature could still make it into 4.14 to minimize impact on our
users as this will be a long LTS release.
Thanks,
Roderick
Roderick Colenbrander (1):
Input: joydev - blacklist ds3/ds4/udraw motion sensors
drivers/input/joydev.c | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 57 insertions(+)
--
2.13.6
From: Roderick Colenbrander <roderick.colenbrander@sony.com>
Introduce a device table used for blacklisting devices. We currently
blacklist the motion sensor subdevice of THQ Udraw and Sony ds3/ds4.
Signed-off-by: Roderick Colenbrander <roderick.colenbrander@sony.com>
Cc: stable@vger.kernel.org
---
drivers/input/joydev.c | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 57 insertions(+)
@@ -70,6 +70,40 @@ struct joydev_client {structlist_headnode;};+/* These codes are copied from from hid-ids.h, unfortunately there is no common+*usb_ids/bt_ids.hheader.+*/+#define USB_VENDOR_ID_SONY 0x54c+#define USB_VENDOR_ID_THQ 0x20d6+#define USB_DEVICE_ID_SONY_PS3_CONTROLLER 0x0268+#define USB_DEVICE_ID_SONY_PS4_CONTROLLER 0x05c4+#define USB_DEVICE_ID_SONY_PS4_CONTROLLER_2 0x09cc+#define USB_DEVICE_ID_SONY_PS4_CONTROLLER_DONGLE 0x0ba0+#define USB_DEVICE_ID_THQ_PS3_UDRAW 0xcb17++/* List of devices blacklisted from joydev. A reason for blacklisting a+*deviceistosupport(legacy)softwaresupportingjoydev,butwhichwill+*nevergetupdatedtosupportthesedevicesorfeatures.Anexamplewould+*behandlingofmotionsensors,whichtheseapplicationscouldnothandle+*resultinginundefinedbehavior.+*/+staticconststructjoydev_blacklist{+__u16bustype;+__u16vendor;+__u16product;+unsignedlongpropbit;/* Allow for filtering based on device properties. */+}joydev_blacklist[]={+{BUS_BLUETOOTH,USB_VENDOR_ID_SONY,USB_DEVICE_ID_SONY_PS3_CONTROLLER,BIT(INPUT_PROP_ACCELEROMETER)},+{BUS_BLUETOOTH,USB_VENDOR_ID_SONY,USB_DEVICE_ID_SONY_PS4_CONTROLLER,BIT(INPUT_PROP_ACCELEROMETER)},+{BUS_BLUETOOTH,USB_VENDOR_ID_SONY,USB_DEVICE_ID_SONY_PS4_CONTROLLER_2,BIT(INPUT_PROP_ACCELEROMETER)},+{BUS_USB,USB_VENDOR_ID_SONY,USB_DEVICE_ID_SONY_PS3_CONTROLLER,BIT(INPUT_PROP_ACCELEROMETER)},+{BUS_USB,USB_VENDOR_ID_SONY,USB_DEVICE_ID_SONY_PS4_CONTROLLER,BIT(INPUT_PROP_ACCELEROMETER)},+{BUS_USB,USB_VENDOR_ID_SONY,USB_DEVICE_ID_SONY_PS4_CONTROLLER_2,BIT(INPUT_PROP_ACCELEROMETER)},+{BUS_USB,USB_VENDOR_ID_SONY,USB_DEVICE_ID_SONY_PS4_CONTROLLER_DONGLE,BIT(INPUT_PROP_ACCELEROMETER)},+{BUS_USB,USB_VENDOR_ID_THQ,USB_DEVICE_ID_THQ_PS3_UDRAW,BIT(INPUT_PROP_ACCELEROMETER)},+{0,0,0,0}+};+staticintjoydev_correct(intvalue,structjs_corr*corr){switch(corr->type){
Hi Roderick,
On Thu, Oct 05, 2017 at 06:03:33PM -0700, Roderick Colenbrander wrote:
quoted hunk
From: Roderick Colenbrander <roderick.colenbrander@sony.com>
Introduce a device table used for blacklisting devices. We currently
blacklist the motion sensor subdevice of THQ Udraw and Sony ds3/ds4.
Signed-off-by: Roderick Colenbrander <roderick.colenbrander@sony.com>
Cc: stable@vger.kernel.org
---
drivers/input/joydev.c | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 57 insertions(+)
@@ -70,6 +70,40 @@ struct joydev_client {structlist_headnode;};+/* These codes are copied from from hid-ids.h, unfortunately there is no common+*usb_ids/bt_ids.hheader.+*/+#define USB_VENDOR_ID_SONY 0x54c+#define USB_VENDOR_ID_THQ 0x20d6+#define USB_DEVICE_ID_SONY_PS3_CONTROLLER 0x0268+#define USB_DEVICE_ID_SONY_PS4_CONTROLLER 0x05c4+#define USB_DEVICE_ID_SONY_PS4_CONTROLLER_2 0x09cc+#define USB_DEVICE_ID_SONY_PS4_CONTROLLER_DONGLE 0x0ba0+#define USB_DEVICE_ID_THQ_PS3_UDRAW 0xcb17++/* List of devices blacklisted from joydev. A reason for blacklisting a+*deviceistosupport(legacy)softwaresupportingjoydev,butwhichwill+*nevergetupdatedtosupportthesedevicesorfeatures.Anexamplewould+*behandlingofmotionsensors,whichtheseapplicationscouldnothandle+*resultinginundefinedbehavior.+*/+staticconststructjoydev_blacklist{+__u16bustype;+__u16vendor;+__u16product;+unsignedlongpropbit;/* Allow for filtering based on device properties. */+}joydev_blacklist[]={+{BUS_BLUETOOTH,USB_VENDOR_ID_SONY,USB_DEVICE_ID_SONY_PS3_CONTROLLER,BIT(INPUT_PROP_ACCELEROMETER)},+{BUS_BLUETOOTH,USB_VENDOR_ID_SONY,USB_DEVICE_ID_SONY_PS4_CONTROLLER,BIT(INPUT_PROP_ACCELEROMETER)},+{BUS_BLUETOOTH,USB_VENDOR_ID_SONY,USB_DEVICE_ID_SONY_PS4_CONTROLLER_2,BIT(INPUT_PROP_ACCELEROMETER)},+{BUS_USB,USB_VENDOR_ID_SONY,USB_DEVICE_ID_SONY_PS3_CONTROLLER,BIT(INPUT_PROP_ACCELEROMETER)},+{BUS_USB,USB_VENDOR_ID_SONY,USB_DEVICE_ID_SONY_PS4_CONTROLLER,BIT(INPUT_PROP_ACCELEROMETER)},+{BUS_USB,USB_VENDOR_ID_SONY,USB_DEVICE_ID_SONY_PS4_CONTROLLER_2,BIT(INPUT_PROP_ACCELEROMETER)},+{BUS_USB,USB_VENDOR_ID_SONY,USB_DEVICE_ID_SONY_PS4_CONTROLLER_DONGLE,BIT(INPUT_PROP_ACCELEROMETER)},+{BUS_USB,USB_VENDOR_ID_THQ,USB_DEVICE_ID_THQ_PS3_UDRAW,BIT(INPUT_PROP_ACCELEROMETER)},+{0,0,0,0}
I would assume that regardless of connection (USB, BT, SPI, I2C, the
accelerometer in PS4 controller should not be handled by joydev. I
wonder if we should not factor out input device id matching from
input_match_device(), add propbit handling to input device id and use it
here? Then your blacklist would be:
#define ACCEL_DEV(vendor, product) \
{ \
.flags = INPUT_DEVICE_ID_MATCH_VENDOR | \
INPUT_DEVICE_ID_MATCH_PRODUCT | \
INPUT_DEVICE_ID_MATCH_PROPBIT, \
.vendor = (vendor), \
.product = (product), \
.propbit[0] = BIT(INPUT_PROP_ACCELEROMETER), \
}
static const struct input_device_id joydev_blacklist {
ACCEL_DEV(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_PS3_CONTROLLER),
ACCEL_DEV(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_PS4_CONTROLLER),
...
{ }
};
Hi Dmitry,
Thanks for your suggestions the feedback looks good. Just got back to office after a long weekend, then was surprised to see you already made a few changes to the series. The changes look. Thanks for the assistance!
Thanks,
Roderick
________________________________________
From: Dmitry Torokhov [dmitry.torokhov@gmail.com]
Sent: Saturday, October 07, 2017 11:44 AM
To: roderick@gaikai.com
Cc: linux-input@vger.kernel.org; Benjamin Tissoires; Jiri Kosina; Colenbrander, Roelof; stable@vger.kernel.org
Subject: Re: [PATCH 1/1] Input: joydev - blacklist ds3/ds4/udraw motion sensors
Hi Roderick,
On Thu, Oct 05, 2017 at 06:03:33PM -0700, Roderick Colenbrander wrote:
quoted hunk
From: Roderick Colenbrander <roderick.colenbrander@sony.com>
Introduce a device table used for blacklisting devices. We currently
blacklist the motion sensor subdevice of THQ Udraw and Sony ds3/ds4.
Signed-off-by: Roderick Colenbrander <roderick.colenbrander@sony.com>
Cc: stable@vger.kernel.org
---
drivers/input/joydev.c | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 57 insertions(+)
@@ -70,6 +70,40 @@ struct joydev_client {structlist_headnode;};+/* These codes are copied from from hid-ids.h, unfortunately there is no common+*usb_ids/bt_ids.hheader.+*/+#define USB_VENDOR_ID_SONY 0x54c+#define USB_VENDOR_ID_THQ 0x20d6+#define USB_DEVICE_ID_SONY_PS3_CONTROLLER 0x0268+#define USB_DEVICE_ID_SONY_PS4_CONTROLLER 0x05c4+#define USB_DEVICE_ID_SONY_PS4_CONTROLLER_2 0x09cc+#define USB_DEVICE_ID_SONY_PS4_CONTROLLER_DONGLE 0x0ba0+#define USB_DEVICE_ID_THQ_PS3_UDRAW 0xcb17++/* List of devices blacklisted from joydev. A reason for blacklisting a+*deviceistosupport(legacy)softwaresupportingjoydev,butwhichwill+*nevergetupdatedtosupportthesedevicesorfeatures.Anexamplewould+*behandlingofmotionsensors,whichtheseapplicationscouldnothandle+*resultinginundefinedbehavior.+*/+staticconststructjoydev_blacklist{+__u16bustype;+__u16vendor;+__u16product;+unsignedlongpropbit;/* Allow for filtering based on device properties. */+}joydev_blacklist[]={+{BUS_BLUETOOTH,USB_VENDOR_ID_SONY,USB_DEVICE_ID_SONY_PS3_CONTROLLER,BIT(INPUT_PROP_ACCELEROMETER)},+{BUS_BLUETOOTH,USB_VENDOR_ID_SONY,USB_DEVICE_ID_SONY_PS4_CONTROLLER,BIT(INPUT_PROP_ACCELEROMETER)},+{BUS_BLUETOOTH,USB_VENDOR_ID_SONY,USB_DEVICE_ID_SONY_PS4_CONTROLLER_2,BIT(INPUT_PROP_ACCELEROMETER)},+{BUS_USB,USB_VENDOR_ID_SONY,USB_DEVICE_ID_SONY_PS3_CONTROLLER,BIT(INPUT_PROP_ACCELEROMETER)},+{BUS_USB,USB_VENDOR_ID_SONY,USB_DEVICE_ID_SONY_PS4_CONTROLLER,BIT(INPUT_PROP_ACCELEROMETER)},+{BUS_USB,USB_VENDOR_ID_SONY,USB_DEVICE_ID_SONY_PS4_CONTROLLER_2,BIT(INPUT_PROP_ACCELEROMETER)},+{BUS_USB,USB_VENDOR_ID_SONY,USB_DEVICE_ID_SONY_PS4_CONTROLLER_DONGLE,BIT(INPUT_PROP_ACCELEROMETER)},+{BUS_USB,USB_VENDOR_ID_THQ,USB_DEVICE_ID_THQ_PS3_UDRAW,BIT(INPUT_PROP_ACCELEROMETER)},+{0,0,0,0}
I would assume that regardless of connection (USB, BT, SPI, I2C, the
accelerometer in PS4 controller should not be handled by joydev. I
wonder if we should not factor out input device id matching from
input_match_device(), add propbit handling to input device id and use it
here? Then your blacklist would be:
#define ACCEL_DEV(vendor, product) \
{ \
.flags = INPUT_DEVICE_ID_MATCH_VENDOR | \
INPUT_DEVICE_ID_MATCH_PRODUCT | \
INPUT_DEVICE_ID_MATCH_PROPBIT, \
.vendor = (vendor), \
.product = (product), \
.propbit[0] = BIT(INPUT_PROP_ACCELEROMETER), \
}
static const struct input_device_id joydev_blacklist {
ACCEL_DEV(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_PS3_CONTROLLER),
ACCEL_DEV(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_PS4_CONTROLLER),
...
{ }
};
Hi Roderick,
On Wed, Oct 11, 2017 at 12:53:53AM +0000, Colenbrander, Roelof wrote:
Hi Dmitry,
Thanks for your suggestions the feedback looks good. Just got back to office after a long weekend, then was surprised to see you already made a few changes to the series. The changes look. Thanks for the assistance!
OK, if that works for you then I will queue it up.
Thanks.
Thanks,
Roderick
________________________________________
From: Dmitry Torokhov [dmitry.torokhov@gmail.com]
Sent: Saturday, October 07, 2017 11:44 AM
To: roderick@gaikai.com
Cc: linux-input@vger.kernel.org; Benjamin Tissoires; Jiri Kosina; Colenbrander, Roelof; stable@vger.kernel.org
Subject: Re: [PATCH 1/1] Input: joydev - blacklist ds3/ds4/udraw motion sensors
Hi Roderick,
On Thu, Oct 05, 2017 at 06:03:33PM -0700, Roderick Colenbrander wrote:
quoted
From: Roderick Colenbrander <roderick.colenbrander@sony.com>
Introduce a device table used for blacklisting devices. We currently
blacklist the motion sensor subdevice of THQ Udraw and Sony ds3/ds4.
Signed-off-by: Roderick Colenbrander <roderick.colenbrander@sony.com>
Cc: stable@vger.kernel.org
---
drivers/input/joydev.c | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 57 insertions(+)
@@ -70,6 +70,40 @@ struct joydev_client {structlist_headnode;};+/* These codes are copied from from hid-ids.h, unfortunately there is no common+*usb_ids/bt_ids.hheader.+*/+#define USB_VENDOR_ID_SONY 0x54c+#define USB_VENDOR_ID_THQ 0x20d6+#define USB_DEVICE_ID_SONY_PS3_CONTROLLER 0x0268+#define USB_DEVICE_ID_SONY_PS4_CONTROLLER 0x05c4+#define USB_DEVICE_ID_SONY_PS4_CONTROLLER_2 0x09cc+#define USB_DEVICE_ID_SONY_PS4_CONTROLLER_DONGLE 0x0ba0+#define USB_DEVICE_ID_THQ_PS3_UDRAW 0xcb17++/* List of devices blacklisted from joydev. A reason for blacklisting a+*deviceistosupport(legacy)softwaresupportingjoydev,butwhichwill+*nevergetupdatedtosupportthesedevicesorfeatures.Anexamplewould+*behandlingofmotionsensors,whichtheseapplicationscouldnothandle+*resultinginundefinedbehavior.+*/+staticconststructjoydev_blacklist{+__u16bustype;+__u16vendor;+__u16product;+unsignedlongpropbit;/* Allow for filtering based on device properties. */+}joydev_blacklist[]={+{BUS_BLUETOOTH,USB_VENDOR_ID_SONY,USB_DEVICE_ID_SONY_PS3_CONTROLLER,BIT(INPUT_PROP_ACCELEROMETER)},+{BUS_BLUETOOTH,USB_VENDOR_ID_SONY,USB_DEVICE_ID_SONY_PS4_CONTROLLER,BIT(INPUT_PROP_ACCELEROMETER)},+{BUS_BLUETOOTH,USB_VENDOR_ID_SONY,USB_DEVICE_ID_SONY_PS4_CONTROLLER_2,BIT(INPUT_PROP_ACCELEROMETER)},+{BUS_USB,USB_VENDOR_ID_SONY,USB_DEVICE_ID_SONY_PS3_CONTROLLER,BIT(INPUT_PROP_ACCELEROMETER)},+{BUS_USB,USB_VENDOR_ID_SONY,USB_DEVICE_ID_SONY_PS4_CONTROLLER,BIT(INPUT_PROP_ACCELEROMETER)},+{BUS_USB,USB_VENDOR_ID_SONY,USB_DEVICE_ID_SONY_PS4_CONTROLLER_2,BIT(INPUT_PROP_ACCELEROMETER)},+{BUS_USB,USB_VENDOR_ID_SONY,USB_DEVICE_ID_SONY_PS4_CONTROLLER_DONGLE,BIT(INPUT_PROP_ACCELEROMETER)},+{BUS_USB,USB_VENDOR_ID_THQ,USB_DEVICE_ID_THQ_PS3_UDRAW,BIT(INPUT_PROP_ACCELEROMETER)},+{0,0,0,0}
I would assume that regardless of connection (USB, BT, SPI, I2C, the
accelerometer in PS4 controller should not be handled by joydev. I
wonder if we should not factor out input device id matching from
input_match_device(), add propbit handling to input device id and use it
here? Then your blacklist would be:
#define ACCEL_DEV(vendor, product) \
{ \
.flags = INPUT_DEVICE_ID_MATCH_VENDOR | \
INPUT_DEVICE_ID_MATCH_PRODUCT | \
INPUT_DEVICE_ID_MATCH_PROPBIT, \
.vendor = (vendor), \
.product = (product), \
.propbit[0] = BIT(INPUT_PROP_ACCELEROMETER), \
}
static const struct input_device_id joydev_blacklist {
ACCEL_DEV(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_PS3_CONTROLLER),
ACCEL_DEV(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_PS4_CONTROLLER),
...
{ }
};
Hi Dmitry,
I would like to confirm that the changes are working correctly. The code
looked code before, but hadn't validated the changes yet. We did so
today and things work accordingly, so I think it is ready to merge.
Thanks for the help!
Thanks,
Roderick
On 10/13/2017 04:50 PM, Dmitry Torokhov wrote:
Hi Roderick,
On Wed, Oct 11, 2017 at 12:53:53AM +0000, Colenbrander, Roelof wrote:
quoted
Hi Dmitry,
Thanks for your suggestions the feedback looks good. Just got back to office after a long weekend, then was surprised to see you already made a few changes to the series. The changes look. Thanks for the assistance!
OK, if that works for you then I will queue it up.
Thanks.
quoted
Thanks,
Roderick
________________________________________
From: Dmitry Torokhov [dmitry.torokhov@gmail.com]
Sent: Saturday, October 07, 2017 11:44 AM
To: roderick@gaikai.com
Cc: linux-input@vger.kernel.org; Benjamin Tissoires; Jiri Kosina; Colenbrander, Roelof; stable@vger.kernel.org
Subject: Re: [PATCH 1/1] Input: joydev - blacklist ds3/ds4/udraw motion sensors
Hi Roderick,
On Thu, Oct 05, 2017 at 06:03:33PM -0700, Roderick Colenbrander wrote:
quoted
From: Roderick Colenbrander <roderick.colenbrander@sony.com>
Introduce a device table used for blacklisting devices. We currently
blacklist the motion sensor subdevice of THQ Udraw and Sony ds3/ds4.
Signed-off-by: Roderick Colenbrander <roderick.colenbrander@sony.com>
Cc: stable@vger.kernel.org
---
drivers/input/joydev.c | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 57 insertions(+)
@@ -70,6 +70,40 @@ struct joydev_client {structlist_headnode;};+/* These codes are copied from from hid-ids.h, unfortunately there is no common+*usb_ids/bt_ids.hheader.+*/+#define USB_VENDOR_ID_SONY 0x54c+#define USB_VENDOR_ID_THQ 0x20d6+#define USB_DEVICE_ID_SONY_PS3_CONTROLLER 0x0268+#define USB_DEVICE_ID_SONY_PS4_CONTROLLER 0x05c4+#define USB_DEVICE_ID_SONY_PS4_CONTROLLER_2 0x09cc+#define USB_DEVICE_ID_SONY_PS4_CONTROLLER_DONGLE 0x0ba0+#define USB_DEVICE_ID_THQ_PS3_UDRAW 0xcb17++/* List of devices blacklisted from joydev. A reason for blacklisting a+*deviceistosupport(legacy)softwaresupportingjoydev,butwhichwill+*nevergetupdatedtosupportthesedevicesorfeatures.Anexamplewould+*behandlingofmotionsensors,whichtheseapplicationscouldnothandle+*resultinginundefinedbehavior.+*/+staticconststructjoydev_blacklist{+__u16bustype;+__u16vendor;+__u16product;+unsignedlongpropbit;/* Allow for filtering based on device properties. */+}joydev_blacklist[]={+{BUS_BLUETOOTH,USB_VENDOR_ID_SONY,USB_DEVICE_ID_SONY_PS3_CONTROLLER,BIT(INPUT_PROP_ACCELEROMETER)},+{BUS_BLUETOOTH,USB_VENDOR_ID_SONY,USB_DEVICE_ID_SONY_PS4_CONTROLLER,BIT(INPUT_PROP_ACCELEROMETER)},+{BUS_BLUETOOTH,USB_VENDOR_ID_SONY,USB_DEVICE_ID_SONY_PS4_CONTROLLER_2,BIT(INPUT_PROP_ACCELEROMETER)},+{BUS_USB,USB_VENDOR_ID_SONY,USB_DEVICE_ID_SONY_PS3_CONTROLLER,BIT(INPUT_PROP_ACCELEROMETER)},+{BUS_USB,USB_VENDOR_ID_SONY,USB_DEVICE_ID_SONY_PS4_CONTROLLER,BIT(INPUT_PROP_ACCELEROMETER)},+{BUS_USB,USB_VENDOR_ID_SONY,USB_DEVICE_ID_SONY_PS4_CONTROLLER_2,BIT(INPUT_PROP_ACCELEROMETER)},+{BUS_USB,USB_VENDOR_ID_SONY,USB_DEVICE_ID_SONY_PS4_CONTROLLER_DONGLE,BIT(INPUT_PROP_ACCELEROMETER)},+{BUS_USB,USB_VENDOR_ID_THQ,USB_DEVICE_ID_THQ_PS3_UDRAW,BIT(INPUT_PROP_ACCELEROMETER)},+{0,0,0,0}
I would assume that regardless of connection (USB, BT, SPI, I2C, the
accelerometer in PS4 controller should not be handled by joydev. I
wonder if we should not factor out input device id matching from
input_match_device(), add propbit handling to input device id and use it
here? Then your blacklist would be:
#define ACCEL_DEV(vendor, product) \
{ \
.flags = INPUT_DEVICE_ID_MATCH_VENDOR | \
INPUT_DEVICE_ID_MATCH_PRODUCT | \
INPUT_DEVICE_ID_MATCH_PROPBIT, \
.vendor = (vendor), \
.product = (product), \
.propbit[0] = BIT(INPUT_PROP_ACCELEROMETER), \
}
static const struct input_device_id joydev_blacklist {
ACCEL_DEV(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_PS3_CONTROLLER),
ACCEL_DEV(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_PS4_CONTROLLER),
...
{ }
};