HID: wacom: Remove WACOM_QUIRK_NO_INPUT
authorJason Gerecke <killertofu@gmail.com>
Mon, 3 Aug 2015 17:17:05 +0000 (10:17 -0700)
committerJiri Kosina <jkosina@suse.com>
Tue, 4 Aug 2015 13:39:21 +0000 (15:39 +0200)
WACOM_QUIRK_NO_INPUT is a signal to the driver that input devices
should not be created for a particular device. This quirk was used by
the wireless receiver to prevent any devices from being created during
the initial probe (defering it instead until we got a tablet connection
event in 'wacom_wireless_work').

This quirk is not necessary now that a device_type is associated with each
device. Any input device allocated by 'wacom_allocate_inputs' which is
not necessary for a particular device is freed in 'wacom_register_inputs'.
In particular, none of the wireless receivers devices have the pen, pad,
or touch device types set so the same effect is achieved without the need
to be explicit.

We now return early in wacom_retrieve_hid_descriptor for wireless devices
(to prevent the device_type from being overridden) but since we ignore the
HID descriptor for the wireless reciever anyway, this is not an issue.

Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Jiri Kosina <jkosina@suse.com>
drivers/hid/wacom_sys.c
drivers/hid/wacom_wac.c
drivers/hid/wacom_wac.h

index 13834bae227cc2ac6c440c39718b89b6a68bb7ea..20d15c5fccecdf939f777937d13a030c73da2394 100644 (file)
@@ -453,11 +453,11 @@ static void wacom_retrieve_hid_descriptor(struct hid_device *hdev,
         * interface number.
         */
        if (features->type == WIRELESS) {
-               if (intf->cur_altsetting->desc.bInterfaceNumber == 0) {
+               if (intf->cur_altsetting->desc.bInterfaceNumber == 0)
                        features->device_type = WACOM_DEVICETYPE_WL_MONITOR;
-               } else if (intf->cur_altsetting->desc.bInterfaceNumber == 2) {
-                       features->device_type |= WACOM_DEVICETYPE_TOUCH;
-               }
+               else
+                       features->device_type = WACOM_DEVICETYPE_NONE;
+               return;
        }
 
        wacom_parse_hid(hdev, features);
@@ -1531,11 +1531,9 @@ static int wacom_probe(struct hid_device *hdev,
        mutex_init(&wacom->lock);
        INIT_WORK(&wacom->work, wacom_wireless_work);
 
-       if (!(features->quirks & WACOM_QUIRK_NO_INPUT)) {
-               error = wacom_allocate_inputs(wacom);
-               if (error)
-                       goto fail_allocate_inputs;
-       }
+       error = wacom_allocate_inputs(wacom);
+       if (error)
+               goto fail_allocate_inputs;
 
        /*
         * Bamboo Pad has a generic hid handling for the Pen, and we switch it
@@ -1588,11 +1586,9 @@ static int wacom_probe(struct hid_device *hdev,
                        goto fail_battery;
        }
 
-       if (!(features->quirks & WACOM_QUIRK_NO_INPUT)) {
-               error = wacom_register_inputs(wacom);
-               if (error)
-                       goto fail_register_inputs;
-       }
+       error = wacom_register_inputs(wacom);
+       if (error)
+               goto fail_register_inputs;
 
        if (hdev->bus == BUS_BLUETOOTH) {
                error = device_create_file(&hdev->dev, &dev_attr_speed);
index 82bb0d38fc8d4fb4fdf21c1ca1139dc10f9f7cbc..4d11c7857e70702553ea3a14686ab75b69f44c7b 100644 (file)
@@ -2326,10 +2326,6 @@ void wacom_setup_device_quirks(struct wacom *wacom)
        }
 
        if (features->type == WIRELESS) {
-
-               /* monitor never has input and pen/touch have delayed create */
-               features->quirks |= WACOM_QUIRK_NO_INPUT;
-
                if (features->device_type == WACOM_DEVICETYPE_WL_MONITOR) {
                        features->quirks |= WACOM_QUIRK_BATTERY;
                }
index 87df674e210cfdd027afd9f840f1d2bc70228cdc..6233eeab028dd04374aa917995174931d345df72 100644 (file)
@@ -68,7 +68,6 @@
 
 /* device quirks */
 #define WACOM_QUIRK_BBTOUCH_LOWRES     0x0001
-#define WACOM_QUIRK_NO_INPUT           0x0002
 #define WACOM_QUIRK_BATTERY            0x0008
 
 /* device types */