HID: core: reset the quirks before calling probe again
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>
This commit is contained in:

committed by
Jiri Kosina

parent
adaabbf48f
commit
2904e68ff2
@@ -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;
|
hdev->driver = hdrv;
|
||||||
if (hdrv->probe) {
|
if (hdrv->probe) {
|
||||||
ret = hdrv->probe(hdev, id);
|
ret = hdrv->probe(hdev, id);
|
||||||
|
@@ -127,7 +127,6 @@ struct mt_device {
|
|||||||
int left_button_state; /* left button state */
|
int left_button_state; /* left button state */
|
||||||
unsigned last_slot_field; /* the last field of a slot */
|
unsigned last_slot_field; /* the last field of a slot */
|
||||||
unsigned mt_report_id; /* the report ID of the multitouch device */
|
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; /* InputMode HID feature, -1 if non-existent */
|
||||||
__s16 inputmode_index; /* InputMode HID feature index in the report */
|
__s16 inputmode_index; /* InputMode HID feature index in the report */
|
||||||
__s16 maxcontact_report_id; /* Maximum Contact Number HID feature,
|
__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)
|
if (id->vendor == HID_ANY_ID && id->product == HID_ANY_ID)
|
||||||
td->serial_maybe = true;
|
td->serial_maybe = true;
|
||||||
|
|
||||||
/*
|
|
||||||
* Store the initial quirk state
|
|
||||||
*/
|
|
||||||
td->initial_quirks = hdev->quirks;
|
|
||||||
|
|
||||||
/* This allows the driver to correctly support devices
|
/* This allows the driver to correctly support devices
|
||||||
* that emit events over several HID messages.
|
* 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);
|
sysfs_remove_group(&hdev->dev.kobj, &mt_attribute_group);
|
||||||
hid_hw_stop(hdev);
|
hid_hw_stop(hdev);
|
||||||
hdev->quirks = td->initial_quirks;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Reference in New Issue
Block a user