Merge branches 'for-5.2/fixes', 'for-5.3/doc', 'for-5.3/ish', 'for-5.3/logitech'...
[sfrench/cifs-2.6.git] / drivers / hid / hid-logitech-dj.c
index e564bff865159af9c7bf4631f52cef9a209d536d..6196217a7d936c6371743354619c3564cd9e0c69 100644 (file)
@@ -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
@@ -1102,12 +1103,14 @@ static int logi_dj_recv_send_report(struct dj_receiver_dev *djrcv_dev,
 
 static int logi_dj_recv_query_hidpp_devices(struct dj_receiver_dev *djrcv_dev)
 {
-       const u8 template[] = {REPORT_ID_HIDPP_SHORT,
-                              HIDPP_RECEIVER_INDEX,
-                              HIDPP_SET_REGISTER,
-                              HIDPP_REG_CONNECTION_STATE,
-                              HIDPP_FAKE_DEVICE_ARRIVAL,
-                              0x00, 0x00};
+       static const u8 template[] = {
+               REPORT_ID_HIDPP_SHORT,
+               HIDPP_RECEIVER_INDEX,
+               HIDPP_SET_REGISTER,
+               HIDPP_REG_CONNECTION_STATE,
+               HIDPP_FAKE_DEVICE_ARRIVAL,
+               0x00, 0x00
+       };
        u8 *hidpp_report;
        int retval;
 
@@ -1122,7 +1125,7 @@ static int logi_dj_recv_query_hidpp_devices(struct dj_receiver_dev *djrcv_dev)
                                    HID_REQ_SET_REPORT);
 
        kfree(hidpp_report);
-       return 0;
+       return retval;
 }
 
 static int logi_dj_recv_query_paired_devices(struct dj_receiver_dev *djrcv_dev)
@@ -1242,7 +1245,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;
 
@@ -1832,6 +1836,9 @@ static const struct hid_device_id logi_dj_receivers[] = {
          HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH,
                USB_DEVICE_ID_LOGITECH_NANO_RECEIVER_GAMING),
         .driver_data = recvr_type_gaming_hidpp},
+       { /* Logitech 27 MHz HID++ 1.0 receiver (0xc513) */
+         HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_MX3000_RECEIVER),
+        .driver_data = recvr_type_27mhz},
        { /* Logitech 27 MHz HID++ 1.0 receiver (0xc517) */
          HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH,
                USB_DEVICE_ID_S510_RECEIVER_2),