HID: wacom: Do not warn about dropped packets for first packet
[ Upstream commit84aecf2d25] The driver currently assumes that the first sequence number it will see is going to be 0. This is not a realiable assumption and can break if, for example, the tablet has already been running for some time prior to the kernel driver connecting to the device. This commit initializes the expected sequence number to -1 and will only print the "Dropped" warning the it has been updated to a non-negative value. Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com> Tested-by: Joshua Dickens <joshua.dickens@wacom.com> Fixes:6d09085b38("HID: wacom: Adding Support for new usages") Signed-off-by: Jiri Kosina <jkosina@suse.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
c53345e926
commit
09ed537092
@@ -2365,6 +2365,9 @@ static void wacom_wac_pen_usage_mapping(struct hid_device *hdev,
|
||||
wacom_map_usage(input, usage, field, EV_KEY, BTN_STYLUS3, 0);
|
||||
features->quirks &= ~WACOM_QUIRK_PEN_BUTTON3;
|
||||
break;
|
||||
case WACOM_HID_WD_SEQUENCENUMBER:
|
||||
wacom_wac->hid_data.sequence_number = -1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2489,7 +2492,8 @@ static void wacom_wac_pen_event(struct hid_device *hdev, struct hid_field *field
|
||||
wacom_wac->hid_data.barrelswitch3 = value;
|
||||
return;
|
||||
case WACOM_HID_WD_SEQUENCENUMBER:
|
||||
if (wacom_wac->hid_data.sequence_number != value) {
|
||||
if (wacom_wac->hid_data.sequence_number != value &&
|
||||
wacom_wac->hid_data.sequence_number >= 0) {
|
||||
int sequence_size = field->logical_maximum - field->logical_minimum + 1;
|
||||
int drop_count = (value - wacom_wac->hid_data.sequence_number) % sequence_size;
|
||||
hid_warn(hdev, "Dropped %d packets", drop_count);
|
||||
|
||||
@@ -324,7 +324,7 @@ struct hid_data {
|
||||
int bat_connected;
|
||||
int ps_connected;
|
||||
bool pad_input_event_flag;
|
||||
unsigned short sequence_number;
|
||||
int sequence_number;
|
||||
ktime_t time_delayed;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user