Signed-off-by: Aaron Armstrong Skomra <[email protected]>
---
2.6.32/wacom_sys.c | 6 ++++--
2.6.32/wacom_wac.c | 13 +++++++++++++
2.6.32/wacom_wac.h | 1 +
2.6.38/wacom_sys.c | 6 ++++--
2.6.38/wacom_wac.c | 13 +++++++++++++
2.6.38/wacom_wac.h | 1 +
3.7/wacom_sys.c | 6 ++++--
3.7/wacom_wac.c | 13 +++++++++++++
3.7/wacom_wac.h | 1 +
9 files changed, 54 insertions(+), 6 deletions(-)
diff --git a/2.6.32/wacom_sys.c b/2.6.32/wacom_sys.c
index 84f9d0d04a8e..3ec15802bd84 100644
--- a/2.6.32/wacom_sys.c
+++ b/2.6.32/wacom_sys.c
@@ -223,7 +223,8 @@ static int wacom_parse_hid(struct usb_interface *intf,
struct hid_descriptor *hi
switch (data) {
case HID_USAGE_WT_X:
features->device_type = BTN_TOOL_TRIPLETAP;
- if (features->type == INTUOSP2) {
+ if (features->type == INTUOSP2 ||
+ features->type == INTUOSP2S) {
features->pktlen =
WACOM_PKGLEN_INTUOSP2T;
features->unit = report[i+4];
features->unitExpo = report[i+6];
@@ -233,7 +234,8 @@ static int wacom_parse_hid(struct usb_interface *intf,
struct hid_descriptor *hi
break;
case HID_USAGE_WT_Y:
- if (features->type == INTUOSP2) {
+ if (features->type == INTUOSP2 ||
+ features->type == INTUOSP2S) {
features->y_phy =
get_unaligned_le16(&report[i + 4]);
features->y_max =
get_unaligned_le16(&report[i + 7]);
}
diff --git a/2.6.32/wacom_wac.c b/2.6.32/wacom_wac.c
index 3aa3940eb011..4c846f870f6c 100644
--- a/2.6.32/wacom_wac.c
+++ b/2.6.32/wacom_wac.c
@@ -1025,6 +1025,7 @@ static int wacom_multitouch_generic(struct wacom_wac
*wacom)
bytes_header = 3;
break;
case INTUOSP2:
+ case INTUOSP2S:
current_num_contacts = data[1];
contacts_per_packet = 5;
bytes_per_packet = WACOM_BYTES_PER_INTUOSP2_PACKET;
@@ -1071,6 +1072,7 @@ static int wacom_multitouch_generic(struct wacom_wac
*wacom)
break;
case INTUOSP2:
+ case INTUOSP2S:
contact_id = data[offset];
prox = data[offset + 1] & 0x01;
x = get_unaligned_le16(&data[offset + 2]);
@@ -1700,6 +1702,11 @@ static int wacom_mspro_pad_irq(struct wacom_wac *wacom)
ring = le16_to_cpup((__le16 *)&data[4]);
keys = 0;
break;
+ case 7:
+ buttons = (data[1]) | (data[3] << 6);
+ ring = le16_to_cpup((__le16 *)&data[4]);
+ keys = 0;
+ break;
case 0:
buttons = 0;
ring = WACOM_INTUOSP2_RING_UNTOUCHED; /* No ring */
@@ -1937,6 +1944,7 @@ void wacom_wac_irq(struct wacom_wac *wacom_wac, size_t
len)
case WACOM_MSPRO:
case INTUOSP2:
+ case INTUOSP2S:
case CINTIQ_16:
if (len == WACOM_PKGLEN_INTUOSP2T &&
wacom_wac->data[0] == WACOM_REPORT_VENDOR_DEF_TOUCH)
@@ -2306,6 +2314,7 @@ void wacom_setup_input_capabilities(struct input_dev
*input_dev,
break;
case INTUOSP2:
+ case INTUOSP2S:
if (features->device_type == BTN_TOOL_TRIPLETAP) {
for (i = 0; i < 10; i++)
wacom_wac->slots[i] = -1;
@@ -3072,6 +3081,9 @@ static const struct wacom_features wacom_features_0x390 =
WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET,
WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET,
.oVid = USB_VENDOR_ID_WACOM };
+static const struct wacom_features wacom_features_0x392 =
+ { "Wacom Intuos Pro S", WACOM_PKGLEN_INTUOSP2, 31920, 19950, 8191, 63,
+ INTUOSP2S, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 7, .touch_max = 10 };
#define USB_DEVICE_WACOM(prod) \
USB_DEVICE(USB_VENDOR_ID_WACOM, prod), \
@@ -3258,6 +3270,7 @@ const struct usb_device_id wacom_ids[] = {
{ USB_DEVICE_WACOM(0x37E) },
{ USB_DEVICE_WACOM(0x382) },
{ USB_DEVICE_DETAILED(0x390, USB_CLASS_HID, 0, 0) },
+ { USB_DEVICE_DETAILED(0x392, USB_CLASS_HID, 0, 0) },
#ifndef RHEL6_RELEASE
{ USB_DEVICE_WACOM(0x4001) },
{ USB_DEVICE_WACOM(0x4004) },
diff --git a/2.6.32/wacom_wac.h b/2.6.32/wacom_wac.h
index 45e865bbf5ac..6b4a9fd84d33 100755
--- a/2.6.32/wacom_wac.h
+++ b/2.6.32/wacom_wac.h
@@ -129,6 +129,7 @@ enum {
WACOM_MSPROT,
DTH1152T,
INTUOSP2,
+ INTUOSP2S,
INTUOSHT3,
TABLETPC, /* add new TPC below */
TABLETPCE,
diff --git a/2.6.38/wacom_sys.c b/2.6.38/wacom_sys.c
index 496f40751dfb..cce702479307 100644
--- a/2.6.38/wacom_sys.c
+++ b/2.6.38/wacom_sys.c
@@ -359,7 +359,8 @@ static int wacom_parse_hid(struct usb_interface *intf,
case HID_USAGE_WT_X:
if (finger)
features->device_type = BTN_TOOL_FINGER;
- if (features->type == INTUOSP2) {
+ if (features->type == INTUOSP2 ||
+ features->type == INTUOSP2S) {
features->touch_max = 10;
features->pktlen =
WACOM_PKGLEN_INTUOSP2T;
features->unit = report[i+4];
@@ -370,7 +371,8 @@ static int wacom_parse_hid(struct usb_interface *intf,
break;
case HID_USAGE_WT_Y:
- if (features->type == INTUOSP2) {
+ if (features->type == INTUOSP2 ||
+ features->type == INTUOSP2S) {
features->y_phy =
get_unaligned_le16(&report[i + 4]);
features->y_max =
get_unaligned_le16(&report[i + 7]);
}
diff --git a/2.6.38/wacom_wac.c b/2.6.38/wacom_wac.c
index 032e0701b616..a0afc2f4513c 100644
--- a/2.6.38/wacom_wac.c
+++ b/2.6.38/wacom_wac.c
@@ -1250,6 +1250,7 @@ static int wacom_multitouch_generic(struct wacom_wac
*wacom)
bytes_header = 3;
break;
case INTUOSP2:
+ case INTUOSP2S:
current_num_contacts = data[1];
contacts_per_packet = 5;
bytes_per_packet = WACOM_BYTES_PER_INTUOSP2_PACKET;
@@ -1306,6 +1307,7 @@ static int wacom_multitouch_generic(struct wacom_wac
*wacom)
break;
case INTUOSP2:
+ case INTUOSP2S:
contact_id = data[offset];
prox = data[offset + 1] & 0x01;
x = get_unaligned_le16(&data[offset + 2]);
@@ -1904,6 +1906,11 @@ static int wacom_mspro_pad_irq(struct wacom_wac *wacom)
ring = le16_to_cpup((__le16 *)&data[4]);
keys = 0;
break;
+ case 7:
+ buttons = (data[1]) | (data[3] << 6);
+ ring = le16_to_cpup((__le16 *)&data[4]);
+ keys = 0;
+ break;
case 0:
buttons = 0;
ring = WACOM_INTUOSP2_RING_UNTOUCHED; /* No ring */
@@ -2141,6 +2148,7 @@ void wacom_wac_irq(struct wacom_wac *wacom_wac, size_t
len)
case WACOM_MSPRO:
case INTUOSP2:
+ case INTUOSP2S:
case CINTIQ_16:
if (len == WACOM_PKGLEN_INTUOSP2T &&
wacom_wac->data[0] == WACOM_REPORT_VENDOR_DEF_TOUCH)
@@ -2563,6 +2571,7 @@ int wacom_setup_input_capabilities(struct input_dev
*input_dev,
break;
case INTUOSP2:
+ case INTUOSP2S:
if (features->device_type == BTN_TOOL_PEN) {
__set_bit(BTN_STYLUS3, input_dev->keybit);
wacom_wac->previous_ring =
WACOM_INTUOSP2_RING_UNTOUCHED;
@@ -3421,6 +3430,9 @@ static const struct wacom_features wacom_features_0x390 =
WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET,
WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET,
.oVid = USB_VENDOR_ID_WACOM };
+static const struct wacom_features wacom_features_0x392 =
+ { "Wacom Intuos Pro S", WACOM_PKGLEN_INTUOSP2, 31920, 19950, 8191, 63,
+ INTUOSP2S, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 7, .touch_max = 10 };
#define USB_DEVICE_WACOM(prod) \
USB_DEVICE(USB_VENDOR_ID_WACOM, prod), \
@@ -3611,6 +3623,7 @@ const struct usb_device_id wacom_ids[] = {
{ USB_DEVICE_WACOM(0x37E) },
{ USB_DEVICE_WACOM(0x382) },
{ USB_DEVICE_DETAILED(0x390, USB_CLASS_HID, 0, 0) },
+ { USB_DEVICE_DETAILED(0x392, USB_CLASS_HID, 0, 0) },
{ USB_DEVICE_WACOM(0x4001) },
{ USB_DEVICE_WACOM(0x4004) },
{ USB_DEVICE_WACOM(0x5000) },
diff --git a/2.6.38/wacom_wac.h b/2.6.38/wacom_wac.h
index c2e337d41427..81729d268af3 100644
--- a/2.6.38/wacom_wac.h
+++ b/2.6.38/wacom_wac.h
@@ -143,6 +143,7 @@ enum {
WACOM_MSPROT,
DTH1152T,
INTUOSP2,
+ INTUOSP2S,
INTUOSHT3,
WIRELESS,
REMOTE,
diff --git a/3.7/wacom_sys.c b/3.7/wacom_sys.c
index 4e5288d1571c..2e10783a527a 100644
--- a/3.7/wacom_sys.c
+++ b/3.7/wacom_sys.c
@@ -359,7 +359,8 @@ static int wacom_parse_hid(struct usb_interface *intf,
case HID_USAGE_WT_X:
if (finger)
features->device_type = BTN_TOOL_FINGER;
- if (features->type == INTUOSP2) {
+ if (features->type == INTUOSP2 ||
+ features->type == INTUOSP2S) {
features->touch_max = 10;
features->pktlen =
WACOM_PKGLEN_INTUOSP2T;
features->unit = report[i+4];
@@ -370,7 +371,8 @@ static int wacom_parse_hid(struct usb_interface *intf,
break;
case HID_USAGE_WT_Y:
- if (features->type == INTUOSP2) {
+ if (features->type == INTUOSP2 ||
+ features->type == INTUOSP2S) {
features->y_phy =
get_unaligned_le16(&report[i + 4]);
features->y_max =
get_unaligned_le16(&report[i + 7]);
}
diff --git a/3.7/wacom_wac.c b/3.7/wacom_wac.c
index 3eacf483aac2..f2e191debeda 100644
--- a/3.7/wacom_wac.c
+++ b/3.7/wacom_wac.c
@@ -1230,6 +1230,7 @@ static int wacom_multitouch_generic(struct wacom_wac
*wacom)
bytes_header = 3;
break;
case INTUOSP2:
+ case INTUOSP2S:
current_num_contacts = data[1];
contacts_per_packet = 5;
bytes_per_packet = WACOM_BYTES_PER_INTUOSP2_PACKET;
@@ -1286,6 +1287,7 @@ static int wacom_multitouch_generic(struct wacom_wac
*wacom)
break;
case INTUOSP2:
+ case INTUOSP2S:
contact_id = data[offset];
prox = data[offset + 1] & 0x01;
x = get_unaligned_le16(&data[offset + 2]);
@@ -1886,6 +1888,11 @@ static int wacom_mspro_pad_irq(struct wacom_wac *wacom)
ring = le16_to_cpup((__le16 *)&data[4]);
keys = 0;
break;
+ case 7:
+ buttons = (data[1]) | (data[3] << 6);
+ ring = le16_to_cpup((__le16 *)&data[4]);
+ keys = 0;
+ break;
case 0:
buttons = 0;
ring = WACOM_INTUOSP2_RING_UNTOUCHED; /* No ring */
@@ -2123,6 +2130,7 @@ void wacom_wac_irq(struct wacom_wac *wacom_wac, size_t
len)
case WACOM_MSPRO:
case INTUOSP2:
+ case INTUOSP2S:
case CINTIQ_16:
if (len == WACOM_PKGLEN_INTUOSP2T &&
wacom_wac->data[0] == WACOM_REPORT_VENDOR_DEF_TOUCH)
@@ -2534,6 +2542,7 @@ int wacom_setup_input_capabilities(struct input_dev
*input_dev,
break;
case INTUOSP2:
+ case INTUOSP2S:
if (features->device_type == BTN_TOOL_PEN) {
__set_bit(BTN_STYLUS3, input_dev->keybit);
wacom_wac->previous_ring =
WACOM_INTUOSP2_RING_UNTOUCHED;
@@ -3351,6 +3360,9 @@ static const struct wacom_features wacom_features_0x390 =
WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET,
WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET,
.oVid = USB_VENDOR_ID_WACOM };
+static const struct wacom_features wacom_features_0x392 =
+ { "Wacom Intuos Pro S", WACOM_PKGLEN_INTUOSP2, 31920, 19950, 8191, 63,
+ INTUOSP2S, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 7, .touch_max = 10 };
#define USB_DEVICE_WACOM(prod) \
USB_DEVICE(USB_VENDOR_ID_WACOM, prod), \
@@ -3541,6 +3553,7 @@ const struct usb_device_id wacom_ids[] = {
{ USB_DEVICE_WACOM(0x37E) },
{ USB_DEVICE_WACOM(0x382) },
{ USB_DEVICE_DETAILED(0x390, USB_CLASS_HID, 0, 0) },
+ { USB_DEVICE_DETAILED(0x392, USB_CLASS_HID, 0, 0) },
{ USB_DEVICE_WACOM(0x4001) },
{ USB_DEVICE_WACOM(0x4004) },
{ USB_DEVICE_WACOM(0x5000) },
diff --git a/3.7/wacom_wac.h b/3.7/wacom_wac.h
index da7387a3bee2..b25b41fd7f37 100644
--- a/3.7/wacom_wac.h
+++ b/3.7/wacom_wac.h
@@ -143,6 +143,7 @@ enum {
WACOM_MSPROT,
DTH1152T,
INTUOSP2,
+ INTUOSP2S,
INTUOSHT3,
WIRELESS,
REMOTE,
--
2.7.4
_______________________________________________
Linuxwacom-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel