|
Takashi Iwai |
ce72dc |
From 08a46b4190d345544d04ce4fe2e1844b772b8535 Mon Sep 17 00:00:00 2001
|
|
Takashi Iwai |
ce72dc |
From: Ping Cheng <pinglinux@gmail.com>
|
|
Takashi Iwai |
ce72dc |
Date: Sun, 9 Apr 2023 09:42:29 -0700
|
|
Takashi Iwai |
ce72dc |
Subject: [PATCH] HID: wacom: Set a default resolution for older tablets
|
|
Takashi Iwai |
ce72dc |
Git-commit: 08a46b4190d345544d04ce4fe2e1844b772b8535
|
|
Takashi Iwai |
ce72dc |
Patch-mainline: v6.4-rc1
|
|
Takashi Iwai |
ce72dc |
References: git-fixes
|
|
Takashi Iwai |
ce72dc |
|
|
Takashi Iwai |
ce72dc |
Some older tablets may not report physical maximum for X/Y
|
|
Takashi Iwai |
ce72dc |
coordinates. Set a default to prevent undefined resolution.
|
|
Takashi Iwai |
ce72dc |
|
|
Takashi Iwai |
ce72dc |
Signed-off-by: Ping Cheng <ping.cheng@wacom.com>
|
|
Takashi Iwai |
ce72dc |
Link: https://lore.kernel.org/r/20230409164229.29777-1-ping.cheng@wacom.com
|
|
Takashi Iwai |
ce72dc |
Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
|
|
Takashi Iwai |
ce72dc |
Acked-by: Takashi Iwai <tiwai@suse.de>
|
|
Takashi Iwai |
ce72dc |
|
|
Takashi Iwai |
ce72dc |
---
|
|
Takashi Iwai |
ce72dc |
drivers/hid/wacom_wac.c | 12 ++++++++++--
|
|
Takashi Iwai |
ce72dc |
1 file changed, 10 insertions(+), 2 deletions(-)
|
|
Takashi Iwai |
ce72dc |
|
|
Takashi Iwai |
ce72dc |
diff --git a/drivers/hid/wacom_wac.c b/drivers/hid/wacom_wac.c
|
|
Takashi Iwai |
ce72dc |
index 4cfa51416dbc..0c6a82c665c1 100644
|
|
Takashi Iwai |
ce72dc |
--- a/drivers/hid/wacom_wac.c
|
|
Takashi Iwai |
ce72dc |
+++ b/drivers/hid/wacom_wac.c
|
|
Takashi Iwai |
ce72dc |
@@ -1921,6 +1921,7 @@ static void wacom_map_usage(struct input_dev *input, struct hid_usage *usage,
|
|
Takashi Iwai |
ce72dc |
int fmax = field->logical_maximum;
|
|
Takashi Iwai |
ce72dc |
unsigned int equivalent_usage = wacom_equivalent_usage(usage->hid);
|
|
Takashi Iwai |
ce72dc |
int resolution_code = code;
|
|
Takashi Iwai |
ce72dc |
+ int resolution = hidinput_calc_abs_res(field, resolution_code);
|
|
Takashi Iwai |
ce72dc |
|
|
Takashi Iwai |
ce72dc |
if (equivalent_usage == HID_DG_TWIST) {
|
|
Takashi Iwai |
ce72dc |
resolution_code = ABS_RZ;
|
|
Takashi Iwai |
ce72dc |
@@ -1941,8 +1942,15 @@ static void wacom_map_usage(struct input_dev *input, struct hid_usage *usage,
|
|
Takashi Iwai |
ce72dc |
switch (type) {
|
|
Takashi Iwai |
ce72dc |
case EV_ABS:
|
|
Takashi Iwai |
ce72dc |
input_set_abs_params(input, code, fmin, fmax, fuzz, 0);
|
|
Takashi Iwai |
ce72dc |
- input_abs_set_res(input, code,
|
|
Takashi Iwai |
ce72dc |
- hidinput_calc_abs_res(field, resolution_code));
|
|
Takashi Iwai |
ce72dc |
+
|
|
Takashi Iwai |
ce72dc |
+ /* older tablet may miss physical usage */
|
|
Takashi Iwai |
ce72dc |
+ if ((code == ABS_X || code == ABS_Y) && !resolution) {
|
|
Takashi Iwai |
ce72dc |
+ resolution = WACOM_INTUOS_RES;
|
|
Takashi Iwai |
ce72dc |
+ hid_warn(input,
|
|
Takashi Iwai |
ce72dc |
+ "Wacom usage (%d) missing resolution \n",
|
|
Takashi Iwai |
ce72dc |
+ code);
|
|
Takashi Iwai |
ce72dc |
+ }
|
|
Takashi Iwai |
ce72dc |
+ input_abs_set_res(input, code, resolution);
|
|
Takashi Iwai |
ce72dc |
break;
|
|
Takashi Iwai |
ce72dc |
case EV_KEY:
|
|
Takashi Iwai |
ce72dc |
case EV_MSC:
|
|
Takashi Iwai |
ce72dc |
--
|
|
Takashi Iwai |
ce72dc |
2.35.3
|
|
Takashi Iwai |
ce72dc |
|