]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
HID: core: reset the quirks before calling probe again
authorBenjamin Tissoires <benjamin.tissoires@redhat.com>
Tue, 20 Mar 2018 11:04:51 +0000 (12:04 +0100)
committerJiri Kosina <jkosina@suse.cz>
Fri, 23 Mar 2018 14:46:09 +0000 (15:46 +0100)
Given that now the quirk handling is done in hid-quirk.c, we can actually
reset the quirks before calling .probe(), so that the drivers do not need
to keep track of initial quirks.

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Acked-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
drivers/hid/hid-core.c
drivers/hid/hid-multitouch.c

index c2560aae55420860430b9a5aa1a41f93aa701474..fdb8b6ed6d4cd9e03c6b3efacbb6a6b2ea6d7117 100644 (file)
@@ -1966,6 +1966,8 @@ static int hid_device_probe(struct device *dev)
                        }
                }
 
+               /* reset the quirks that has been previously set */
+               hdev->quirks = hid_lookup_quirk(hdev);
                hdev->driver = hdrv;
                if (hdrv->probe) {
                        ret = hdrv->probe(hdev, id);
index f05d372ba71e62e5be8de29e59017bfbb338e28c..6ae2d14146b3b22eb50ff2a94bdfcb4b2ba41d56 100644 (file)
@@ -127,7 +127,6 @@ struct mt_device {
        int left_button_state;  /* left button state */
        unsigned last_slot_field;       /* the last field of a slot */
        unsigned mt_report_id;  /* the report ID of the multitouch device */
-       unsigned long initial_quirks;   /* initial quirks state */
        __s16 inputmode;        /* InputMode HID feature, -1 if non-existent */
        __s16 inputmode_index;  /* InputMode HID feature index in the report */
        __s16 maxcontact_report_id;     /* Maximum Contact Number HID feature,
@@ -1452,11 +1451,6 @@ static int mt_probe(struct hid_device *hdev, const struct hid_device_id *id)
        if (id->vendor == HID_ANY_ID && id->product == HID_ANY_ID)
                td->serial_maybe = true;
 
-       /*
-        * Store the initial quirk state
-        */
-       td->initial_quirks = hdev->quirks;
-
        /* This allows the driver to correctly support devices
         * that emit events over several HID messages.
         */
@@ -1526,7 +1520,6 @@ static void mt_remove(struct hid_device *hdev)
 
        sysfs_remove_group(&hdev->dev.kobj, &mt_attribute_group);
        hid_hw_stop(hdev);
-       hdev->quirks = td->initial_quirks;
 }
 
 /*