Skip to content

Commit bea407a

Browse files
jigpuJiri Kosina
authored andcommitted
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 <jason.gerecke@wacom.com> Tested-by: Mario Limonciello <mario.limonciello@amd.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
1 parent 7fc6865 commit bea407a

File tree

1 file changed

+11
-22
lines changed

1 file changed

+11
-22
lines changed

drivers/hid/wacom_wac.c

Lines changed: 11 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1968,18 +1968,7 @@ static void wacom_map_usage(struct input_dev *input, struct hid_usage *usage,
19681968
static void wacom_wac_battery_usage_mapping(struct hid_device *hdev,
19691969
struct hid_field *field, struct hid_usage *usage)
19701970
{
1971-
struct wacom *wacom = hid_get_drvdata(hdev);
1972-
struct wacom_wac *wacom_wac = &wacom->wacom_wac;
1973-
struct wacom_features *features = &wacom_wac->features;
1974-
unsigned equivalent_usage = wacom_equivalent_usage(usage->hid);
1975-
1976-
switch (equivalent_usage) {
1977-
case HID_DG_BATTERYSTRENGTH:
1978-
case WACOM_HID_WD_BATTERY_LEVEL:
1979-
case WACOM_HID_WD_BATTERY_CHARGING:
1980-
features->quirks |= WACOM_QUIRK_BATTERY;
1981-
break;
1982-
}
1971+
return;
19831972
}
19841973

19851974
static void wacom_wac_battery_event(struct hid_device *hdev, struct hid_field *field,
@@ -2000,18 +1989,21 @@ static void wacom_wac_battery_event(struct hid_device *hdev, struct hid_field *f
20001989
wacom_wac->hid_data.bat_connected = 1;
20011990
wacom_wac->hid_data.bat_status = WACOM_POWER_SUPPLY_STATUS_AUTO;
20021991
}
1992+
wacom_wac->features.quirks |= WACOM_QUIRK_BATTERY;
20031993
break;
20041994
case WACOM_HID_WD_BATTERY_LEVEL:
20051995
value = value * 100 / (field->logical_maximum - field->logical_minimum);
20061996
wacom_wac->hid_data.battery_capacity = value;
20071997
wacom_wac->hid_data.bat_connected = 1;
20081998
wacom_wac->hid_data.bat_status = WACOM_POWER_SUPPLY_STATUS_AUTO;
1999+
wacom_wac->features.quirks |= WACOM_QUIRK_BATTERY;
20092000
break;
20102001
case WACOM_HID_WD_BATTERY_CHARGING:
20112002
wacom_wac->hid_data.bat_charging = value;
20122003
wacom_wac->hid_data.ps_connected = value;
20132004
wacom_wac->hid_data.bat_connected = 1;
20142005
wacom_wac->hid_data.bat_status = WACOM_POWER_SUPPLY_STATUS_AUTO;
2006+
wacom_wac->features.quirks |= WACOM_QUIRK_BATTERY;
20152007
break;
20162008
}
20172009
}
@@ -2027,18 +2019,15 @@ static void wacom_wac_battery_report(struct hid_device *hdev,
20272019
{
20282020
struct wacom *wacom = hid_get_drvdata(hdev);
20292021
struct wacom_wac *wacom_wac = &wacom->wacom_wac;
2030-
struct wacom_features *features = &wacom_wac->features;
20312022

2032-
if (features->quirks & WACOM_QUIRK_BATTERY) {
2033-
int status = wacom_wac->hid_data.bat_status;
2034-
int capacity = wacom_wac->hid_data.battery_capacity;
2035-
bool charging = wacom_wac->hid_data.bat_charging;
2036-
bool connected = wacom_wac->hid_data.bat_connected;
2037-
bool powered = wacom_wac->hid_data.ps_connected;
2023+
int status = wacom_wac->hid_data.bat_status;
2024+
int capacity = wacom_wac->hid_data.battery_capacity;
2025+
bool charging = wacom_wac->hid_data.bat_charging;
2026+
bool connected = wacom_wac->hid_data.bat_connected;
2027+
bool powered = wacom_wac->hid_data.ps_connected;
20382028

2039-
wacom_notify_battery(wacom_wac, status, capacity, charging,
2040-
connected, powered);
2041-
}
2029+
wacom_notify_battery(wacom_wac, status, capacity, charging,
2030+
connected, powered);
20422031
}
20432032

20442033
static void wacom_wac_pad_usage_mapping(struct hid_device *hdev,

0 commit comments

Comments
 (0)