Signed-off-by: Aaron Armstrong Skomra <aaron.sko...@wacom.com> --- 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 Linuxwacom-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel