diff mbox series

HID: logitech-dj: Fix forwarding of very long HID++ reports

Message ID 20190614082027.4270-2-hdegoede@redhat.com (mailing list archive)
State Mainlined
Commit 3a9a2c86ce6e06dda23fb1e7f7745acaf6d5d0eb
Delegated to: Jiri Kosina
Headers show
Series HID: logitech-dj: Fix forwarding of very long HID++ reports | expand

Commit Message

Hans de Goede June 14, 2019, 8:20 a.m. UTC
The HID++ spec also defines very long HID++ reports, with a reportid of
0x12. The MX5000 and MX5500 keyboards use 0x12 output reports for sending
messages to display on their buildin LCD.

Userspace (libmx5000) supports this, in order for this to work when talking
to the HID devices instantiated for the keyboard by hid-logitech-dj,
we need to properly forward these reports to the device.

This commit fixes logi_dj_ll_raw_request not forwarding these reports.

Fixes: f2113c3020ef ("HID: logitech-dj: add support for Logitech Bluetooth Mini-Receiver")
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
 drivers/hid/hid-logitech-dj.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Comments

Jiri Kosina June 26, 2019, 12:03 p.m. UTC | #1
On Fri, 14 Jun 2019, Hans de Goede wrote:

> The HID++ spec also defines very long HID++ reports, with a reportid of
> 0x12. The MX5000 and MX5500 keyboards use 0x12 output reports for sending
> messages to display on their buildin LCD.
> 
> Userspace (libmx5000) supports this, in order for this to work when talking
> to the HID devices instantiated for the keyboard by hid-logitech-dj,
> we need to properly forward these reports to the device.
> 
> This commit fixes logi_dj_ll_raw_request not forwarding these reports.
> 
> Fixes: f2113c3020ef ("HID: logitech-dj: add support for Logitech Bluetooth Mini-Receiver")
> Signed-off-by: Hans de Goede <hdegoede@redhat.com>

Applied to for-5.2/fixes. Thanks,
diff mbox series

Patch

diff --git a/drivers/hid/hid-logitech-dj.c b/drivers/hid/hid-logitech-dj.c
index 865b179d0a62..aedbe18182db 100644
--- a/drivers/hid/hid-logitech-dj.c
+++ b/drivers/hid/hid-logitech-dj.c
@@ -30,6 +30,7 @@ 
 
 #define REPORT_ID_HIDPP_SHORT			0x10
 #define REPORT_ID_HIDPP_LONG			0x11
+#define REPORT_ID_HIDPP_VERY_LONG		0x12
 
 #define HIDPP_REPORT_SHORT_LENGTH		7
 #define HIDPP_REPORT_LONG_LENGTH		20
@@ -1242,7 +1243,8 @@  static int logi_dj_ll_raw_request(struct hid_device *hid,
 	int ret;
 
 	if ((buf[0] == REPORT_ID_HIDPP_SHORT) ||
-	    (buf[0] == REPORT_ID_HIDPP_LONG)) {
+	    (buf[0] == REPORT_ID_HIDPP_LONG) ||
+	    (buf[0] == REPORT_ID_HIDPP_VERY_LONG)) {
 		if (count < 2)
 			return -EINVAL;