HID: wacom: generic: Ignore HID_DG_BATTERYSTRENTH == 0
authorJason Gerecke <killertofu@gmail.com>
Fri, 28 Apr 2017 16:25:31 +0000 (09:25 -0700)
committerJiri Kosina <jkosina@suse.cz>
Fri, 5 May 2017 19:46:09 +0000 (21:46 +0200)
AES sensors use the value 0 to indicate "not available" rather than
"completely dead". Such values are often sent for dozens of reports
while the pen is being brought into proximity and can cause userspace
to get the wrong impression about the actual battery state.

Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
Reviewed-by: Ping Cheng <ping.cheng@wacom.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
drivers/hid/wacom_wac.c

index fd989e09ae2deed1ab0e618941f26034d6f5ebdb..70a9e47b215a526eaec31f3dab73740f3c88d531 100644 (file)
@@ -2036,6 +2036,8 @@ static void wacom_wac_pen_event(struct hid_device *hdev, struct hid_field *field
                        wacom_wac->hid_data.sense_state = value;
                return;
        case HID_DG_BATTERYSTRENGTH:
+               if (value == 0) /* "not available" */
+                       break;
                value = value * 100 / (field->logical_maximum - field->logical_minimum);
                wacom_wac->hid_data.battery_capacity = value;
                wacom_wac->hid_data.bat_connected = 1;