Signed-off-by: Ping Cheng <[email protected]>
---
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel