On Sun, Mar 18, 2012 at 2:27 PM, Przemo Firszt <[email protected]> wrote:
> This patch adds battery/ac reporting for Intuos4 WL. It uses existing
> sysfs code, but the device reports battery capacity in more fine-grained way,
> so there has to be a separate lookup table (called batcap_i4).
>
> Signed-off-by: Przemo Firszt <[email protected]>
> ---
> drivers/hid/hid-wacom.c | 12 ++++++++++++
> 1 files changed, 12 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/hid/hid-wacom.c b/drivers/hid/hid-wacom.c
> index 1d19ccb..2c89c8a 100644
> --- a/drivers/hid/hid-wacom.c
> +++ b/drivers/hid/hid-wacom.c
> @@ -54,6 +54,8 @@ struct wacom_data {
> /*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 };
> +/*percent of battery capacity for Intuos4 WL, AC has a separate bit*/
> +static unsigned short batcap_i4[8] = { 1, 15, 30, 45, 60, 70, 85, 100 };
>
> static enum power_supply_property wacom_battery_props[] = {
> POWER_SUPPLY_PROP_PRESENT,
> @@ -455,6 +457,8 @@ static int wacom_raw_event(struct hid_device *hdev,
> struct hid_report *report,
> struct input_dev *input;
> unsigned char *data = (unsigned char *) raw_data;
> int i;
> + __u8 battery;
> + __u8 ps_connected;
>
> if (!(hdev->claimed & HID_CLAIMED_INPUT))
> return 0;
> @@ -482,6 +486,14 @@ static int wacom_raw_event(struct hid_device *hdev,
> struct hid_report *report,
> wacom_i4_parse_report(hdev, wdata, input, data + i);
> i += 10;
> wacom_i4_parse_report(hdev, wdata, input, data + i);
> + battery = data[i+10] & 0x07;
> + if (batcap_i4[battery] != wdata->battery_capacity)
> + wdata->battery_capacity = batcap_i4[battery];
> +
> + ps_connected = data[i+10] & 0x08;
> + if (ps_connected != wdata->ps_connected)
> + wdata->ps_connected = ps_connected;
> +
I think in long term it would be better if you kept same code flow for
both Graphire and Intuos4. Your 2nd patch for Graphire looked closer
to this:
if (data[i+10] != wdata->battery_raw) {
wdat->battery_raw = data[i+10];
battery = data[i+10] & 0x07;
wdata->battery_capacity = batcap_i4[battery];
ps_connected = data[i+10] & 0x08;
wdata->ps_connected = ps_connected;
}
> break;
> default:
> hid_err(hdev, "Unknown report: %d,%d size:%d\n",
> --
> 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
[email protected]
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel