On Sun, Mar 18, 2012 at 2:27 PM, Przemo Firszt <prz...@firszt.eu> wrote: > This patch doesn't change the way battery/ac is reported, but the changes are > required to facilitate battery reporting for Intuos4 WL. > wdata->battery_capacity now stores actual battery capacity as opposed to raw > value reported by wacom graphire previously. Power supply state is now stored > in a separate variable - it used to be calculated on-the-fly in > wacom_ac_get_property function. The raw value has to be stored as well to be > able to determine if it has changed. > > Signed-off-by: Przemo Firszt <prz...@firszt.eu>
Reviewed-by: Chris Bagwell <ch...@cnpbagwell.com> > --- > drivers/hid/hid-wacom.c | 34 +++++++++++++++++----------------- > 1 files changed, 17 insertions(+), 17 deletions(-) > > diff --git a/drivers/hid/hid-wacom.c b/drivers/hid/hid-wacom.c > index 067e296..1d19ccb 100644 > --- a/drivers/hid/hid-wacom.c > +++ b/drivers/hid/hid-wacom.c > @@ -42,15 +42,18 @@ struct wacom_data { > __u32 serial; > unsigned char high_speed; > #ifdef CONFIG_HID_WACOM_POWER_SUPPLY > - int battery_capacity; > + __u8 battery_capacity; > + __u8 battery_raw; > + __u8 ps_connected; > struct power_supply battery; > struct power_supply ac; > #endif > }; > > #ifdef CONFIG_HID_WACOM_POWER_SUPPLY > -/*percent of battery capacity, 0 means AC online*/ > -static unsigned short batcap[8] = { 1, 15, 25, 35, 50, 70, 100, 0 }; > +/*percent of battery capacity for Graphire > + 7th value means AC online and show 100% capacity */ > +static unsigned short batcap_gr[8] = { 1, 15, 25, 35, 50, 70, 100, 100 }; > > static enum power_supply_property wacom_battery_props[] = { > POWER_SUPPLY_PROP_PRESENT, > @@ -70,7 +73,6 @@ static int wacom_battery_get_property(struct power_supply > *psy, > { > struct wacom_data *wdata = container_of(psy, > struct wacom_data, battery); > - int power_state = batcap[wdata->battery_capacity]; > int ret = 0; > > switch (psp) { > @@ -81,11 +83,7 @@ static int wacom_battery_get_property(struct power_supply > *psy, > val->intval = POWER_SUPPLY_SCOPE_DEVICE; > break; > case POWER_SUPPLY_PROP_CAPACITY: > - /* show 100% battery capacity when charging */ > - if (power_state == 0) > - val->intval = 100; > - else > - val->intval = power_state; > + val->intval = wdata->battery_capacity; > break; > default: > ret = -EINVAL; > @@ -99,17 +97,13 @@ static int wacom_ac_get_property(struct power_supply *psy, > union power_supply_propval *val) > { > struct wacom_data *wdata = container_of(psy, struct wacom_data, ac); > - int power_state = batcap[wdata->battery_capacity]; > int ret = 0; > > switch (psp) { > case POWER_SUPPLY_PROP_PRESENT: > /* fall through */ > case POWER_SUPPLY_PROP_ONLINE: > - if (power_state == 0) > - val->intval = 1; > - else > - val->intval = 0; > + val->intval = wdata->ps_connected; > break; > case POWER_SUPPLY_PROP_SCOPE: > val->intval = POWER_SUPPLY_SCOPE_DEVICE; > @@ -311,10 +305,16 @@ static int wacom_gr_parse_report(struct hid_device > *hdev, > } > > #ifdef CONFIG_HID_WACOM_POWER_SUPPLY > - /* Store current battery capacity */ > + /* Store current battery capacity and power supply state*/ > rw = (data[7] >> 2 & 0x07); > - if (rw != wdata->battery_capacity) > - wdata->battery_capacity = rw; > + if (rw != wdata->battery_raw) { > + wdata->battery_raw = rw; > + wdata->battery_capacity = batcap_gr[rw]; > + if (rw == 7) > + wdata->ps_connected = 1; > + else > + wdata->ps_connected = 0; > + } > #endif > return 1; > } > -- > 1.7.6.4 > ------------------------------------------------------------------------------ This SF email is sponsosred by: Try Windows Azure free for 90 days Click Here http://p.sf.net/sfu/sfd2d-msazure _______________________________________________ Linuxwacom-devel mailing list Linuxwacom-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel