Commit 4202f1de authored by Przemo Firszt's avatar Przemo Firszt Committed by Jiri Kosina

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: default avatarPrzemo Firszt <przemo@firszt.eu>
Reviewed-by: default avatarChris Bagwell <chris@cnpbagwell.com>
Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
parent e31e3832
...@@ -49,6 +49,8 @@ struct wacom_data { ...@@ -49,6 +49,8 @@ struct wacom_data {
/*percent of battery capacity for Graphire /*percent of battery capacity for Graphire
8th value means AC online and show 100% capacity */ 8th value means AC online and show 100% capacity */
static unsigned short batcap_gr[8] = { 1, 15, 25, 35, 50, 70, 100, 100 }; 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[] = { static enum power_supply_property wacom_battery_props[] = {
POWER_SUPPLY_PROP_PRESENT, POWER_SUPPLY_PROP_PRESENT,
...@@ -447,6 +449,7 @@ static int wacom_raw_event(struct hid_device *hdev, struct hid_report *report, ...@@ -447,6 +449,7 @@ static int wacom_raw_event(struct hid_device *hdev, struct hid_report *report,
struct input_dev *input; struct input_dev *input;
unsigned char *data = (unsigned char *) raw_data; unsigned char *data = (unsigned char *) raw_data;
int i; int i;
__u8 power_raw;
if (!(hdev->claimed & HID_CLAIMED_INPUT)) if (!(hdev->claimed & HID_CLAIMED_INPUT))
return 0; return 0;
...@@ -474,6 +477,13 @@ static int wacom_raw_event(struct hid_device *hdev, struct hid_report *report, ...@@ -474,6 +477,13 @@ static int wacom_raw_event(struct hid_device *hdev, struct hid_report *report,
wacom_i4_parse_report(hdev, wdata, input, data + i); wacom_i4_parse_report(hdev, wdata, input, data + i);
i += 10; i += 10;
wacom_i4_parse_report(hdev, wdata, input, data + i); wacom_i4_parse_report(hdev, wdata, input, data + i);
power_raw = data[i+10];
if (power_raw != wdata->power_raw) {
wdata->power_raw = power_raw;
wdata->battery_capacity = batcap_i4[power_raw & 0x07];
wdata->ps_connected = power_raw & 0x08;
}
break; break;
default: default:
hid_err(hdev, "Unknown report: %d,%d size:%d\n", hid_err(hdev, "Unknown report: %d,%d size:%d\n",
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment