aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/input/tablet
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/input/tablet')
-rw-r--r--drivers/input/tablet/wacom_sys.c96
-rw-r--r--drivers/input/tablet/wacom_wac.c125
-rw-r--r--drivers/input/tablet/wacom_wac.h4
3 files changed, 207 insertions, 18 deletions
diff --git a/drivers/input/tablet/wacom_sys.c b/drivers/input/tablet/wacom_sys.c
index 0d269212931e..98e9dd692d68 100644
--- a/drivers/input/tablet/wacom_sys.c
+++ b/drivers/input/tablet/wacom_sys.c
@@ -233,6 +233,9 @@ static int wacom_parse_logical_collection(unsigned char *report,
233 * 3rd gen Bamboo Touch no longer define a Digitizer-Finger Pysical 233 * 3rd gen Bamboo Touch no longer define a Digitizer-Finger Pysical
234 * Collection. Instead they define a Logical Collection with a single 234 * Collection. Instead they define a Logical Collection with a single
235 * Logical Maximum for both X and Y. 235 * Logical Maximum for both X and Y.
236 *
237 * Intuos5 touch interface does not contain useful data. We deal with
238 * this after returning from this function.
236 */ 239 */
237static int wacom_parse_hid(struct usb_interface *intf, 240static int wacom_parse_hid(struct usb_interface *intf,
238 struct hid_descriptor *hid_desc, 241 struct hid_descriptor *hid_desc,
@@ -574,23 +577,39 @@ static void wacom_remove_shared_data(struct wacom_wac *wacom)
574static int wacom_led_control(struct wacom *wacom) 577static int wacom_led_control(struct wacom *wacom)
575{ 578{
576 unsigned char *buf; 579 unsigned char *buf;
577 int retval, led = 0; 580 int retval;
578 581
579 buf = kzalloc(9, GFP_KERNEL); 582 buf = kzalloc(9, GFP_KERNEL);
580 if (!buf) 583 if (!buf)
581 return -ENOMEM; 584 return -ENOMEM;
582 585
583 if (wacom->wacom_wac.features.type == WACOM_21UX2 || 586 if (wacom->wacom_wac.features.type >= INTUOS5S &&
584 wacom->wacom_wac.features.type == WACOM_24HD) 587 wacom->wacom_wac.features.type <= INTUOS5L) {
585 led = (wacom->led.select[1] << 4) | 0x40; 588 /*
586 589 * Touch Ring and crop mark LED luminance may take on
587 led |= wacom->led.select[0] | 0x4; 590 * one of four values:
588 591 * 0 = Low; 1 = Medium; 2 = High; 3 = Off
589 buf[0] = WAC_CMD_LED_CONTROL; 592 */
590 buf[1] = led; 593 int ring_led = wacom->led.select[0] & 0x03;
591 buf[2] = wacom->led.llv; 594 int ring_lum = (((wacom->led.llv & 0x60) >> 5) - 1) & 0x03;
592 buf[3] = wacom->led.hlv; 595 int crop_lum = 0;
593 buf[4] = wacom->led.img_lum; 596
597 buf[0] = WAC_CMD_LED_CONTROL;
598 buf[1] = (crop_lum << 4) | (ring_lum << 2) | (ring_led);
599 }
600 else {
601 int led = wacom->led.select[0] | 0x4;
602
603 if (wacom->wacom_wac.features.type == WACOM_21UX2 ||
604 wacom->wacom_wac.features.type == WACOM_24HD)
605 led |= (wacom->led.select[1] << 4) | 0x40;
606
607 buf[0] = WAC_CMD_LED_CONTROL;
608 buf[1] = led;
609 buf[2] = wacom->led.llv;
610 buf[3] = wacom->led.hlv;
611 buf[4] = wacom->led.img_lum;
612 }
594 613
595 retval = wacom_set_report(wacom->intf, 0x03, WAC_CMD_LED_CONTROL, 614 retval = wacom_set_report(wacom->intf, 0x03, WAC_CMD_LED_CONTROL,
596 buf, 9, WAC_CMD_RETRIES); 615 buf, 9, WAC_CMD_RETRIES);
@@ -783,6 +802,17 @@ static struct attribute_group intuos4_led_attr_group = {
783 .attrs = intuos4_led_attrs, 802 .attrs = intuos4_led_attrs,
784}; 803};
785 804
805static struct attribute *intuos5_led_attrs[] = {
806 &dev_attr_status0_luminance.attr,
807 &dev_attr_status_led0_select.attr,
808 NULL
809};
810
811static struct attribute_group intuos5_led_attr_group = {
812 .name = "wacom_led",
813 .attrs = intuos5_led_attrs,
814};
815
786static int wacom_initialize_leds(struct wacom *wacom) 816static int wacom_initialize_leds(struct wacom *wacom)
787{ 817{
788 int error; 818 int error;
@@ -812,6 +842,19 @@ static int wacom_initialize_leds(struct wacom *wacom)
812 &cintiq_led_attr_group); 842 &cintiq_led_attr_group);
813 break; 843 break;
814 844
845 case INTUOS5S:
846 case INTUOS5:
847 case INTUOS5L:
848 wacom->led.select[0] = 0;
849 wacom->led.select[1] = 0;
850 wacom->led.llv = 32;
851 wacom->led.hlv = 0;
852 wacom->led.img_lum = 0;
853
854 error = sysfs_create_group(&wacom->intf->dev.kobj,
855 &intuos5_led_attr_group);
856 break;
857
815 default: 858 default:
816 return 0; 859 return 0;
817 } 860 }
@@ -840,6 +883,13 @@ static void wacom_destroy_leds(struct wacom *wacom)
840 sysfs_remove_group(&wacom->intf->dev.kobj, 883 sysfs_remove_group(&wacom->intf->dev.kobj,
841 &cintiq_led_attr_group); 884 &cintiq_led_attr_group);
842 break; 885 break;
886
887 case INTUOS5S:
888 case INTUOS5:
889 case INTUOS5L:
890 sysfs_remove_group(&wacom->intf->dev.kobj,
891 &intuos5_led_attr_group);
892 break;
843 } 893 }
844} 894}
845 895
@@ -1040,6 +1090,28 @@ static int wacom_probe(struct usb_interface *intf, const struct usb_device_id *i
1040 if (error) 1090 if (error)
1041 goto fail3; 1091 goto fail3;
1042 1092
1093 /*
1094 * Intuos5 has no useful data about its touch interface in its
1095 * HID descriptor. If this is the touch interface (wMaxPacketSize
1096 * of WACOM_PKGLEN_BBTOUCH3), override the table values.
1097 */
1098 if (features->type >= INTUOS5S && features->type <= INTUOS5L) {
1099 if (endpoint->wMaxPacketSize == WACOM_PKGLEN_BBTOUCH3) {
1100 features->device_type = BTN_TOOL_FINGER;
1101 features->pktlen = WACOM_PKGLEN_BBTOUCH3;
1102
1103 features->x_phy =
1104 (features->x_max * 100) / features->x_resolution;
1105 features->y_phy =
1106 (features->y_max * 100) / features->y_resolution;
1107
1108 features->x_max = 4096;
1109 features->y_max = 4096;
1110 } else {
1111 features->device_type = BTN_TOOL_PEN;
1112 }
1113 }
1114
1043 wacom_setup_device_quirks(features); 1115 wacom_setup_device_quirks(features);
1044 1116
1045 strlcpy(wacom_wac->name, features->name, sizeof(wacom_wac->name)); 1117 strlcpy(wacom_wac->name, features->name, sizeof(wacom_wac->name));
diff --git a/drivers/input/tablet/wacom_wac.c b/drivers/input/tablet/wacom_wac.c
index cecd35c8f0b3..d96e186f71dc 100644
--- a/drivers/input/tablet/wacom_wac.c
+++ b/drivers/input/tablet/wacom_wac.c
@@ -321,6 +321,9 @@ static int wacom_intuos_inout(struct wacom_wac *wacom)
321 321
322 /* Enter report */ 322 /* Enter report */
323 if ((data[1] & 0xfc) == 0xc0) { 323 if ((data[1] & 0xfc) == 0xc0) {
324 if (features->type >= INTUOS5S && features->type <= INTUOS5L)
325 wacom->shared->stylus_in_proximity = true;
326
324 /* serial number of the tool */ 327 /* serial number of the tool */
325 wacom->serial[idx] = ((data[3] & 0x0f) << 28) + 328 wacom->serial[idx] = ((data[3] & 0x0f) << 28) +
326 (data[4] << 20) + (data[5] << 12) + 329 (data[4] << 20) + (data[5] << 12) +
@@ -406,6 +409,9 @@ static int wacom_intuos_inout(struct wacom_wac *wacom)
406 409
407 /* Exit report */ 410 /* Exit report */
408 if ((data[1] & 0xfe) == 0x80) { 411 if ((data[1] & 0xfe) == 0x80) {
412 if (features->type >= INTUOS5S && features->type <= INTUOS5L)
413 wacom->shared->stylus_in_proximity = false;
414
409 /* 415 /*
410 * Reset all states otherwise we lose the initial states 416 * Reset all states otherwise we lose the initial states
411 * when in-prox next time 417 * when in-prox next time
@@ -452,6 +458,7 @@ static void wacom_intuos_general(struct wacom_wac *wacom)
452 if ((data[1] & 0xb8) == 0xa0) { 458 if ((data[1] & 0xb8) == 0xa0) {
453 t = (data[6] << 2) | ((data[7] >> 6) & 3); 459 t = (data[6] << 2) | ((data[7] >> 6) & 3);
454 if ((features->type >= INTUOS4S && features->type <= INTUOS4L) || 460 if ((features->type >= INTUOS4S && features->type <= INTUOS4L) ||
461 (features->type >= INTUOS5S && features->type <= INTUOS5L) ||
455 features->type == WACOM_21UX2 || features->type == WACOM_24HD) { 462 features->type == WACOM_21UX2 || features->type == WACOM_24HD) {
456 t = (t << 1) | (data[1] & 1); 463 t = (t << 1) | (data[1] & 1);
457 } 464 }
@@ -483,7 +490,8 @@ static int wacom_intuos_irq(struct wacom_wac *wacom)
483 int idx = 0, result; 490 int idx = 0, result;
484 491
485 if (data[0] != WACOM_REPORT_PENABLED && data[0] != WACOM_REPORT_INTUOSREAD 492 if (data[0] != WACOM_REPORT_PENABLED && data[0] != WACOM_REPORT_INTUOSREAD
486 && data[0] != WACOM_REPORT_INTUOSWRITE && data[0] != WACOM_REPORT_INTUOSPAD) { 493 && data[0] != WACOM_REPORT_INTUOSWRITE && data[0] != WACOM_REPORT_INTUOSPAD
494 && data[0] != WACOM_REPORT_INTUOS5PAD) {
487 dbg("wacom_intuos_irq: received unknown report #%d", data[0]); 495 dbg("wacom_intuos_irq: received unknown report #%d", data[0]);
488 return 0; 496 return 0;
489 } 497 }
@@ -493,7 +501,7 @@ static int wacom_intuos_irq(struct wacom_wac *wacom)
493 idx = data[1] & 0x01; 501 idx = data[1] & 0x01;
494 502
495 /* pad packets. Works as a second tool and is always in prox */ 503 /* pad packets. Works as a second tool and is always in prox */
496 if (data[0] == WACOM_REPORT_INTUOSPAD) { 504 if (data[0] == WACOM_REPORT_INTUOSPAD || data[0] == WACOM_REPORT_INTUOS5PAD) {
497 if (features->type >= INTUOS4S && features->type <= INTUOS4L) { 505 if (features->type >= INTUOS4S && features->type <= INTUOS4L) {
498 input_report_key(input, BTN_0, (data[2] & 0x01)); 506 input_report_key(input, BTN_0, (data[2] & 0x01));
499 input_report_key(input, BTN_1, (data[3] & 0x01)); 507 input_report_key(input, BTN_1, (data[3] & 0x01));
@@ -569,6 +577,34 @@ static int wacom_intuos_irq(struct wacom_wac *wacom)
569 input_report_key(input, wacom->tool[1], 0); 577 input_report_key(input, wacom->tool[1], 0);
570 input_report_abs(input, ABS_MISC, 0); 578 input_report_abs(input, ABS_MISC, 0);
571 } 579 }
580 } else if (features->type >= INTUOS5S && features->type <= INTUOS5L) {
581 int i;
582
583 /* Touch ring mode switch has no capacitive sensor */
584 input_report_key(input, BTN_0, (data[3] & 0x01));
585
586 /*
587 * ExpressKeys on Intuos5 have a capacitive sensor in
588 * addition to the mechanical switch. Switch data is
589 * stored in data[4], capacitive data in data[5].
590 */
591 for (i = 0; i < 8; i++)
592 input_report_key(input, BTN_1 + i, data[4] & (1 << i));
593
594 if (data[2] & 0x80) {
595 input_report_abs(input, ABS_WHEEL, (data[2] & 0x7f));
596 } else {
597 /* Out of proximity, clear wheel value. */
598 input_report_abs(input, ABS_WHEEL, 0);
599 }
600
601 if (data[2] | (data[3] & 0x01) | data[4]) {
602 input_report_key(input, wacom->tool[1], 1);
603 input_report_abs(input, ABS_MISC, PAD_DEVICE_ID);
604 } else {
605 input_report_key(input, wacom->tool[1], 0);
606 input_report_abs(input, ABS_MISC, 0);
607 }
572 } else { 608 } else {
573 if (features->type == WACOM_21UX2) { 609 if (features->type == WACOM_21UX2) {
574 input_report_key(input, BTN_0, (data[5] & 0x01)); 610 input_report_key(input, BTN_0, (data[5] & 0x01));
@@ -632,7 +668,9 @@ static int wacom_intuos_irq(struct wacom_wac *wacom)
632 (features->type == INTUOS3 || 668 (features->type == INTUOS3 ||
633 features->type == INTUOS3S || 669 features->type == INTUOS3S ||
634 features->type == INTUOS4 || 670 features->type == INTUOS4 ||
635 features->type == INTUOS4S)) { 671 features->type == INTUOS4S ||
672 features->type == INTUOS5 ||
673 features->type == INTUOS5S)) {
636 674
637 return 0; 675 return 0;
638 } 676 }
@@ -685,7 +723,8 @@ static int wacom_intuos_irq(struct wacom_wac *wacom)
685 723
686 } else if (wacom->tool[idx] == BTN_TOOL_MOUSE) { 724 } else if (wacom->tool[idx] == BTN_TOOL_MOUSE) {
687 /* I4 mouse */ 725 /* I4 mouse */
688 if (features->type >= INTUOS4S && features->type <= INTUOS4L) { 726 if ((features->type >= INTUOS4S && features->type <= INTUOS4L) ||
727 (features->type >= INTUOS5S && features->type <= INTUOS5L)) {
689 input_report_key(input, BTN_LEFT, data[6] & 0x01); 728 input_report_key(input, BTN_LEFT, data[6] & 0x01);
690 input_report_key(input, BTN_MIDDLE, data[6] & 0x02); 729 input_report_key(input, BTN_MIDDLE, data[6] & 0x02);
691 input_report_key(input, BTN_RIGHT, data[6] & 0x04); 730 input_report_key(input, BTN_RIGHT, data[6] & 0x04);
@@ -712,7 +751,7 @@ static int wacom_intuos_irq(struct wacom_wac *wacom)
712 } 751 }
713 } 752 }
714 } else if ((features->type < INTUOS3S || features->type == INTUOS3L || 753 } else if ((features->type < INTUOS3S || features->type == INTUOS3L ||
715 features->type == INTUOS4L) && 754 features->type == INTUOS4L || features->type == INTUOS5L) &&
716 wacom->tool[idx] == BTN_TOOL_LENS) { 755 wacom->tool[idx] == BTN_TOOL_LENS) {
717 /* Lens cursor packets */ 756 /* Lens cursor packets */
718 input_report_key(input, BTN_LEFT, data[8] & 0x01); 757 input_report_key(input, BTN_LEFT, data[8] & 0x01);
@@ -1114,6 +1153,15 @@ void wacom_wac_irq(struct wacom_wac *wacom_wac, size_t len)
1114 sync = wacom_intuos_irq(wacom_wac); 1153 sync = wacom_intuos_irq(wacom_wac);
1115 break; 1154 break;
1116 1155
1156 case INTUOS5S:
1157 case INTUOS5:
1158 case INTUOS5L:
1159 if (len == WACOM_PKGLEN_BBTOUCH3)
1160 sync = wacom_bpt3_touch(wacom_wac);
1161 else
1162 sync = wacom_intuos_irq(wacom_wac);
1163 break;
1164
1117 case TABLETPC: 1165 case TABLETPC:
1118 case TABLETPC2FG: 1166 case TABLETPC2FG:
1119 sync = wacom_tpc_irq(wacom_wac, len); 1167 sync = wacom_tpc_irq(wacom_wac, len);
@@ -1188,7 +1236,8 @@ void wacom_setup_device_quirks(struct wacom_features *features)
1188 1236
1189 /* these device have multiple inputs */ 1237 /* these device have multiple inputs */
1190 if (features->type == TABLETPC || features->type == TABLETPC2FG || 1238 if (features->type == TABLETPC || features->type == TABLETPC2FG ||
1191 features->type == BAMBOO_PT || features->type == WIRELESS) 1239 features->type == BAMBOO_PT || features->type == WIRELESS ||
1240 (features->type >= INTUOS5S && features->type <= INTUOS5L))
1192 features->quirks |= WACOM_QUIRK_MULTI_INPUT; 1241 features->quirks |= WACOM_QUIRK_MULTI_INPUT;
1193 1242
1194 /* quirk for bamboo touch with 2 low res touches */ 1243 /* quirk for bamboo touch with 2 low res touches */
@@ -1355,6 +1404,50 @@ void wacom_setup_input_capabilities(struct input_dev *input_dev,
1355 wacom_setup_intuos(wacom_wac); 1404 wacom_setup_intuos(wacom_wac);
1356 break; 1405 break;
1357 1406
1407 case INTUOS5:
1408 case INTUOS5L:
1409 if (features->device_type == BTN_TOOL_PEN) {
1410 __set_bit(BTN_7, input_dev->keybit);
1411 __set_bit(BTN_8, input_dev->keybit);
1412 }
1413 /* fall through */
1414
1415 case INTUOS5S:
1416 __set_bit(INPUT_PROP_POINTER, input_dev->propbit);
1417
1418 if (features->device_type == BTN_TOOL_PEN) {
1419 for (i = 0; i < 7; i++)
1420 __set_bit(BTN_0 + i, input_dev->keybit);
1421
1422 input_set_abs_params(input_dev, ABS_DISTANCE, 0,
1423 features->distance_max,
1424 0, 0);
1425
1426 input_set_abs_params(input_dev, ABS_Z, -900, 899, 0, 0);
1427
1428 wacom_setup_intuos(wacom_wac);
1429 } else if (features->device_type == BTN_TOOL_FINGER) {
1430 __clear_bit(ABS_MISC, input_dev->absbit);
1431
1432 __set_bit(BTN_TOOL_FINGER, input_dev->keybit);
1433 __set_bit(BTN_TOOL_DOUBLETAP, input_dev->keybit);
1434 __set_bit(BTN_TOOL_TRIPLETAP, input_dev->keybit);
1435 __set_bit(BTN_TOOL_QUADTAP, input_dev->keybit);
1436
1437 input_mt_init_slots(input_dev, 16);
1438
1439 input_set_abs_params(input_dev, ABS_MT_TOUCH_MAJOR,
1440 0, 255, 0, 0);
1441
1442 input_set_abs_params(input_dev, ABS_MT_POSITION_X,
1443 0, features->x_max,
1444 features->x_fuzz, 0);
1445 input_set_abs_params(input_dev, ABS_MT_POSITION_Y,
1446 0, features->y_max,
1447 features->y_fuzz, 0);
1448 }
1449 break;
1450
1358 case INTUOS4: 1451 case INTUOS4:
1359 case INTUOS4L: 1452 case INTUOS4L:
1360 __set_bit(BTN_7, input_dev->keybit); 1453 __set_bit(BTN_7, input_dev->keybit);
@@ -1629,6 +1722,21 @@ static const struct wacom_features wacom_features_0xBB =
1629static const struct wacom_features wacom_features_0xBC = 1722static const struct wacom_features wacom_features_0xBC =
1630 { "Wacom Intuos4 WL", WACOM_PKGLEN_INTUOS, 40840, 25400, 2047, 1723 { "Wacom Intuos4 WL", WACOM_PKGLEN_INTUOS, 40840, 25400, 2047,
1631 63, INTUOS4, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES }; 1724 63, INTUOS4, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES };
1725static const struct wacom_features wacom_features_0x26 =
1726 { "Wacom Intuos5 touch S", WACOM_PKGLEN_INTUOS, 31496, 19685, 2047,
1727 63, INTUOS5S, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES };
1728static const struct wacom_features wacom_features_0x27 =
1729 { "Wacom Intuos5 touch M", WACOM_PKGLEN_INTUOS, 44704, 27940, 2047,
1730 63, INTUOS5, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES };
1731static const struct wacom_features wacom_features_0x28 =
1732 { "Wacom Intuos5 touch L", WACOM_PKGLEN_INTUOS, 65024, 40640, 2047,
1733 63, INTUOS5L, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES };
1734static const struct wacom_features wacom_features_0x29 =
1735 { "Wacom Intuos5 S", WACOM_PKGLEN_INTUOS, 31496, 19685, 2047,
1736 63, INTUOS5S, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES };
1737static const struct wacom_features wacom_features_0x2A =
1738 { "Wacom Intuos5 M", WACOM_PKGLEN_INTUOS, 44704, 27940, 2047,
1739 63, INTUOS5, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES };
1632static const struct wacom_features wacom_features_0xF4 = 1740static const struct wacom_features wacom_features_0xF4 =
1633 { "Wacom Cintiq 24HD", WACOM_PKGLEN_INTUOS, 104480, 65600, 2047, 1741 { "Wacom Cintiq 24HD", WACOM_PKGLEN_INTUOS, 104480, 65600, 2047,
1634 63, WACOM_24HD, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES }; 1742 63, WACOM_24HD, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES };
@@ -1801,6 +1909,11 @@ const struct usb_device_id wacom_ids[] = {
1801 { USB_DEVICE_WACOM(0xBA) }, 1909 { USB_DEVICE_WACOM(0xBA) },
1802 { USB_DEVICE_WACOM(0xBB) }, 1910 { USB_DEVICE_WACOM(0xBB) },
1803 { USB_DEVICE_WACOM(0xBC) }, 1911 { USB_DEVICE_WACOM(0xBC) },
1912 { USB_DEVICE_WACOM(0x26) },
1913 { USB_DEVICE_WACOM(0x27) },
1914 { USB_DEVICE_WACOM(0x28) },
1915 { USB_DEVICE_WACOM(0x29) },
1916 { USB_DEVICE_WACOM(0x2A) },
1804 { USB_DEVICE_WACOM(0x3F) }, 1917 { USB_DEVICE_WACOM(0x3F) },
1805 { USB_DEVICE_WACOM(0xC5) }, 1918 { USB_DEVICE_WACOM(0xC5) },
1806 { USB_DEVICE_WACOM(0xC6) }, 1919 { USB_DEVICE_WACOM(0xC6) },
diff --git a/drivers/input/tablet/wacom_wac.h b/drivers/input/tablet/wacom_wac.h
index ba5a334e54d6..17ba1868f0cd 100644
--- a/drivers/input/tablet/wacom_wac.h
+++ b/drivers/input/tablet/wacom_wac.h
@@ -38,6 +38,7 @@
38#define WACOM_REPORT_INTUOSREAD 5 38#define WACOM_REPORT_INTUOSREAD 5
39#define WACOM_REPORT_INTUOSWRITE 6 39#define WACOM_REPORT_INTUOSWRITE 6
40#define WACOM_REPORT_INTUOSPAD 12 40#define WACOM_REPORT_INTUOSPAD 12
41#define WACOM_REPORT_INTUOS5PAD 3
41#define WACOM_REPORT_TPC1FG 6 42#define WACOM_REPORT_TPC1FG 6
42#define WACOM_REPORT_TPC2FG 13 43#define WACOM_REPORT_TPC2FG 13
43#define WACOM_REPORT_TPCHID 15 44#define WACOM_REPORT_TPCHID 15
@@ -65,6 +66,9 @@ enum {
65 INTUOS4S, 66 INTUOS4S,
66 INTUOS4, 67 INTUOS4,
67 INTUOS4L, 68 INTUOS4L,
69 INTUOS5S,
70 INTUOS5,
71 INTUOS5L,
68 WACOM_24HD, 72 WACOM_24HD,
69 WACOM_21UX2, 73 WACOM_21UX2,
70 CINTIQ, 74 CINTIQ,