Re: [Linuxwacom-devel] [PATCH ver.2 2/2] HID: wacom: Add battery/ac reporting for Intuos4 WL
Dnia 2012-03-18, nie o godzinie 18:00 -0500, Chris Bagwell pisze: > On Sun, Mar 18, 2012 at 2:27 PM, Przemo Firszt 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 > > --- > > 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; > } > Chris, You're right - it will be more consistent. I'll resubmit both patches. I'm going to use something like power_raw instead of battery_raw and I no longer see the need to keep the option CONFIG_HID_WACOM_POWER_SUPPLY It was ment to be a safe valve if the system decides to treat wacom battery as main power supply and i.e. shut down because battery is low. Thanks, -- Przemo Firszt -- 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
Re: [Linuxwacom-devel] [PATCH ver.2 2/2] HID: wacom: Add battery/ac reporting for Intuos4 WL
On Sun, Mar 18, 2012 at 2:27 PM, Przemo Firszt 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 > --- > 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 Linuxwacom-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel
[Linuxwacom-devel] [PATCH ver.2 2/2] HID: wacom: Add battery/ac reporting for Intuos4 WL
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 --- 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; + 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 Linuxwacom-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel