Re: [PATCH 1/2] HID: logitech-hidpp: add battery support for HID++ 2.0 devices

From: Peter Hutterer
Date: Wed Jul 13 2016 - 01:22:05 EST


On Fri, Jul 08, 2016 at 04:35:45PM +0200, Bastien Nocera wrote:
> On Wed, 2016-06-29 at 19:28 +1000, Peter Hutterer wrote:
> > +static int hidpp_battery_get_property(struct power_supply *psy,
> > +                                     enum power_supply_property psp,
> > +                                     union power_supply_propval
> > *val)
> > +{
> > +       struct hidpp_device *hidpp = power_supply_get_drvdata(psy);
> > +       int ret = 0;
> > +
> > +       switch(psp) {
> > +               case POWER_SUPPLY_PROP_STATUS:
> > +                       val->intval = hidpp->battery.status;
> > +                       break;
> > +               case POWER_SUPPLY_PROP_CAPACITY:
> > +                       val->intval = hidpp->battery.level;
> > +                       break;
> > +               default:
>
> You forgot to handle POWER_SUPPLY_PROP_SCOPE. This means that UPower
> thinks it's supplying power to the computer to which it is connected.
>
> Should be set to "POWER_SUPPLY_SCOPE_DEVICE". This should fix it.
>
> From 8fbfcfd411a4b2c55ec24adc8b8ecc0bca2db5e3 Mon Sep 17 00:00:00 2001
> From: Bastien Nocera <hadess@xxxxxxxxxx>
> Date: Fri, 8 Jul 2016 16:34:18 +0200
> Subject: [PATCH] HID: logitech-hidpp: Add scope to battery
>
> Without a scope defined, UPower assumes that the battery is provide
> power to the computer it's connected to, like a laptop battery or a UPS.
>
> Signed-off-by: Bastien Nocera <hadess@xxxxxxxxxx>

Tested-by: Peter Hutterer <peter.hutterer@xxxxxxxxx>

Cheers,
Peter

> ---
> drivers/hid/hid-logitech-hidpp.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/drivers/hid/hid-logitech-hidpp.c b/drivers/hid/hid-logitech-hidpp.c
> index 4eeb550..4aaf237 100644
> --- a/drivers/hid/hid-logitech-hidpp.c
> +++ b/drivers/hid/hid-logitech-hidpp.c
> @@ -761,6 +761,7 @@ static int hidpp20_battery_event(struct hidpp_device *hidpp,
> static enum power_supply_property hidpp_battery_props[] = {
> POWER_SUPPLY_PROP_STATUS,
> POWER_SUPPLY_PROP_CAPACITY,
> + POWER_SUPPLY_PROP_SCOPE,
> };
>
> static int hidpp_battery_get_property(struct power_supply *psy,
> @@ -777,6 +778,9 @@ static int hidpp_battery_get_property(struct power_supply *psy,
> case POWER_SUPPLY_PROP_CAPACITY:
> val->intval = hidpp->battery.level;
> break;
> + case POWER_SUPPLY_PROP_SCOPE:
> + val->intval = POWER_SUPPLY_SCOPE_DEVICE;
> + break;
> default:
> ret = -EINVAL;
> break;
> --
> 2.7.4
>