summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorPing Cheng <pinglinux@gmail.com>2023-04-09 09:42:29 -0700
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2023-05-17 11:13:26 +0200
commit827ffa27b2f222271ceb7aae8a54700bc3f33c01 (patch)
tree258f7c13e3bc7a61344966c6485581a15d9bd444 /drivers
parentb847123d55fd3fb0c6168edfb095bc4c0442d81b (diff)
downloadlinux-stable-827ffa27b2f222271ceb7aae8a54700bc3f33c01.tar.gz
linux-stable-827ffa27b2f222271ceb7aae8a54700bc3f33c01.tar.bz2
linux-stable-827ffa27b2f222271ceb7aae8a54700bc3f33c01.zip
HID: wacom: Set a default resolution for older tablets
commit 08a46b4190d345544d04ce4fe2e1844b772b8535 upstream. Some older tablets may not report physical maximum for X/Y coordinates. Set a default to prevent undefined resolution. Signed-off-by: Ping Cheng <ping.cheng@wacom.com> Link: https://lore.kernel.org/r/20230409164229.29777-1-ping.cheng@wacom.com Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/hid/wacom_wac.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/drivers/hid/wacom_wac.c b/drivers/hid/wacom_wac.c
index bc4d6474d8f5..da6053deb954 100644
--- a/drivers/hid/wacom_wac.c
+++ b/drivers/hid/wacom_wac.c
@@ -1791,6 +1791,7 @@ static void wacom_map_usage(struct input_dev *input, struct hid_usage *usage,
int fmax = field->logical_maximum;
unsigned int equivalent_usage = wacom_equivalent_usage(usage->hid);
int resolution_code = code;
+ int resolution = hidinput_calc_abs_res(field, resolution_code);
if (equivalent_usage == HID_DG_TWIST) {
resolution_code = ABS_RZ;
@@ -1813,8 +1814,15 @@ static void wacom_map_usage(struct input_dev *input, struct hid_usage *usage,
switch (type) {
case EV_ABS:
input_set_abs_params(input, code, fmin, fmax, fuzz, 0);
- input_abs_set_res(input, code,
- hidinput_calc_abs_res(field, resolution_code));
+
+ /* older tablet may miss physical usage */
+ if ((code == ABS_X || code == ABS_Y) && !resolution) {
+ resolution = WACOM_INTUOS_RES;
+ hid_warn(input,
+ "Wacom usage (%d) missing resolution \n",
+ code);
+ }
+ input_abs_set_res(input, code, resolution);
break;
case EV_KEY:
input_set_capability(input, EV_KEY, code);