Skip to content

Commit f3586d2

Browse files
PinglinuxJiri Kosina
authored andcommitted
HID: wacom: remove hardcoded WACOM_QUIRK_MULTI_INPUT
The quirk was added for devices that support both pen and touch. It decides if a device supports multiple inputs by hardcoded feature type. However, for some devices, we do not know if they support both before accessing their HID descriptors. This patch relies on dynamically assigned device_type to make the decision. Also, we make it certain that wacom_wac->shared is always created. That is, the driver will not be loaded if it fails to create wacom_wac->shared. Signed-off-by: Ping Cheng <[email protected]> Reviewed-by: Jason Gerecke <[email protected]> Signed-off-by: Jiri Kosina <[email protected]>
1 parent 1fd29be commit f3586d2

File tree

3 files changed

+19
-32
lines changed

3 files changed

+19
-32
lines changed

drivers/hid/wacom_sys.c

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1521,19 +1521,17 @@ static int wacom_probe(struct hid_device *hdev,
15211521
snprintf(wacom_wac->pad_name, sizeof(wacom_wac->pad_name),
15221522
"%s Pad", features->name);
15231523

1524-
if (features->quirks & WACOM_QUIRK_MULTI_INPUT) {
1525-
/* Append the device type to the name */
1526-
if (features->device_type != BTN_TOOL_FINGER)
1527-
strlcat(wacom_wac->name, " Pen", WACOM_NAME_MAX);
1528-
else if (features->touch_max)
1529-
strlcat(wacom_wac->name, " Finger", WACOM_NAME_MAX);
1530-
else
1531-
strlcat(wacom_wac->name, " Pad", WACOM_NAME_MAX);
1532-
1533-
error = wacom_add_shared_data(hdev);
1534-
if (error)
1535-
goto fail_shared_data;
1536-
}
1524+
/* Append the device type to the name */
1525+
if (features->device_type != BTN_TOOL_FINGER)
1526+
strlcat(wacom_wac->name, " Pen", WACOM_NAME_MAX);
1527+
else if (features->touch_max)
1528+
strlcat(wacom_wac->name, " Finger", WACOM_NAME_MAX);
1529+
else
1530+
strlcat(wacom_wac->name, " Pad", WACOM_NAME_MAX);
1531+
1532+
error = wacom_add_shared_data(hdev);
1533+
if (error)
1534+
goto fail_shared_data;
15371535

15381536
if (!(features->quirks & WACOM_QUIRK_MONITOR) &&
15391537
(features->quirks & WACOM_QUIRK_BATTERY)) {

drivers/hid/wacom_wac.c

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -581,12 +581,9 @@ static int wacom_intuos_inout(struct wacom_wac *wacom)
581581
(features->type == CINTIQ && !(data[1] & 0x40)))
582582
return 1;
583583

584-
if (wacom->shared) {
585-
wacom->shared->stylus_in_proximity = true;
586-
587-
if (wacom->shared->touch_down)
588-
return 1;
589-
}
584+
wacom->shared->stylus_in_proximity = true;
585+
if (wacom->shared->touch_down)
586+
return 1;
590587

591588
/* in Range while exiting */
592589
if (((data[1] & 0xfe) == 0x20) && wacom->reporting_data) {
@@ -598,8 +595,7 @@ static int wacom_intuos_inout(struct wacom_wac *wacom)
598595

599596
/* Exit report */
600597
if ((data[1] & 0xfe) == 0x80) {
601-
if (features->quirks & WACOM_QUIRK_MULTI_INPUT)
602-
wacom->shared->stylus_in_proximity = false;
598+
wacom->shared->stylus_in_proximity = false;
603599
wacom->reporting_data = false;
604600

605601
/* don't report exit if we don't know the ID */
@@ -2197,12 +2193,6 @@ void wacom_setup_device_quirks(struct wacom_features *features)
21972193
features->y_max = 1023;
21982194
}
21992195

2200-
/* these device have multiple inputs */
2201-
if (features->type >= WIRELESS ||
2202-
(features->type >= INTUOS5S && features->type <= INTUOSHT) ||
2203-
(features->oVid && features->oPid))
2204-
features->quirks |= WACOM_QUIRK_MULTI_INPUT;
2205-
22062196
/* quirk for bamboo touch with 2 low res touches */
22072197
if (features->type == BAMBOO_PT &&
22082198
features->pktlen == WACOM_PKGLEN_BBTOUCH) {

drivers/hid/wacom_wac.h

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -73,11 +73,10 @@
7373
#define WACOM_REPORT_BPAD_TOUCH 16
7474

7575
/* device quirks */
76-
#define WACOM_QUIRK_MULTI_INPUT 0x0001
77-
#define WACOM_QUIRK_BBTOUCH_LOWRES 0x0002
78-
#define WACOM_QUIRK_NO_INPUT 0x0004
79-
#define WACOM_QUIRK_MONITOR 0x0008
80-
#define WACOM_QUIRK_BATTERY 0x0010
76+
#define WACOM_QUIRK_BBTOUCH_LOWRES 0x0001
77+
#define WACOM_QUIRK_NO_INPUT 0x0002
78+
#define WACOM_QUIRK_MONITOR 0x0004
79+
#define WACOM_QUIRK_BATTERY 0x0008
8180

8281
#define WACOM_PEN_FIELD(f) (((f)->logical == HID_DG_STYLUS) || \
8382
((f)->physical == HID_DG_STYLUS) || \

0 commit comments

Comments
 (0)