HID: logitech: move dj devices to the HID++ module
authorBenjamin Tissoires <benjamin.tissoires@redhat.com>
Tue, 30 Sep 2014 17:18:28 +0000 (13:18 -0400)
committerJiri Kosina <jkosina@suse.cz>
Wed, 29 Oct 2014 09:51:39 +0000 (10:51 +0100)
Devices connected through the Logitech Wireless Receiver are HID++ devices.
We can handle them here to benefit from this new module and activate
enhaced support of the various wireless touchpad or mice with touch
sensors on them.

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Tested-by: Andrew de los Reyes <adlr@chromium.org>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
drivers/hid/Kconfig
drivers/hid/hid-logitech-dj.c
drivers/hid/hid-logitech-hidpp.c

index 6f299cd54e6d5c1bc6080d1a93d07991e361cc00..dd49a9b14b9cd49d8aef43d28d7161910fa014f0 100644 (file)
@@ -371,6 +371,7 @@ config HID_LOGITECH_DJ
        tristate "Logitech Unifying receivers full support"
        depends on HIDRAW
        depends on HID_LOGITECH
+       select HID_LOGITECH_HIDPP
        ---help---
        Say Y if you want support for Logitech Unifying receivers and devices.
        Unifying receivers are capable of pairing up to 6 Logitech compliant
index 6aea16dca3ff00295bac63f71c89e9922c252736..45a7eacdfe9875ddcebb3ca05f4d946f2d4059e2 100644 (file)
@@ -977,48 +977,8 @@ static struct hid_driver logi_djreceiver_driver = {
 #endif
 };
 
+module_hid_driver(logi_djreceiver_driver);
 
-static const struct hid_device_id logi_dj_devices[] = {
-       { HID_DEVICE(BUS_USB, HID_GROUP_LOGITECH_DJ_DEVICE,
-               USB_VENDOR_ID_LOGITECH, HID_ANY_ID)},
-       {}
-};
-
-static struct hid_driver logi_djdevice_driver = {
-       .name = "logitech-djdevice",
-       .id_table = logi_dj_devices,
-};
-
-
-static int __init logi_dj_init(void)
-{
-       int retval;
-
-       dbg_hid("Logitech-DJ:%s\n", __func__);
-
-       retval = hid_register_driver(&logi_djreceiver_driver);
-       if (retval)
-               return retval;
-
-       retval = hid_register_driver(&logi_djdevice_driver);
-       if (retval)
-               hid_unregister_driver(&logi_djreceiver_driver);
-
-       return retval;
-
-}
-
-static void __exit logi_dj_exit(void)
-{
-       dbg_hid("Logitech-DJ:%s\n", __func__);
-
-       hid_unregister_driver(&logi_djdevice_driver);
-       hid_unregister_driver(&logi_djreceiver_driver);
-
-}
-
-module_init(logi_dj_init);
-module_exit(logi_dj_exit);
 MODULE_LICENSE("GPL");
 MODULE_AUTHOR("Logitech");
 MODULE_AUTHOR("Nestor Lopez Casado");
index 7dd9163f7e03cc9dd6cbb399e9e4e5e80e1374ca..48dec394dd38fc50d5aa24b7154d55a3ab214e97 100644 (file)
@@ -777,15 +777,17 @@ static int hidpp_probe(struct hid_device *hdev, const struct hid_device_id *id)
        hid_device_io_start(hdev);
 
        connected = hidpp_is_connected(hidpp);
-       if (!connected) {
-               hid_err(hdev, "Device not connected");
-               goto hid_parse_fail;
-       }
+       if (id->group != HID_GROUP_LOGITECH_DJ_DEVICE) {
+               if (!connected) {
+                       hid_err(hdev, "Device not connected");
+                       goto hid_parse_fail;
+               }
 
-       /* the device is connected, we can ask for its name */
-       hid_info(hdev, "HID++ %u.%u device connected.\n",
-                hidpp->protocol_major, hidpp->protocol_minor);
-       hidpp_overwrite_name(hdev);
+               /* the device is connected, we can ask for its name */
+               hid_info(hdev, "HID++ %u.%u device connected.\n",
+                        hidpp->protocol_major, hidpp->protocol_minor);
+               hidpp_overwrite_name(hdev);
+       }
 
        if (hidpp->quirks & HIDPP_QUIRK_CLASS_WTP) {
                ret = wtp_get_config(hidpp);
@@ -824,6 +826,9 @@ static const struct hid_device_id hidpp_devices[] = {
          HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_LOGITECH,
                USB_DEVICE_ID_LOGITECH_T651),
          .driver_data = HIDPP_QUIRK_CLASS_WTP },
+
+       { HID_DEVICE(BUS_USB, HID_GROUP_LOGITECH_DJ_DEVICE,
+               USB_VENDOR_ID_LOGITECH, HID_ANY_ID)},
        {}
 };