Re: [PATCH] HID: wacom: Correct power_supply type

From: Jason Gerecke
Date: Mon Apr 11 2022 - 14:51:57 EST


It seems that the USB type was chosen to fit into a upower heuristic
that still exists (see [1], [2]). Looking at the upower code I suspect
that swapping to the Battery type will at least cause
"UP_DEVICE_KIND_TABLET" to no longer be used for our dongle-based
wireless devices (Bluetooth-based might still be fine though). We
haven't sold dongle-based devices in a while, but they're definitely
still out there. If the batteries in those devices are seen as system
batteries that could cause a problem -- e.g. triggering hibernation
when the tablet battery gets low.

I think it would be wise to test this first to see if there's any
obvious real-world fallout from the change...

[1]: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=96983296281507f049425b84f0d244c40d506eba
[2]: https://cgit.freedesktop.org/upower/tree/src/linux/up-device-supply.c

Jason
---
Now instead of four in the eights place /
you’ve got three, ‘Cause you added one /
(That is to say, eight) to the two, /
But you can’t take seven from three, /
So you look at the sixty-fours....



On Thu, Apr 7, 2022 at 1:52 PM Bastien Nocera <hadess@xxxxxxxxxx> wrote:
>
> POWER_SUPPLY_TYPE_USB seems to only ever be used by USB ports that are
> used to charge the machine itself (so a "system" scope), like the
> single USB port on a phone, rather than devices.
>
> The wacom_sys driver is the only driver that sets its device battery as
> being a USB type, which doesn't seem correct based on its usage, so
> switch it to be a battery type like all the other USB-connected devices.
>
> Signed-off-by: Bastien Nocera <hadess@xxxxxxxxxx>
> ---
> drivers/hid/wacom_sys.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/hid/wacom_sys.c b/drivers/hid/wacom_sys.c
> index 066c567dbaa2..620fe74f5676 100644
> --- a/drivers/hid/wacom_sys.c
> +++ b/drivers/hid/wacom_sys.c
> @@ -1777,7 +1777,7 @@ static int __wacom_initialize_battery(struct wacom *wacom,
> bat_desc->get_property = wacom_battery_get_property;
> sprintf(battery->bat_name, "wacom_battery_%ld", n);
> bat_desc->name = battery->bat_name;
> - bat_desc->type = POWER_SUPPLY_TYPE_USB;
> + bat_desc->type = POWER_SUPPLY_TYPE_BATTERY;
> bat_desc->use_for_apm = 0;
>
> ps_bat = devm_power_supply_register(dev, bat_desc, &psy_cfg);
> --
> 2.35.1
>