Signed-off-by: Ping Cheng <[email protected]>
---
2.6.32/wacom_wac.c | 31 ++++++++++++++++++++++++++-----
2.6.32/wacom_wac.h | 1 +
2.6.38/wacom_wac.c | 31 ++++++++++++++++++++++++++-----
2.6.38/wacom_wac.h | 1 +
3.7/wacom_wac.c | 31 ++++++++++++++++++++++++++-----
3.7/wacom_wac.h | 1 +
6 files changed, 81 insertions(+), 15 deletions(-)
diff --git a/2.6.32/wacom_wac.c b/2.6.32/wacom_wac.c
index c29c75c..c4705f8 100644
--- a/2.6.32/wacom_wac.c
+++ b/2.6.32/wacom_wac.c
@@ -303,6 +303,20 @@ static int wacom_dth1152_irq(struct wacom_wac *wacom)
unsigned short prox, pressure = 0;
if (data[0] != WACOM_REPORT_DTUS) {
+ if (data[0] == WACOM_REPORT_DTUSPAD) {
+ 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));
+ input_report_key(input, BTN_3, (data[1] & 0x08));
+ input_report_abs(input, ABS_MISC,
+ data[1] & 0x0f ? PAD_DEVICE_ID : 0);
+ /*
+ * Serial number is required when expresskeys are
+ * reported through pen interface.
+ */
+ input_event(input, EV_MSC, MSC_SERIAL, 0xf0);
+ return 1;
+ }
dev_dbg(input->dev.parent,
"%s: received unknown report #%d", __func__, data[0]);
return 0;
@@ -1896,6 +1910,7 @@ void wacom_wac_irq(struct wacom_wac *wacom_wac, size_t
len)
sync = wacom_dtus_irq(wacom_wac);
break;
+ case DTUS2:
case DTH1152:
sync = wacom_dth1152_irq(wacom_wac);
break;
@@ -2382,14 +2397,16 @@ void wacom_setup_input_capabilities(struct input_dev
*input_dev,
/* fall through */
case DTUS:
- case DTUSX:
+ case DTUS2:
case DTK2451:
+ input_set_capability(input_dev, EV_MSC, MSC_SERIAL);
+
+ case DTUSX:
case PL:
case DTU:
- __set_bit(BTN_TOOL_RUBBER, input_dev->keybit);
- __set_bit(BTN_STYLUS2, input_dev->keybit);
- if (features->type == DTUS || features->type == DTK2451) {
- input_set_capability(input_dev, EV_MSC, MSC_SERIAL);
+ if (features->type != DTUS2) {
+ __set_bit(BTN_TOOL_RUBBER, input_dev->keybit);
+ __set_bit(BTN_STYLUS2, input_dev->keybit);
}
/* fall through */
@@ -2991,6 +3008,9 @@ static const struct wacom_features wacom_features_0x357 =
static const struct wacom_features wacom_features_0x358 =
{ "Wacom Intuos Pro L", WACOM_PKGLEN_INTUOSP2, 62200, 43200, 8191, 63,
INTUOSP2, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 9, .touch_max = 10 };
+static const struct wacom_features wacom_features_0x359 =
+ { "Wacom DTU-1141B", WACOM_PKGLEN_DTH1152, 22320, 12555, 1023, 0,
+ DTUS2, WACOM_INTUOS_RES, WACOM_INTUOS_RES, 4 };
static const struct wacom_features wacom_features_0x35A =
{ "Wacom DTH-1152", WACOM_PKGLEN_DTH1152, 22320, 12555, 1023, 0,
DTH1152, WACOM_INTUOS_RES, WACOM_INTUOS_RES,
@@ -3205,6 +3225,7 @@ const struct usb_device_id wacom_ids[] = {
{ USB_DEVICE_WACOM(0x356) },
{ USB_DEVICE_DETAILED(0x357, USB_CLASS_HID, 0, 0) },
{ USB_DEVICE_DETAILED(0x358, USB_CLASS_HID, 0, 0) },
+ { USB_DEVICE_WACOM(0x359) },
{ USB_DEVICE_WACOM(0x35A) },
{ USB_DEVICE_WACOM(0x368) },
{ USB_DEVICE_WACOM(0x374) },
diff --git a/2.6.32/wacom_wac.h b/2.6.32/wacom_wac.h
index bdefbc1..56dcea3 100755
--- a/2.6.32/wacom_wac.h
+++ b/2.6.32/wacom_wac.h
@@ -92,6 +92,7 @@ enum {
PL,
DTU,
DTUS,
+ DTUS2,
DTUSX,
DTH1152,
DTK2451,
diff --git a/2.6.38/wacom_wac.c b/2.6.38/wacom_wac.c
index ebff932..2e090cf 100644
--- a/2.6.38/wacom_wac.c
+++ b/2.6.38/wacom_wac.c
@@ -339,6 +339,20 @@ static int wacom_dth1152_irq(struct wacom_wac *wacom)
unsigned short prox, pressure = 0;
if (data[0] != WACOM_REPORT_DTUS) {
+ if (data[0] == WACOM_REPORT_DTUSPAD) {
+ 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));
+ input_report_key(input, BTN_3, (data[1] & 0x08));
+ input_report_abs(input, ABS_MISC,
+ data[1] & 0x0f ? PAD_DEVICE_ID : 0);
+ /*
+ * Serial number is required when expresskeys are
+ * reported through pen interface.
+ */
+ input_event(input, EV_MSC, MSC_SERIAL, 0xf0);
+ return 1;
+ }
dev_dbg(input->dev.parent,
"%s: received unknown report #%d", __func__, data[0]);
return 0;
@@ -2098,6 +2112,7 @@ void wacom_wac_irq(struct wacom_wac *wacom_wac, size_t
len)
sync = wacom_dtus_irq(wacom_wac);
break;
+ case DTUS2:
case DTH1152:
sync = wacom_dth1152_irq(wacom_wac);
break;
@@ -2668,14 +2683,16 @@ int wacom_setup_input_capabilities(struct input_dev
*input_dev,
/* fall through */
case DTUS:
- case DTUSX:
+ case DTUS2:
case DTK2451:
+ input_set_capability(input_dev, EV_MSC, MSC_SERIAL);
+
+ case DTUSX:
case PL:
case DTU:
- __set_bit(BTN_TOOL_RUBBER, input_dev->keybit);
- __set_bit(BTN_STYLUS2, input_dev->keybit);
- if (features->type == DTUS || features->type == DTK2451) {
- input_set_capability(input_dev, EV_MSC, MSC_SERIAL);
+ if (features->type != DTUS2) {
+ __set_bit(BTN_TOOL_RUBBER, input_dev->keybit);
+ __set_bit(BTN_STYLUS2, input_dev->keybit);
}
/* fall through */
@@ -3344,6 +3361,9 @@ static const struct wacom_features wacom_features_0x357 =
static const struct wacom_features wacom_features_0x358 =
{ "Wacom Intuos Pro L", WACOM_PKGLEN_INTUOSP2, 62200, 43200, 8191, 63,
INTUOSP2, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 9, .touch_max = 10 };
+static const struct wacom_features wacom_features_0x359 =
+ { "Wacom DTU-1141B", WACOM_PKGLEN_DTH1152, 22320, 12555, 1023, 0,
+ DTUS2, WACOM_INTUOS_RES, WACOM_INTUOS_RES, 4 };
static const struct wacom_features wacom_features_0x35A =
{ "Wacom DTH-1152", WACOM_PKGLEN_DTH1152, 22320, 12555, 1023, 0,
DTH1152, WACOM_INTUOS_RES, WACOM_INTUOS_RES,
@@ -3566,6 +3586,7 @@ const struct usb_device_id wacom_ids[] = {
{ USB_DEVICE_WACOM(0x356) },
{ USB_DEVICE_DETAILED(0x357, USB_CLASS_HID, 0, 0) },
{ USB_DEVICE_DETAILED(0x358, USB_CLASS_HID, 0, 0) },
+ { USB_DEVICE_WACOM(0x359) },
{ USB_DEVICE_WACOM(0x35A) },
{ USB_DEVICE_WACOM(0x368) },
{ USB_DEVICE_WACOM(0x374) },
diff --git a/2.6.38/wacom_wac.h b/2.6.38/wacom_wac.h
index bfe0253..08e8261 100644
--- a/2.6.38/wacom_wac.h
+++ b/2.6.38/wacom_wac.h
@@ -105,6 +105,7 @@ enum {
PL,
DTU,
DTUS,
+ DTUS2,
DTUSX,
DTH1152,
DTK2451,
diff --git a/3.7/wacom_wac.c b/3.7/wacom_wac.c
index c544343..f255f8c 100644
--- a/3.7/wacom_wac.c
+++ b/3.7/wacom_wac.c
@@ -339,6 +339,20 @@ static int wacom_dth1152_irq(struct wacom_wac *wacom)
unsigned short prox, pressure = 0;
if (data[0] != WACOM_REPORT_DTUS) {
+ if (data[0] == WACOM_REPORT_DTUSPAD) {
+ 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));
+ input_report_key(input, BTN_3, (data[1] & 0x08));
+ input_report_abs(input, ABS_MISC,
+ data[1] & 0x0f ? PAD_DEVICE_ID : 0);
+ /*
+ * Serial number is required when expresskeys are
+ * reported through pen interface.
+ */
+ input_event(input, EV_MSC, MSC_SERIAL, 0xf0);
+ return 1;
+ }
dev_dbg(input->dev.parent,
"%s: received unknown report #%d", __func__, data[0]);
return 0;
@@ -2080,6 +2094,7 @@ void wacom_wac_irq(struct wacom_wac *wacom_wac, size_t
len)
sync = wacom_dtus_irq(wacom_wac);
break;
+ case DTUS2:
case DTH1152:
sync = wacom_dth1152_irq(wacom_wac);
break;
@@ -2613,14 +2628,16 @@ int wacom_setup_input_capabilities(struct input_dev
*input_dev,
/* fall through */
case DTUS:
- case DTUSX:
+ case DTUS2:
case DTK2451:
+ input_set_capability(input_dev, EV_MSC, MSC_SERIAL);
+
+ case DTUSX:
case PL:
case DTU:
- __set_bit(BTN_TOOL_RUBBER, input_dev->keybit);
- __set_bit(BTN_STYLUS2, input_dev->keybit);
- if (features->type == DTUS || features->type == DTK2451) {
- input_set_capability(input_dev, EV_MSC, MSC_SERIAL);
+ if (features->type != DTUS2) {
+ __set_bit(BTN_TOOL_RUBBER, input_dev->keybit);
+ __set_bit(BTN_STYLUS2, input_dev->keybit);
}
/* fall through */
@@ -3274,6 +3291,9 @@ static const struct wacom_features wacom_features_0x357 =
static const struct wacom_features wacom_features_0x358 =
{ "Wacom Intuos Pro L", WACOM_PKGLEN_INTUOSP2, 62200, 43200, 8191, 63,
INTUOSP2, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 9, .touch_max = 10 };
+static const struct wacom_features wacom_features_0x359 =
+ { "Wacom DTU-1141B", WACOM_PKGLEN_DTH1152, 22320, 12555, 1023, 0,
+ DTUS2, WACOM_INTUOS_RES, WACOM_INTUOS_RES, 4 };
static const struct wacom_features wacom_features_0x35A =
{ "Wacom DTH-1152", WACOM_PKGLEN_DTH1152, 22320, 12555, 1023, 0,
DTH1152, WACOM_INTUOS_RES, WACOM_INTUOS_RES,
@@ -3496,6 +3516,7 @@ const struct usb_device_id wacom_ids[] = {
{ USB_DEVICE_WACOM(0x356) },
{ USB_DEVICE_DETAILED(0x357, USB_CLASS_HID, 0, 0) },
{ USB_DEVICE_DETAILED(0x358, USB_CLASS_HID, 0, 0) },
+ { USB_DEVICE_WACOM(0x359) },
{ USB_DEVICE_WACOM(0x35A) },
{ USB_DEVICE_WACOM(0x368) },
{ USB_DEVICE_WACOM(0x374) },
diff --git a/3.7/wacom_wac.h b/3.7/wacom_wac.h
index 5f3fe74..1a8714f 100644
--- a/3.7/wacom_wac.h
+++ b/3.7/wacom_wac.h
@@ -105,6 +105,7 @@ enum {
PL,
DTU,
DTUS,
+ DTUS2,
DTUSX,
DTH1152,
DTK2451,
--
2.7.4
_______________________________________________
Linuxwacom-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel