Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0ca140b2 authored by Ping Cheng's avatar Ping Cheng Committed by Greg Kroah-Hartman
Browse files

HID: wacom: Only report rotation for art pen



commit 7ccced33a0ba39b0103ae1dfbf7f1dffdc0a1bc2 upstream.

The generic routine, wacom_wac_pen_event, turns rotation value 90
degree anti-clockwise before posting the events. This non-zero
event trggers a non-zero ABS_Z event for non art pen tools. However,
HID_DG_TWIST is only supported by art pen.

[jkosina@suse.cz: fix build: add missing brace]
Cc: stable@vger.kernel.org
Signed-off-by: default avatarPing Cheng <ping.cheng@wacom.com>
Reviewed-by: default avatarJason Gerecke <jason.gerecke@wacom.com>
Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent d14b6fe9
Loading
Loading
Loading
Loading
+21 −8
Original line number Diff line number Diff line
@@ -638,9 +638,26 @@ static int wacom_intuos_id_mangle(int tool_id)
	return (tool_id & ~0xFFF) << 4 | (tool_id & 0xFFF);
}

static bool wacom_is_art_pen(int tool_id)
{
	bool is_art_pen = false;

	switch (tool_id) {
	case 0x885:	/* Intuos3 Marker Pen */
	case 0x804:	/* Intuos4/5 13HD/24HD Marker Pen */
	case 0x10804:	/* Intuos4/5 13HD/24HD Art Pen */
		is_art_pen = true;
		break;
	}
	return is_art_pen;
}

static int wacom_intuos_get_tool_type(int tool_id)
{
	int tool_type;
	int tool_type = BTN_TOOL_PEN;

	if (wacom_is_art_pen(tool_id))
		return tool_type;

	switch (tool_id) {
	case 0x812: /* Inking pen */
@@ -655,12 +672,9 @@ static int wacom_intuos_get_tool_type(int tool_id)
	case 0x852:
	case 0x823: /* Intuos3 Grip Pen */
	case 0x813: /* Intuos3 Classic Pen */
	case 0x885: /* Intuos3 Marker Pen */
	case 0x802: /* Intuos4/5 13HD/24HD General Pen */
	case 0x804: /* Intuos4/5 13HD/24HD Marker Pen */
	case 0x8e2: /* IntuosHT2 pen */
	case 0x022:
	case 0x10804: /* Intuos4/5 13HD/24HD Art Pen */
	case 0x10842: /* MobileStudio Pro Pro Pen slim */
	case 0x14802: /* Intuos4/5 13HD/24HD Classic Pen */
	case 0x16802: /* Cintiq 13HD Pro Pen */
@@ -718,10 +732,6 @@ static int wacom_intuos_get_tool_type(int tool_id)
	case 0x10902: /* Intuos4/5 13HD/24HD Airbrush */
		tool_type = BTN_TOOL_AIRBRUSH;
		break;

	default: /* Unknown tool */
		tool_type = BTN_TOOL_PEN;
		break;
	}
	return tool_type;
}
@@ -2312,6 +2322,9 @@ static void wacom_wac_pen_event(struct hid_device *hdev, struct hid_field *field
		}
		return;
	case HID_DG_TWIST:
		/* don't modify the value if the pen doesn't support the feature */
		if (!wacom_is_art_pen(wacom_wac->id[0])) return;

		/*
		 * Userspace expects pen twist to have its zero point when
		 * the buttons/finger is on the tablet's left. HID values