The Dualshock 4 wants reports with type 0x52 sent on the ctrlchannel when running over bluetooth. This adds a special case so that the reports can be successfully sent. Signed-off-by: Frank Praznik <frank.praznik@xxxxxxxxx> --- net/bluetooth/hidp/core.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/net/bluetooth/hidp/core.c b/net/bluetooth/hidp/core.c index 292e619..e597e3f 100644 --- a/net/bluetooth/hidp/core.c +++ b/net/bluetooth/hidp/core.c @@ -360,9 +360,17 @@ static int hidp_output_raw_report(struct hid_device *hid, unsigned char *data, s int ret; if (report_type == HID_OUTPUT_REPORT) { - report_type = HIDP_TRANS_DATA | HIDP_DATA_RTYPE_OUPUT; - return hidp_send_intr_message(session, report_type, + /* The Dualshock 4 wants report type 0x52 sent via the ctrl channel */ + if(hid->vendor == 0x54c && hid->product == 0x5c4) { + report_type = HIDP_TRANS_SET_REPORT | HIDP_DATA_RTYPE_OUPUT; + return hidp_send_ctrl_message(session, report_type, data, count); + } + else { + report_type = HIDP_TRANS_DATA | HIDP_DATA_RTYPE_OUPUT; + return hidp_send_intr_message(session, report_type, + data, count); + } } else if (report_type != HID_FEATURE_REPORT) { return -EINVAL; } -- 1.8.4.2 -- 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