Hi Arnaud, > The Sixaxis and Dualshock 4 wants report sent via the ctrl channel. > > This patch has been used in the SteamOS kernel for a while now. > <https://github.com/ValveSoftware/steamos_kernel/commit/6e215b67a13c85d0cf5a9e0970acd9df7d2b77bd> > > Signed-off-by: Vivek Das Mohapatra <vivek@xxxxxxxxxxxxx> > Signed-off-by: Arnaud Rebillout <arnaud.rebillout@xxxxxxxxxxxxx> > --- > net/bluetooth/hidp/core.c | 13 ++++++++++--- > 1 file changed, 10 insertions(+), 3 deletions(-) > > diff --git a/net/bluetooth/hidp/core.c b/net/bluetooth/hidp/core.c > index 1036e4fa1ea2..fa75da91a559 100644 > --- a/net/bluetooth/hidp/core.c > +++ b/net/bluetooth/hidp/core.c > @@ -379,9 +379,16 @@ static int hidp_output_report(struct hid_device *hid, __u8 *data, size_t count) > { > struct hidp_session *session = hid->driver_data; > > - return hidp_send_intr_message(session, > - HIDP_TRANS_DATA | HIDP_DATA_RTYPE_OUPUT, > - data, count); > + /* The Sixaxis and Dualshock 4 wants report sent via the ctrl channel */ > + if (hid->vendor == 0x54c && (hid->product == 0x5c4 || hid->product == 0x268)) { > + return hidp_send_ctrl_message(session, > + HIDP_TRANS_SET_REPORT | HIDP_DATA_RTYPE_OUPUT, > + data, count); > + } else { > + return hidp_send_intr_message(session, > + HIDP_TRANS_DATA | HIDP_DATA_RTYPE_OUPUT, > + data, count); > + } > } see the comment from Bastien, the HIDP layer is just a transport layer and should really not need to know about device specific quirks. Seems these quirks could be easily handled one layer about where the right channel is selected. Regards Marcel -- To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html