From: Jason Gerecke <killertofu@gmail.com>
To: linux-input@vger.kernel.org, Jiri Kosina <jkosina@suse.cz>
Cc: Benjamin Tissoires <benjamin.tissoires@redhat.com>,
Ping Cheng <pinglinux@gmail.com>,
Ping Cheng <ping.cheng@wacom.com>,
Aaron Skomra <skomra@gmail.com>,
Jason Gerecke <jason.gerecke@wacom.com>,
Jason Gerecke <killertofu@gmail.com>
Subject: [PATCH v3 16/18] HID: wacom: generic: Add support for battery status on pen and pad interfaces
Date: Wed, 19 Oct 2016 18:03:52 -0700 [thread overview]
Message-ID: <20161020010354.4049-16-killertofu@gmail.com> (raw)
In-Reply-To: <20161020010354.4049-1-killertofu@gmail.com>
Adds support for usages that may appear on the pen or pad interface which
report the state of the tablet battery.
Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
---
drivers/hid/wacom_wac.c | 41 ++++++++++++++++++++++++++++++++++++++++-
drivers/hid/wacom_wac.h | 6 ++++++
include/linux/hid.h | 1 +
3 files changed, 47 insertions(+), 1 deletion(-)
diff --git a/drivers/hid/wacom_wac.c b/drivers/hid/wacom_wac.c
index 70de1fa..f3edecf 100644
--- a/drivers/hid/wacom_wac.c
+++ b/drivers/hid/wacom_wac.c
@@ -1525,6 +1525,10 @@ static void wacom_wac_pad_usage_mapping(struct hid_device *hdev,
unsigned equivalent_usage = wacom_equivalent_usage(usage->hid);
switch (equivalent_usage) {
+ case WACOM_HID_WD_BATTERY_LEVEL:
+ case WACOM_HID_WD_BATTERY_CHARGING:
+ features->quirks |= WACOM_QUIRK_BATTERY;
+ break;
case WACOM_HID_WD_ACCELEROMETER_X:
__set_bit(INPUT_PROP_ACCELEROMETER, input->propbit);
wacom_map_usage(input, usage, field, EV_ABS, ABS_X, 0);
@@ -1574,8 +1578,25 @@ static int wacom_wac_pad_event(struct hid_device *hdev, struct hid_field *field,
wacom_wac->hid_data.inrange_state |= value;
}
- if (equivalent_usage != WACOM_HID_WD_TOUCHRINGSTATUS)
+ switch (equivalent_usage) {
+ case WACOM_HID_WD_BATTERY_LEVEL:
+ wacom_wac->hid_data.battery_capacity = value;
+ wacom_wac->hid_data.bat_connected = 1;
+ return 0;
+
+ case WACOM_HID_WD_BATTERY_CHARGING:
+ wacom_wac->hid_data.bat_charging = value;
+ wacom_wac->hid_data.ps_connected = value;
+ wacom_wac->hid_data.bat_connected = 1;
+ return 0;
+
+ case WACOM_HID_WD_TOUCHRINGSTATUS:
+ return 0;
+
+ default:
input_event(input, usage->type, usage->code, value);
+ break;
+ }
return 0;
}
@@ -1594,6 +1615,7 @@ static void wacom_wac_pad_report(struct hid_device *hdev,
{
struct wacom *wacom = hid_get_drvdata(hdev);
struct wacom_wac *wacom_wac = &wacom->wacom_wac;
+ struct wacom_features *features = &wacom_wac->features;
struct input_dev *input = wacom_wac->pad_input;
bool active = wacom_wac->hid_data.inrange_state != 0;
@@ -1604,6 +1626,16 @@ static void wacom_wac_pad_report(struct hid_device *hdev,
if (wacom_equivalent_usage(report->field[0]->physical) == HID_DG_TABLETFUNCTIONKEY)
input_event(input, EV_ABS, ABS_MISC, active ? PAD_DEVICE_ID : 0);
+ if (features->quirks & WACOM_QUIRK_BATTERY) {
+ int capacity = wacom_wac->hid_data.battery_capacity;
+ bool charging = wacom_wac->hid_data.bat_charging;
+ bool connected = wacom_wac->hid_data.bat_connected;
+ bool powered = wacom_wac->hid_data.ps_connected;
+
+ wacom_notify_battery(wacom_wac, capacity, charging,
+ connected, powered);
+ }
+
input_sync(input);
}
@@ -1633,6 +1665,9 @@ static void wacom_wac_pen_usage_mapping(struct hid_device *hdev,
case HID_DG_INRANGE:
wacom_map_usage(input, usage, field, EV_KEY, BTN_TOOL_PEN, 0);
break;
+ case HID_DG_BATTERYSTRENGTH:
+ features->quirks |= WACOM_QUIRK_BATTERY;
+ break;
case HID_DG_INVERT:
wacom_map_usage(input, usage, field, EV_KEY,
BTN_TOOL_RUBBER, 0);
@@ -1703,6 +1738,10 @@ static int wacom_wac_pen_event(struct hid_device *hdev, struct hid_field *field,
if (!(features->quirks & WACOM_QUIRK_SENSE))
wacom_wac->hid_data.sense_state = value;
return 0;
+ case HID_DG_BATTERYSTRENGTH:
+ wacom_wac->hid_data.battery_capacity = value;
+ wacom_wac->hid_data.bat_connected = 1;
+ break;
case HID_DG_INVERT:
wacom_wac->hid_data.invert_state = value;
return 0;
diff --git a/drivers/hid/wacom_wac.h b/drivers/hid/wacom_wac.h
index 1f7c4a8..7418c97 100644
--- a/drivers/hid/wacom_wac.h
+++ b/drivers/hid/wacom_wac.h
@@ -101,6 +101,8 @@
#define WACOM_HID_WD_ACCELEROMETER_X (WACOM_HID_UP_WACOMDIGITIZER | 0x0401)
#define WACOM_HID_WD_ACCELEROMETER_Y (WACOM_HID_UP_WACOMDIGITIZER | 0x0402)
#define WACOM_HID_WD_ACCELEROMETER_Z (WACOM_HID_UP_WACOMDIGITIZER | 0x0403)
+#define WACOM_HID_WD_BATTERY_CHARGING (WACOM_HID_UP_WACOMDIGITIZER | 0x0404)
+#define WACOM_HID_WD_BATTERY_LEVEL (WACOM_HID_UP_WACOMDIGITIZER | 0x043b)
#define WACOM_HID_WD_EXPRESSKEY00 (WACOM_HID_UP_WACOMDIGITIZER | 0x0910)
#define WACOM_HID_WD_BUTTONHOME (WACOM_HID_UP_WACOMDIGITIZER | 0x0990)
#define WACOM_HID_WD_BUTTONUP (WACOM_HID_UP_WACOMDIGITIZER | 0x0991)
@@ -257,6 +259,10 @@ struct hid_data {
int last_slot_field;
int num_expected;
int num_received;
+ int battery_capacity;
+ int bat_charging;
+ int bat_connected;
+ int ps_connected;
};
struct wacom_remote_data {
diff --git a/include/linux/hid.h b/include/linux/hid.h
index e712101..3baa2f9 100644
--- a/include/linux/hid.h
+++ b/include/linux/hid.h
@@ -231,6 +231,7 @@ struct hid_item {
#define HID_DG_TAP 0x000d0035
#define HID_DG_TABLETFUNCTIONKEY 0x000d0039
#define HID_DG_PROGRAMCHANGEKEY 0x000d003a
+#define HID_DG_BATTERYSTRENGTH 0x000d003b
#define HID_DG_INVERT 0x000d003c
#define HID_DG_TILT_X 0x000d003d
#define HID_DG_TILT_Y 0x000d003e
--
2.10.0
next prev parent reply other threads:[~2016-10-20 1:05 UTC|newest]
Thread overview: 64+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-10-06 21:22 [PATCH 00/19] HID: wacom: Add support for MobileStudio Pro Jason Gerecke
2016-10-06 21:22 ` [PATCH 01/19] HID: wacom: Update vendor-defined usage names to better match standards Jason Gerecke
2016-10-06 21:22 ` [PATCH 02/19] HID: wacom: Have WACOM_PEN_FIELD and WACOM_FINGER_FIELD recgonize more fields Jason Gerecke
2016-10-06 21:22 ` [PATCH 03/19] HID: wacom: Refactor button-to-key translation into function Jason Gerecke
2016-10-06 21:22 ` [PATCH 04/19] HID: wacom: Detect and correct descriptors missing HID_DG_BARRELSWITCH2 Jason Gerecke
2016-10-06 21:22 ` [PATCH 05/19] HID: wacom: generic: Strip off excessive name prefixing Jason Gerecke
2016-10-06 21:22 ` [PATCH 06/19] HID: wacom: generic: Add support for height, tilt, and twist usages Jason Gerecke
2016-10-06 21:22 ` [PATCH 07/19] HID: wacom: generic: Support and use 'Custom HID' mode and usages Jason Gerecke
2016-10-06 21:22 ` [PATCH 08/19] HID: wacom: generic: Add support for vendor-defined "Distance" usage Jason Gerecke
2016-10-06 21:22 ` [PATCH 09/19] HID: wacom: generic: Add support for vendor-defined "Fingerwheel" usage Jason Gerecke
2016-10-06 21:22 ` [PATCH 10/19] HID: wacom: generic: Add support for vendor-defined "Sense" usage Jason Gerecke
2016-10-06 21:22 ` [PATCH 11/19] HID: wacom: Read and internally use corrected Intuos tool IDs Jason Gerecke
2016-10-06 21:22 ` [PATCH 12/19] HID: wacom: generic: Support tool ID and additional tool types Jason Gerecke
2016-10-06 21:22 ` [PATCH 13/19] HID: wacom: generic: Pass 'hdev' to 'wacom_map_usage' Jason Gerecke
2016-10-07 15:46 ` Benjamin Tissoires
2016-10-07 20:53 ` Jason Gerecke
2016-10-06 21:22 ` [PATCH 14/19] HID: wacom: Fix sensor outbounds and redefine as offsets from each edge Jason Gerecke
2016-10-06 21:22 ` [PATCH 15/19] HID: wacom: generic: Add support for sensor offsets Jason Gerecke
2016-10-06 21:22 ` [PATCH 16/19] HID: wacom: generic: Introduce pad support Jason Gerecke
2016-10-06 21:22 ` [PATCH 17/19] HID: wacom: generic: Add support for battery status on pen and pad interfaces Jason Gerecke
2016-10-06 21:22 ` [PATCH 18/19] HID: wacom: generic: Extend pad support Jason Gerecke
2016-10-06 21:22 ` [PATCH 19/19] HID: input: Recognize ABS_WHEEL in hidinput_calc_abs_res Jason Gerecke
2016-10-07 15:41 ` [PATCH 00/19] HID: wacom: Add support for MobileStudio Pro Benjamin Tissoires
2016-10-07 22:16 ` [PATCH v2 01/18] HID: wacom: Update vendor-defined usage names to better match standards Jason Gerecke
2016-10-07 22:16 ` [PATCH v2 02/18] HID: wacom: Have WACOM_PEN_FIELD and WACOM_FINGER_FIELD recgonize more fields Jason Gerecke
2016-10-07 22:16 ` [PATCH v2 03/18] HID: wacom: Refactor button-to-key translation into function Jason Gerecke
2016-10-07 22:16 ` [PATCH v2 04/18] HID: wacom: Detect and correct descriptors missing HID_DG_BARRELSWITCH2 Jason Gerecke
2016-10-07 22:16 ` [PATCH v2 05/18] HID: wacom: generic: Strip off excessive name prefixing Jason Gerecke
2016-10-07 22:16 ` [PATCH v2 06/18] HID: wacom: generic: Add support for height, tilt, and twist usages Jason Gerecke
2016-10-07 22:16 ` [PATCH v2 07/18] HID: wacom: generic: Support and use 'Custom HID' mode and usages Jason Gerecke
2016-10-18 15:26 ` Jiri Kosina
2016-10-18 17:09 ` Jason Gerecke
2016-10-18 21:39 ` Jiri Kosina
2016-10-20 1:04 ` Jason Gerecke
2016-10-20 8:32 ` Jiri Kosina
2016-10-07 22:16 ` [PATCH v2 08/18] HID: wacom: generic: Add support for vendor-defined "Distance" usage Jason Gerecke
2016-10-07 22:16 ` [PATCH v2 09/18] HID: wacom: generic: Add support for vendor-defined "Fingerwheel" usage Jason Gerecke
2016-10-07 22:16 ` [PATCH v2 10/18] HID: wacom: generic: Add support for vendor-defined "Sense" usage Jason Gerecke
2016-10-07 22:16 ` [PATCH v2 11/18] HID: wacom: Read and internally use corrected Intuos tool IDs Jason Gerecke
2016-10-07 22:16 ` [PATCH v2 12/18] HID: wacom: generic: Support tool ID and additional tool types Jason Gerecke
2016-10-07 22:16 ` [PATCH v2 13/18] HID: wacom: Fix sensor outbounds and redefine as offsets from each edge Jason Gerecke
2016-10-07 22:16 ` [PATCH v2 14/18] HID: wacom: generic: Add support for sensor offsets Jason Gerecke
2016-10-07 22:16 ` [PATCH v2 15/18] HID: wacom: generic: Introduce pad support Jason Gerecke
2016-10-07 22:16 ` [PATCH v2 16/18] HID: wacom: generic: Add support for battery status on pen and pad interfaces Jason Gerecke
2016-10-07 22:16 ` [PATCH v2 17/18] HID: wacom: generic: Extend pad support Jason Gerecke
2016-10-07 22:16 ` [PATCH v2 18/18] HID: input: Recognize ABS_WHEEL in hidinput_calc_abs_res Jason Gerecke
2016-10-20 1:03 ` [PATCH v3 01/18] HID: wacom: Update vendor-defined usage names to better match standards Jason Gerecke
2016-10-20 1:03 ` [PATCH v3 02/18] HID: wacom: Have WACOM_PEN_FIELD and WACOM_FINGER_FIELD recgonize more fields Jason Gerecke
2016-10-20 1:03 ` [PATCH v3 03/18] HID: wacom: Refactor button-to-key translation into function Jason Gerecke
2016-10-20 1:03 ` [PATCH v3 04/18] HID: wacom: Detect and correct descriptors missing HID_DG_BARRELSWITCH2 Jason Gerecke
2016-10-20 1:03 ` [PATCH v3 05/18] HID: wacom: generic: Strip off excessive name prefixing Jason Gerecke
2016-10-20 1:03 ` [PATCH v3 06/18] HID: wacom: generic: Add support for height, tilt, and twist usages Jason Gerecke
2016-10-20 1:03 ` [PATCH v3 07/18] HID: wacom: generic: Support and use 'Custom HID' mode and usages Jason Gerecke
2016-10-20 1:03 ` [PATCH v3 08/18] HID: wacom: generic: Add support for vendor-defined "Distance" usage Jason Gerecke
2016-10-20 1:03 ` [PATCH v3 09/18] HID: wacom: generic: Add support for vendor-defined "Fingerwheel" usage Jason Gerecke
2016-10-20 1:03 ` [PATCH v3 10/18] HID: wacom: generic: Add support for vendor-defined "Sense" usage Jason Gerecke
2016-10-20 1:03 ` [PATCH v3 11/18] HID: wacom: Read and internally use corrected Intuos tool IDs Jason Gerecke
2016-10-20 1:03 ` [PATCH v3 12/18] HID: wacom: generic: Support tool ID and additional tool types Jason Gerecke
2016-10-20 1:03 ` [PATCH v3 13/18] HID: wacom: Fix sensor outbounds and redefine as offsets from each edge Jason Gerecke
2016-10-20 1:03 ` [PATCH v3 14/18] HID: wacom: generic: Add support for sensor offsets Jason Gerecke
2016-10-20 1:03 ` [PATCH v3 15/18] HID: wacom: generic: Introduce pad support Jason Gerecke
2016-10-20 1:03 ` Jason Gerecke [this message]
2016-10-20 1:03 ` [PATCH v3 17/18] HID: wacom: generic: Extend " Jason Gerecke
2016-10-20 1:03 ` [PATCH v3 18/18] HID: input: Recognize ABS_WHEEL in hidinput_calc_abs_res Jason Gerecke
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20161020010354.4049-16-killertofu@gmail.com \
--to=killertofu@gmail.com \
--cc=benjamin.tissoires@redhat.com \
--cc=jason.gerecke@wacom.com \
--cc=jkosina@suse.cz \
--cc=linux-input@vger.kernel.org \
--cc=ping.cheng@wacom.com \
--cc=pinglinux@gmail.com \
--cc=skomra@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).