Skip to content

Commit 4546bff

Browse files
committed
HID: wacom: generic: Set battery quirk only when we see battery data
Some devices will include battery status usages in the HID descriptor but we won't see that battery data for one reason or another. For example, AES sensors won't send battery data unless an AES pen is in proximity. If a user does not have an AES pen but instead only interacts with the AES touchscreen with their fingers then there is no need for us to create a battery object. Similarly, if a family of peripherals shares the same HID descriptor between wired-only and wireless-capable SKUs, users of the former may never see a battery event and will not want a power_supply object created. Link: https://bugzilla.kernel.org/show_bug.cgi?id=217062 Link: https://gitlab.gnome.org/GNOME/gnome-control-center/-/issues/2354 Signed-off-by: Jason Gerecke <[email protected]> Tested-by: Mario Limonciello <[email protected]> Signed-off-by: Jiri Kosina <[email protected]> [[email protected]: Imported into input-wacom (bea407a427ba)] Signed-off-by: Jason Gerecke <[email protected]>
1 parent c6c30f5 commit 4546bff

File tree

1 file changed

+11
-22
lines changed

1 file changed

+11
-22
lines changed

4.5/wacom_wac.c

Lines changed: 11 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1991,18 +1991,7 @@ static void wacom_map_usage(struct input_dev *input, struct hid_usage *usage,
19911991
static void wacom_wac_battery_usage_mapping(struct hid_device *hdev,
19921992
struct hid_field *field, struct hid_usage *usage)
19931993
{
1994-
struct wacom *wacom = hid_get_drvdata(hdev);
1995-
struct wacom_wac *wacom_wac = &wacom->wacom_wac;
1996-
struct wacom_features *features = &wacom_wac->features;
1997-
unsigned equivalent_usage = wacom_equivalent_usage(usage->hid);
1998-
1999-
switch (equivalent_usage) {
2000-
case HID_DG_BATTERYSTRENGTH:
2001-
case WACOM_HID_WD_BATTERY_LEVEL:
2002-
case WACOM_HID_WD_BATTERY_CHARGING:
2003-
features->quirks |= WACOM_QUIRK_BATTERY;
2004-
break;
2005-
}
1994+
return;
20061995
}
20071996

20081997
static void wacom_wac_battery_event(struct hid_device *hdev, struct hid_field *field,
@@ -2023,18 +2012,21 @@ static void wacom_wac_battery_event(struct hid_device *hdev, struct hid_field *f
20232012
wacom_wac->hid_data.bat_connected = 1;
20242013
wacom_wac->hid_data.bat_status = WACOM_POWER_SUPPLY_STATUS_AUTO;
20252014
}
2015+
wacom_wac->features.quirks |= WACOM_QUIRK_BATTERY;
20262016
break;
20272017
case WACOM_HID_WD_BATTERY_LEVEL:
20282018
value = value * 100 / (field->logical_maximum - field->logical_minimum);
20292019
wacom_wac->hid_data.battery_capacity = value;
20302020
wacom_wac->hid_data.bat_connected = 1;
20312021
wacom_wac->hid_data.bat_status = WACOM_POWER_SUPPLY_STATUS_AUTO;
2022+
wacom_wac->features.quirks |= WACOM_QUIRK_BATTERY;
20322023
break;
20332024
case WACOM_HID_WD_BATTERY_CHARGING:
20342025
wacom_wac->hid_data.bat_charging = value;
20352026
wacom_wac->hid_data.ps_connected = value;
20362027
wacom_wac->hid_data.bat_connected = 1;
20372028
wacom_wac->hid_data.bat_status = WACOM_POWER_SUPPLY_STATUS_AUTO;
2029+
wacom_wac->features.quirks |= WACOM_QUIRK_BATTERY;
20382030
break;
20392031
}
20402032
}
@@ -2050,18 +2042,15 @@ static void wacom_wac_battery_report(struct hid_device *hdev,
20502042
{
20512043
struct wacom *wacom = hid_get_drvdata(hdev);
20522044
struct wacom_wac *wacom_wac = &wacom->wacom_wac;
2053-
struct wacom_features *features = &wacom_wac->features;
20542045

2055-
if (features->quirks & WACOM_QUIRK_BATTERY) {
2056-
int status = wacom_wac->hid_data.bat_status;
2057-
int capacity = wacom_wac->hid_data.battery_capacity;
2058-
bool charging = wacom_wac->hid_data.bat_charging;
2059-
bool connected = wacom_wac->hid_data.bat_connected;
2060-
bool powered = wacom_wac->hid_data.ps_connected;
2046+
int status = wacom_wac->hid_data.bat_status;
2047+
int capacity = wacom_wac->hid_data.battery_capacity;
2048+
bool charging = wacom_wac->hid_data.bat_charging;
2049+
bool connected = wacom_wac->hid_data.bat_connected;
2050+
bool powered = wacom_wac->hid_data.ps_connected;
20612051

2062-
wacom_notify_battery(wacom_wac, status, capacity, charging,
2063-
connected, powered);
2064-
}
2052+
wacom_notify_battery(wacom_wac, status, capacity, charging,
2053+
connected, powered);
20652054
}
20662055

20672056
static void wacom_wac_pad_usage_mapping(struct hid_device *hdev,

0 commit comments

Comments
 (0)