mirror of
https://github.com/torvalds/linux.git
synced 2024-11-22 20:22:09 +00:00
Input: wacom - add basic Intuos5 support
This patch adds support for the basic pen functions of Intuos5 tablets. Signed-off-by: Jason Gerecke <killertofu@gmail.com> Reviewed-by: Chris Bagwell <chris@cnpbagwell.com> Reviewed-by: Ping Cheng <pingc@wacom.com> Tested-by: Timo Aaltonen <tjaalton@ubuntu.com> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
This commit is contained in:
parent
b357140039
commit
9fee619505
@ -452,6 +452,7 @@ static void wacom_intuos_general(struct wacom_wac *wacom)
|
|||||||
if ((data[1] & 0xb8) == 0xa0) {
|
if ((data[1] & 0xb8) == 0xa0) {
|
||||||
t = (data[6] << 2) | ((data[7] >> 6) & 3);
|
t = (data[6] << 2) | ((data[7] >> 6) & 3);
|
||||||
if ((features->type >= INTUOS4S && features->type <= INTUOS4L) ||
|
if ((features->type >= INTUOS4S && features->type <= INTUOS4L) ||
|
||||||
|
(features->type >= INTUOS5S && features->type <= INTUOS5L) ||
|
||||||
features->type == WACOM_21UX2 || features->type == WACOM_24HD) {
|
features->type == WACOM_21UX2 || features->type == WACOM_24HD) {
|
||||||
t = (t << 1) | (data[1] & 1);
|
t = (t << 1) | (data[1] & 1);
|
||||||
}
|
}
|
||||||
@ -632,7 +633,9 @@ static int wacom_intuos_irq(struct wacom_wac *wacom)
|
|||||||
(features->type == INTUOS3 ||
|
(features->type == INTUOS3 ||
|
||||||
features->type == INTUOS3S ||
|
features->type == INTUOS3S ||
|
||||||
features->type == INTUOS4 ||
|
features->type == INTUOS4 ||
|
||||||
features->type == INTUOS4S)) {
|
features->type == INTUOS4S ||
|
||||||
|
features->type == INTUOS5 ||
|
||||||
|
features->type == INTUOS5S)) {
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -685,7 +688,8 @@ static int wacom_intuos_irq(struct wacom_wac *wacom)
|
|||||||
|
|
||||||
} else if (wacom->tool[idx] == BTN_TOOL_MOUSE) {
|
} else if (wacom->tool[idx] == BTN_TOOL_MOUSE) {
|
||||||
/* I4 mouse */
|
/* I4 mouse */
|
||||||
if (features->type >= INTUOS4S && features->type <= INTUOS4L) {
|
if ((features->type >= INTUOS4S && features->type <= INTUOS4L) ||
|
||||||
|
(features->type >= INTUOS5S && features->type <= INTUOS5L)) {
|
||||||
input_report_key(input, BTN_LEFT, data[6] & 0x01);
|
input_report_key(input, BTN_LEFT, data[6] & 0x01);
|
||||||
input_report_key(input, BTN_MIDDLE, data[6] & 0x02);
|
input_report_key(input, BTN_MIDDLE, data[6] & 0x02);
|
||||||
input_report_key(input, BTN_RIGHT, data[6] & 0x04);
|
input_report_key(input, BTN_RIGHT, data[6] & 0x04);
|
||||||
@ -712,7 +716,7 @@ static int wacom_intuos_irq(struct wacom_wac *wacom)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if ((features->type < INTUOS3S || features->type == INTUOS3L ||
|
} else if ((features->type < INTUOS3S || features->type == INTUOS3L ||
|
||||||
features->type == INTUOS4L) &&
|
features->type == INTUOS4L || features->type == INTUOS5L) &&
|
||||||
wacom->tool[idx] == BTN_TOOL_LENS) {
|
wacom->tool[idx] == BTN_TOOL_LENS) {
|
||||||
/* Lens cursor packets */
|
/* Lens cursor packets */
|
||||||
input_report_key(input, BTN_LEFT, data[8] & 0x01);
|
input_report_key(input, BTN_LEFT, data[8] & 0x01);
|
||||||
@ -1107,6 +1111,9 @@ void wacom_wac_irq(struct wacom_wac *wacom_wac, size_t len)
|
|||||||
case INTUOS4S:
|
case INTUOS4S:
|
||||||
case INTUOS4:
|
case INTUOS4:
|
||||||
case INTUOS4L:
|
case INTUOS4L:
|
||||||
|
case INTUOS5S:
|
||||||
|
case INTUOS5:
|
||||||
|
case INTUOS5L:
|
||||||
case CINTIQ:
|
case CINTIQ:
|
||||||
case WACOM_BEE:
|
case WACOM_BEE:
|
||||||
case WACOM_21UX2:
|
case WACOM_21UX2:
|
||||||
@ -1355,12 +1362,15 @@ void wacom_setup_input_capabilities(struct input_dev *input_dev,
|
|||||||
wacom_setup_intuos(wacom_wac);
|
wacom_setup_intuos(wacom_wac);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case INTUOS5:
|
||||||
|
case INTUOS5L:
|
||||||
case INTUOS4:
|
case INTUOS4:
|
||||||
case INTUOS4L:
|
case INTUOS4L:
|
||||||
__set_bit(BTN_7, input_dev->keybit);
|
__set_bit(BTN_7, input_dev->keybit);
|
||||||
__set_bit(BTN_8, input_dev->keybit);
|
__set_bit(BTN_8, input_dev->keybit);
|
||||||
/* fall through */
|
/* fall through */
|
||||||
|
|
||||||
|
case INTUOS5S:
|
||||||
case INTUOS4S:
|
case INTUOS4S:
|
||||||
for (i = 0; i < 7; i++)
|
for (i = 0; i < 7; i++)
|
||||||
__set_bit(BTN_0 + i, input_dev->keybit);
|
__set_bit(BTN_0 + i, input_dev->keybit);
|
||||||
@ -1629,6 +1639,21 @@ static const struct wacom_features wacom_features_0xBB =
|
|||||||
static const struct wacom_features wacom_features_0xBC =
|
static const struct wacom_features wacom_features_0xBC =
|
||||||
{ "Wacom Intuos4 WL", WACOM_PKGLEN_INTUOS, 40840, 25400, 2047,
|
{ "Wacom Intuos4 WL", WACOM_PKGLEN_INTUOS, 40840, 25400, 2047,
|
||||||
63, INTUOS4, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES };
|
63, INTUOS4, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES };
|
||||||
|
static const struct wacom_features wacom_features_0x26 =
|
||||||
|
{ "Wacom Intuos5 touch S", WACOM_PKGLEN_INTUOS, 31496, 19685, 2047,
|
||||||
|
63, INTUOS5S, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES };
|
||||||
|
static const struct wacom_features wacom_features_0x27 =
|
||||||
|
{ "Wacom Intuos5 touch M", WACOM_PKGLEN_INTUOS, 44704, 27940, 2047,
|
||||||
|
63, INTUOS5, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES };
|
||||||
|
static const struct wacom_features wacom_features_0x28 =
|
||||||
|
{ "Wacom Intuos5 touch L", WACOM_PKGLEN_INTUOS, 65024, 40640, 2047,
|
||||||
|
63, INTUOS5L, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES };
|
||||||
|
static const struct wacom_features wacom_features_0x29 =
|
||||||
|
{ "Wacom Intuos5 S", WACOM_PKGLEN_INTUOS, 31496, 19685, 2047,
|
||||||
|
63, INTUOS5S, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES };
|
||||||
|
static const struct wacom_features wacom_features_0x2A =
|
||||||
|
{ "Wacom Intuos5 M", WACOM_PKGLEN_INTUOS, 44704, 27940, 2047,
|
||||||
|
63, INTUOS5, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES };
|
||||||
static const struct wacom_features wacom_features_0xF4 =
|
static const struct wacom_features wacom_features_0xF4 =
|
||||||
{ "Wacom Cintiq 24HD", WACOM_PKGLEN_INTUOS, 104480, 65600, 2047,
|
{ "Wacom Cintiq 24HD", WACOM_PKGLEN_INTUOS, 104480, 65600, 2047,
|
||||||
63, WACOM_24HD, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES };
|
63, WACOM_24HD, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES };
|
||||||
@ -1801,6 +1826,11 @@ const struct usb_device_id wacom_ids[] = {
|
|||||||
{ USB_DEVICE_WACOM(0xBA) },
|
{ USB_DEVICE_WACOM(0xBA) },
|
||||||
{ USB_DEVICE_WACOM(0xBB) },
|
{ USB_DEVICE_WACOM(0xBB) },
|
||||||
{ USB_DEVICE_WACOM(0xBC) },
|
{ USB_DEVICE_WACOM(0xBC) },
|
||||||
|
{ USB_DEVICE_WACOM(0x26) },
|
||||||
|
{ USB_DEVICE_WACOM(0x27) },
|
||||||
|
{ USB_DEVICE_WACOM(0x28) },
|
||||||
|
{ USB_DEVICE_WACOM(0x29) },
|
||||||
|
{ USB_DEVICE_WACOM(0x2A) },
|
||||||
{ USB_DEVICE_WACOM(0x3F) },
|
{ USB_DEVICE_WACOM(0x3F) },
|
||||||
{ USB_DEVICE_WACOM(0xC5) },
|
{ USB_DEVICE_WACOM(0xC5) },
|
||||||
{ USB_DEVICE_WACOM(0xC6) },
|
{ USB_DEVICE_WACOM(0xC6) },
|
||||||
|
@ -65,6 +65,9 @@ enum {
|
|||||||
INTUOS4S,
|
INTUOS4S,
|
||||||
INTUOS4,
|
INTUOS4,
|
||||||
INTUOS4L,
|
INTUOS4L,
|
||||||
|
INTUOS5S,
|
||||||
|
INTUOS5,
|
||||||
|
INTUOS5L,
|
||||||
WACOM_24HD,
|
WACOM_24HD,
|
||||||
WACOM_21UX2,
|
WACOM_21UX2,
|
||||||
CINTIQ,
|
CINTIQ,
|
||||||
|
Loading…
Reference in New Issue
Block a user