Signed-off-by: Ping Cheng <ping.ch...@wacom.com> --- 2.6.30/wacom_sys.c | 8 ++++++-- 2.6.30/wacom_wac.c | 45 +++++++++++++++++++++++++++++++++++++++------ 2.6.30/wacom_wac.h | 3 +++ 2.6.38/wacom_sys.c | 3 +++ 2.6.38/wacom_wac.c | 45 +++++++++++++++++++++++++++++++++++++++------ 2.6.38/wacom_wac.h | 3 +++ 3.7/wacom_sys.c | 3 +++ 3.7/wacom_wac.c | 45 +++++++++++++++++++++++++++++++++++++++------ 3.7/wacom_wac.h | 3 +++ 9 files changed, 138 insertions(+), 20 deletions(-)
diff --git a/2.6.30/wacom_sys.c b/2.6.30/wacom_sys.c index ba17b1b..bdb1eb8 100644 --- a/2.6.30/wacom_sys.c +++ b/2.6.30/wacom_sys.c @@ -266,7 +266,8 @@ static int wacom_parse_hid(struct usb_interface *intf, struct hid_descriptor *hi features->type == WACOM_24HDT || features->type == WACOM_MSPROT || features->type == DTH1152T || - features->type == WACOM_27QHDT) { + features->type == WACOM_27QHDT || + features->type == DTH2452T) { /* need to reset back */ features->pktlen = WACOM_PKGLEN_TPC2FG; if (features->type == MTTPC || @@ -275,7 +276,8 @@ static int wacom_parse_hid(struct usb_interface *intf, struct hid_descriptor *hi features->pktlen = WACOM_PKGLEN_MTTPC; else if (features->type == WACOM_24HDT) features->pktlen = WACOM_PKGLEN_MTOUCH; - else if (features->type == WACOM_MSPROT) + else if (features->type == WACOM_MSPROT || + features->type == DTH2452T) features->pktlen = WACOM_PKGLEN_MSPROT; else if (features->type == DTH1152T || features->type == WACOM_27QHDT) @@ -317,6 +319,7 @@ static int wacom_parse_hid(struct usb_interface *intf, struct hid_descriptor *hi case WACOM_MSPROT: case MTTPC_B: + case DTH2452T: features->x_max = get_unaligned_le16(&report[i + 3]); features->x_phy = @@ -394,6 +397,7 @@ static int wacom_parse_hid(struct usb_interface *intf, struct hid_descriptor *hi case WACOM_MSPROT: case MTTPC_B: + case DTH2452T: features->y_max = get_unaligned_le16(&report[i + 3]); features->y_phy = diff --git a/2.6.30/wacom_wac.c b/2.6.30/wacom_wac.c index 90c5c2b..4d4f924 100644 --- a/2.6.30/wacom_wac.c +++ b/2.6.30/wacom_wac.c @@ -227,13 +227,16 @@ static int wacom_dtus_irq(struct wacom_wac *wacom) { unsigned char *data = wacom->data; struct input_dev *input = wacom->input; + struct wacom_features *features = &wacom->features; unsigned short prox, pressure = 0; - if (data[0] != WACOM_REPORT_DTUS && data[0] != WACOM_REPORT_DTUSPAD) { + if (data[0] != WACOM_REPORT_DTUS && data[0] != WACOM_REPORT_DTUSPAD + && data[0] != WACOM_REPORT_DTK2451PAD) { dev_dbg(input->dev.parent, "%s: received unknown report #%d", __func__, data[0]); return 0; - } else if (data[0] == WACOM_REPORT_DTUSPAD) { + } else if (data[0] == WACOM_REPORT_DTUSPAD + || data[0] == WACOM_REPORT_DTK2451PAD) { input_report_key(input, BTN_0, (data[1] & 0x01)); input_report_key(input, BTN_1, (data[1] & 0x02)); input_report_key(input, BTN_2, (data[1] & 0x04)); @@ -264,9 +267,15 @@ static int wacom_dtus_irq(struct wacom_wac *wacom) input_report_key(input, BTN_STYLUS, data[1] & 0x20); input_report_key(input, BTN_STYLUS2, data[1] & 0x40); - input_report_abs(input, ABS_X, get_unaligned_be16(&data[3])); - input_report_abs(input, ABS_Y, get_unaligned_be16(&data[5])); - pressure = ((data[1] & 0x03) << 8) | (data[2] & 0xff); + if (features->type == DTK2451) { + pressure = get_unaligned_le16(&data[2]); + input_report_abs(input, ABS_X, get_unaligned_le16(&data[4])); + input_report_abs(input, ABS_Y, get_unaligned_le16(&data[6])); + } else { + pressure = ((data[1] & 0x03) << 8) | (data[2] & 0xff); + input_report_abs(input, ABS_X, get_unaligned_be16(&data[3])); + input_report_abs(input, ABS_Y, get_unaligned_be16(&data[5])); + } input_report_abs(input, ABS_PRESSURE, pressure); input_report_key(input, BTN_TOUCH, pressure > 10); @@ -988,6 +997,7 @@ static int wacom_multitouch_generic(struct wacom_wac *wacom) break; case WACOM_MSPROT: case DTH1152T: + case DTH2452T: current_num_contacts = data[2]; contacts_per_packet = 5; bytes_per_packet = WACOM_BYTES_PER_MSPROT_PACKET; @@ -1032,6 +1042,7 @@ static int wacom_multitouch_generic(struct wacom_wac *wacom) case WACOM_MSPROT: case DTH1152T: + case DTH2452T: prox = data[offset] & 0x1; contact_id = get_unaligned_le16(&data[offset + 1]); x = get_unaligned_le16(&data[offset + 3]); @@ -1853,6 +1864,7 @@ void wacom_wac_irq(struct wacom_wac *wacom_wac, size_t len) case DTUS: case DTUSX: + case DTK2451: sync = wacom_dtus_irq(wacom_wac); break; @@ -1890,6 +1902,7 @@ void wacom_wac_irq(struct wacom_wac *wacom_wac, size_t len) case WACOM_24HDT: case WACOM_27QHDT: case DTH1152T: + case DTH2452T: case WACOM_MSPROT: sync = wacom_multitouch_generic(wacom_wac); break; @@ -2279,6 +2292,7 @@ void wacom_setup_input_capabilities(struct input_dev *input_dev, case MTTPC_B: case MTTPC_C: case DTH1152T: + case DTH2452T: case WACOM_27QHDT: if (features->device_type == BTN_TOOL_TRIPLETAP) { for (i = 0; i < 10; i++) @@ -2315,11 +2329,12 @@ void wacom_setup_input_capabilities(struct input_dev *input_dev, case DTUS: case DTUSX: + case DTK2451: case PL: case DTU: __set_bit(BTN_TOOL_RUBBER, input_dev->keybit); __set_bit(BTN_STYLUS2, input_dev->keybit); - if (features->type == DTUS) { + if (features->type == DTUS || features->type == DTK2451) { input_set_capability(input_dev, EV_MSC, MSC_SERIAL); } /* fall through */ @@ -2907,6 +2922,21 @@ static const struct wacom_features wacom_features_0x368 = static const struct wacom_features wacom_features_0x37C = { "Wacom Cintiq Pro 24", WACOM_PKGLEN_MSPRO, 105286, 59574, 8191, 63, /* Pen-only */ WACOM_MSPRO, 0, WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET }; +static const struct wacom_features wacom_features_0x37D = + { "Wacom DTH-2452", WACOM_PKGLEN_DTH1152, 53104, 30046, 2047, 0, + DTK2451, 4, + WACOM_DTU_OFFSET, WACOM_DTU_OFFSET, + WACOM_DTU_OFFSET, WACOM_DTU_OFFSET, + .oVid = USB_VENDOR_ID_WACOM, .oPid = 0x37E }; +static const struct wacom_features wacom_features_0x37E = + { "Wacom DTH-2452 Touch", WACOM_PKGLEN_MSPROT, + .type = DTH2452T, .touch_max = 10, .oVid = USB_VENDOR_ID_WACOM, + .oPid = 0x37D }; /* Touch */ +static const struct wacom_features wacom_features_0x382 = + { "Wacom DTK-2451", WACOM_PKGLEN_DTH1152, 53104, 30046, 2047, 0, + DTK2451, 4, + WACOM_DTU_OFFSET, WACOM_DTU_OFFSET, + WACOM_DTU_OFFSET, WACOM_DTU_OFFSET }; #define USB_DEVICE_WACOM(prod) \ USB_DEVICE(USB_VENDOR_ID_WACOM, prod), \ @@ -3073,6 +3103,9 @@ const struct usb_device_id wacom_ids[] = { { USB_DEVICE_WACOM(0x35A) }, { USB_DEVICE_WACOM(0x368) }, { USB_DEVICE_WACOM(0x37C) }, + { USB_DEVICE_WACOM(0x37D) }, + { USB_DEVICE_WACOM(0x37E) }, + { USB_DEVICE_WACOM(0x382) }, { USB_DEVICE_WACOM(0x4001) }, { USB_DEVICE_WACOM(0x4004) }, { USB_DEVICE_WACOM(0x5000) }, diff --git a/2.6.30/wacom_wac.h b/2.6.30/wacom_wac.h index 10ec2e6..0b128e3 100755 --- a/2.6.30/wacom_wac.h +++ b/2.6.30/wacom_wac.h @@ -69,6 +69,7 @@ #define WACOM_REPORT_DTUS 17 #define WACOM_REPORT_MSPROPAD 17 #define WACOM_REPORT_MSPRODEVICE 19 +#define WACOM_REPORT_DTK2451PAD 21 #define WACOM_REPORT_USB 192 #define WACOM_REPORT_VENDOR_DEF_TOUCH 33 #define WAC_CMD_LED_CONTROL_GENERIC 50 @@ -93,6 +94,7 @@ enum { DTUS, DTUSX, DTH1152, + DTK2451, INTUOS, INTUOS3S, INTUOS3, @@ -127,6 +129,7 @@ enum { INTUOSP2, TABLETPC, TABLETPC2FG, + DTH2452T, MTTPC, MTTPC_B, MTTPC_C, diff --git a/2.6.38/wacom_sys.c b/2.6.38/wacom_sys.c index cbf36b5..c181907 100644 --- a/2.6.38/wacom_sys.c +++ b/2.6.38/wacom_sys.c @@ -416,6 +416,7 @@ static int wacom_parse_hid(struct usb_interface *intf, break; case WACOM_MSPROT: + case DTH2452T: features->pktlen = WACOM_PKGLEN_MSPROT; break; @@ -455,6 +456,7 @@ static int wacom_parse_hid(struct usb_interface *intf, case WACOM_MSPROT: case MTTPC_B: + case DTH2452T: features->x_max = get_unaligned_le16(&report[i + 3]); features->x_phy = @@ -530,6 +532,7 @@ static int wacom_parse_hid(struct usb_interface *intf, case WACOM_MSPROT: case MTTPC_B: + case DTH2452T: features->y_max = get_unaligned_le16(&report[i + 3]); features->y_phy = diff --git a/2.6.38/wacom_wac.c b/2.6.38/wacom_wac.c index 066c948..fa22356 100644 --- a/2.6.38/wacom_wac.c +++ b/2.6.38/wacom_wac.c @@ -271,13 +271,16 @@ static int wacom_dtus_irq(struct wacom_wac *wacom) { unsigned char *data = wacom->data; struct input_dev *input = wacom->input; + struct wacom_features *features = &wacom->features; unsigned short prox, pressure = 0; - if (data[0] != WACOM_REPORT_DTUS && data[0] != WACOM_REPORT_DTUSPAD) { + if (data[0] != WACOM_REPORT_DTUS && data[0] != WACOM_REPORT_DTUSPAD + && data[0] != WACOM_REPORT_DTK2451PAD) { dev_dbg(input->dev.parent, "%s: received unknown report #%d", __func__, data[0]); return 0; - } else if (data[0] == WACOM_REPORT_DTUSPAD) { + } else if (data[0] == WACOM_REPORT_DTUSPAD + || data[0] == WACOM_REPORT_DTK2451PAD) { input_report_key(input, BTN_0, (data[1] & 0x01)); input_report_key(input, BTN_1, (data[1] & 0x02)); input_report_key(input, BTN_2, (data[1] & 0x04)); @@ -308,9 +311,15 @@ static int wacom_dtus_irq(struct wacom_wac *wacom) input_report_key(input, BTN_STYLUS, data[1] & 0x20); input_report_key(input, BTN_STYLUS2, data[1] & 0x40); - input_report_abs(input, ABS_X, get_unaligned_be16(&data[3])); - input_report_abs(input, ABS_Y, get_unaligned_be16(&data[5])); - pressure = ((data[1] & 0x03) << 8) | (data[2] & 0xff); + if (features->type == DTK2451) { + pressure = get_unaligned_le16(&data[2]); + input_report_abs(input, ABS_X, get_unaligned_le16(&data[4])); + input_report_abs(input, ABS_Y, get_unaligned_le16(&data[6])); + } else { + pressure = ((data[1] & 0x03) << 8) | (data[2] & 0xff); + input_report_abs(input, ABS_X, get_unaligned_be16(&data[3])); + input_report_abs(input, ABS_Y, get_unaligned_be16(&data[5])); + } input_report_abs(input, ABS_PRESSURE, pressure); input_report_key(input, BTN_TOUCH, pressure > 10); @@ -1218,6 +1227,7 @@ static int wacom_multitouch_generic(struct wacom_wac *wacom) break; case WACOM_MSPROT: case DTH1152T: + case DTH2452T: current_num_contacts = data[2]; contacts_per_packet = 5; bytes_per_packet = WACOM_BYTES_PER_MSPROT_PACKET; @@ -1270,6 +1280,7 @@ static int wacom_multitouch_generic(struct wacom_wac *wacom) case WACOM_MSPROT: case DTH1152T: + case DTH2452T: prox = data[offset] & 0x1; contact_id = get_unaligned_le16(&data[offset + 1]); x = get_unaligned_le16(&data[offset + 3]); @@ -2060,6 +2071,7 @@ void wacom_wac_irq(struct wacom_wac *wacom_wac, size_t len) case DTUS: case DTUSX: + case DTK2451: sync = wacom_dtus_irq(wacom_wac); break; @@ -2099,6 +2111,7 @@ void wacom_wac_irq(struct wacom_wac *wacom_wac, size_t len) case WACOM_24HDT: case WACOM_27QHDT: case DTH1152T: + case DTH2452T: case WACOM_MSPROT: sync = wacom_multitouch_generic(wacom_wac); break; @@ -2570,6 +2583,7 @@ int wacom_setup_input_capabilities(struct input_dev *input_dev, /* fall through */ case DTH1152T: + case DTH2452T: case WACOM_MSPROT: if (features->device_type == BTN_TOOL_FINGER) { input_set_abs_params(input_dev, ABS_MT_TOUCH_MAJOR, 0, features->x_max, 0, 0); @@ -2622,11 +2636,12 @@ int wacom_setup_input_capabilities(struct input_dev *input_dev, case DTUS: case DTUSX: + case DTK2451: case PL: case DTU: __set_bit(BTN_TOOL_RUBBER, input_dev->keybit); __set_bit(BTN_STYLUS2, input_dev->keybit); - if (features->type == DTUS) { + if (features->type == DTUS || features->type == DTK2451) { input_set_capability(input_dev, EV_MSC, MSC_SERIAL); } /* fall through */ @@ -3308,6 +3323,21 @@ static const struct wacom_features wacom_features_0x37C = WACOM_MSPRO, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 0, WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET }; +static const struct wacom_features wacom_features_0x37D = + { "Wacom DTH-2452", WACOM_PKGLEN_DTH1152, 53104, 30046, 2047, + 0, DTK2451, WACOM_INTUOS_RES, WACOM_INTUOS_RES, 4, + WACOM_DTU_OFFSET, WACOM_DTU_OFFSET, + WACOM_DTU_OFFSET, WACOM_DTU_OFFSET, + .oVid = USB_VENDOR_ID_WACOM, .oPid = 0x37E }; +static const struct wacom_features wacom_features_0x37E = + { "Wacom DTH-2452 Touch", WACOM_PKGLEN_MSPROT, + .type = DTH2452T, .touch_max = 10, .oVid = USB_VENDOR_ID_WACOM, + .oPid = 0x37D }; /* Touch */ +static const struct wacom_features wacom_features_0x382 = + { "Wacom DTK-2451", WACOM_PKGLEN_DTH1152, 53104, 30046, 2047, + 0, DTK2451, WACOM_INTUOS_RES, WACOM_INTUOS_RES, 4, + WACOM_DTU_OFFSET, WACOM_DTU_OFFSET, + WACOM_DTU_OFFSET, WACOM_DTU_OFFSET }; #define USB_DEVICE_WACOM(prod) \ USB_DEVICE(USB_VENDOR_ID_WACOM, prod), \ @@ -3487,6 +3517,9 @@ const struct usb_device_id wacom_ids[] = { { USB_DEVICE_WACOM(0x35A) }, { USB_DEVICE_WACOM(0x368) }, { USB_DEVICE_WACOM(0x37C) }, + { USB_DEVICE_WACOM(0x37D) }, + { USB_DEVICE_WACOM(0x37E) }, + { USB_DEVICE_WACOM(0x382) }, { 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 0b7f1d5..cb9d37b 100644 --- a/2.6.38/wacom_wac.h +++ b/2.6.38/wacom_wac.h @@ -76,6 +76,7 @@ #define WACOM_REPORT_MSPROPAD 17 #define WACOM_REPORT_TPC1FGE 18 #define WACOM_REPORT_MSPRODEVICE 19 +#define WACOM_REPORT_DTK2451PAD 21 #define WACOM_REPORT_24HDT 1 #define WACOM_REPORT_WL 128 #define WACOM_REPORT_USB 192 @@ -106,6 +107,7 @@ enum { DTUS, DTUSX, DTH1152, + DTK2451, INTUOS, INTUOS3S, INTUOS3, @@ -144,6 +146,7 @@ enum { TABLETPC, /* add new TPC below */ TABLETPCE, TABLETPC2FG, + DTH2452T, MTSCREEN, MTTPC, MTTPC_B, diff --git a/3.7/wacom_sys.c b/3.7/wacom_sys.c index e07d131..ef880dc 100644 --- a/3.7/wacom_sys.c +++ b/3.7/wacom_sys.c @@ -416,6 +416,7 @@ static int wacom_parse_hid(struct usb_interface *intf, break; case WACOM_MSPROT: + case DTH2452T: features->pktlen = WACOM_PKGLEN_MSPROT; break; @@ -455,6 +456,7 @@ static int wacom_parse_hid(struct usb_interface *intf, case WACOM_MSPROT: case MTTPC_B: + case DTH2452T: features->x_max = get_unaligned_le16(&report[i + 3]); features->x_phy = @@ -530,6 +532,7 @@ static int wacom_parse_hid(struct usb_interface *intf, case WACOM_MSPROT: case MTTPC_B: + case DTH2452T: features->y_max = get_unaligned_le16(&report[i + 3]); features->y_phy = diff --git a/3.7/wacom_wac.c b/3.7/wacom_wac.c index 0a2e535..1f225db 100644 --- a/3.7/wacom_wac.c +++ b/3.7/wacom_wac.c @@ -271,13 +271,16 @@ static int wacom_dtus_irq(struct wacom_wac *wacom) { char *data = wacom->data; struct input_dev *input = wacom->input; + struct wacom_features *features = &wacom->features; unsigned short prox, pressure = 0; - if (data[0] != WACOM_REPORT_DTUS && data[0] != WACOM_REPORT_DTUSPAD) { + if (data[0] != WACOM_REPORT_DTUS && data[0] != WACOM_REPORT_DTUSPAD + && data[0] != WACOM_REPORT_DTK2451PAD) { dev_dbg(input->dev.parent, "%s: received unknown report #%d", __func__, data[0]); return 0; - } else if (data[0] == WACOM_REPORT_DTUSPAD) { + } else if (data[0] == WACOM_REPORT_DTUSPAD + || data[0] == WACOM_REPORT_DTK2451PAD) { input_report_key(input, BTN_0, (data[1] & 0x01)); input_report_key(input, BTN_1, (data[1] & 0x02)); input_report_key(input, BTN_2, (data[1] & 0x04)); @@ -308,9 +311,15 @@ static int wacom_dtus_irq(struct wacom_wac *wacom) input_report_key(input, BTN_STYLUS, data[1] & 0x20); input_report_key(input, BTN_STYLUS2, data[1] & 0x40); - input_report_abs(input, ABS_X, get_unaligned_be16(&data[3])); - input_report_abs(input, ABS_Y, get_unaligned_be16(&data[5])); - pressure = ((data[1] & 0x03) << 8) | (data[2] & 0xff); + if (features->type == DTK2451) { + pressure = get_unaligned_le16(&data[2]); + input_report_abs(input, ABS_X, get_unaligned_le16(&data[4])); + input_report_abs(input, ABS_Y, get_unaligned_le16(&data[6])); + } else { + pressure = ((data[1] & 0x03) << 8) | (data[2] & 0xff); + input_report_abs(input, ABS_X, get_unaligned_be16(&data[3])); + input_report_abs(input, ABS_Y, get_unaligned_be16(&data[5])); + } input_report_abs(input, ABS_PRESSURE, pressure); input_report_key(input, BTN_TOUCH, pressure > 10); @@ -1198,6 +1207,7 @@ static int wacom_multitouch_generic(struct wacom_wac *wacom) break; case WACOM_MSPROT: case DTH1152T: + case DTH2452T: current_num_contacts = data[2]; contacts_per_packet = 5; bytes_per_packet = WACOM_BYTES_PER_MSPROT_PACKET; @@ -1250,6 +1260,7 @@ static int wacom_multitouch_generic(struct wacom_wac *wacom) case WACOM_MSPROT: case DTH1152T: + case DTH2452T: prox = data[offset] & 0x1; contact_id = get_unaligned_le16(&data[offset + 1]); x = get_unaligned_le16(&data[offset + 3]); @@ -2042,6 +2053,7 @@ void wacom_wac_irq(struct wacom_wac *wacom_wac, size_t len) case DTUS: case DTUSX: + case DTK2451: sync = wacom_dtus_irq(wacom_wac); break; @@ -2081,6 +2093,7 @@ void wacom_wac_irq(struct wacom_wac *wacom_wac, size_t len) case WACOM_24HDT: case WACOM_27QHDT: case DTH1152T: + case DTH2452T: case WACOM_MSPROT: sync = wacom_multitouch_generic(wacom_wac); break; @@ -2526,6 +2539,7 @@ int wacom_setup_input_capabilities(struct input_dev *input_dev, /* fall through */ case DTH1152T: + case DTH2452T: case WACOM_MSPROT: if (features->device_type == BTN_TOOL_FINGER) { input_set_abs_params(input_dev, ABS_MT_TOUCH_MAJOR, 0, features->x_max, 0, 0); @@ -2567,11 +2581,12 @@ int wacom_setup_input_capabilities(struct input_dev *input_dev, case DTUS: case DTUSX: + case DTK2451: case PL: case DTU: __set_bit(BTN_TOOL_RUBBER, input_dev->keybit); __set_bit(BTN_STYLUS2, input_dev->keybit); - if (features->type == DTUS) { + if (features->type == DTUS || features->type == DTK2451) { input_set_capability(input_dev, EV_MSC, MSC_SERIAL); } /* fall through */ @@ -3238,6 +3253,21 @@ static const struct wacom_features wacom_features_0x37C = WACOM_MSPRO, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 0, WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET }; +static const struct wacom_features wacom_features_0x37D = + { "Wacom DTH-2452", WACOM_PKGLEN_DTH1152, 53104, 30046, 2047, + 0, DTK2451, WACOM_INTUOS_RES, WACOM_INTUOS_RES, 4, + WACOM_DTU_OFFSET, WACOM_DTU_OFFSET, + WACOM_DTU_OFFSET, WACOM_DTU_OFFSET, + .oVid = USB_VENDOR_ID_WACOM, .oPid = 0x37E }; +static const struct wacom_features wacom_features_0x37E = + { "Wacom DTH-2452 Touch", WACOM_PKGLEN_MSPROT, + .type = DTH2452T, .touch_max = 10, .oVid = USB_VENDOR_ID_WACOM, + .oPid = 0x37D }; /* Touch */ +static const struct wacom_features wacom_features_0x382 = + { "Wacom DTK-2451", WACOM_PKGLEN_DTH1152, 53104, 30046, 2047, + 0, DTK2451, WACOM_INTUOS_RES, WACOM_INTUOS_RES, 4, + WACOM_DTU_OFFSET, WACOM_DTU_OFFSET, + WACOM_DTU_OFFSET, WACOM_DTU_OFFSET }; #define USB_DEVICE_WACOM(prod) \ USB_DEVICE(USB_VENDOR_ID_WACOM, prod), \ @@ -3417,6 +3447,9 @@ const struct usb_device_id wacom_ids[] = { { USB_DEVICE_WACOM(0x35A) }, { USB_DEVICE_WACOM(0x368) }, { USB_DEVICE_WACOM(0x37C) }, + { USB_DEVICE_WACOM(0x37D) }, + { USB_DEVICE_WACOM(0x37E) }, + { USB_DEVICE_WACOM(0x382) }, { 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 ce9b5dd..3bfdf04 100644 --- a/3.7/wacom_wac.h +++ b/3.7/wacom_wac.h @@ -76,6 +76,7 @@ #define WACOM_REPORT_MSPROPAD 17 #define WACOM_REPORT_TPC1FGE 18 #define WACOM_REPORT_MSPRODEVICE 19 +#define WACOM_REPORT_DTK2451PAD 21 #define WACOM_REPORT_24HDT 1 #define WACOM_REPORT_WL 128 #define WACOM_REPORT_USB 192 @@ -106,6 +107,7 @@ enum { DTUS, DTUSX, DTH1152, + DTK2451, INTUOS, INTUOS3S, INTUOS3, @@ -144,6 +146,7 @@ enum { TABLETPC, /* add new TPC below */ TABLETPCE, TABLETPC2FG, + DTH2452T, MTSCREEN, MTTPC, MTTPC_B, -- 2.14.3 ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Linuxwacom-devel mailing list Linuxwacom-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel