diff options
Diffstat (limited to 'drivers/input')
-rw-r--r-- | drivers/input/tablet/wacom_sys.c | 2 | ||||
-rw-r--r-- | drivers/input/tablet/wacom_wac.c | 46 | ||||
-rw-r--r-- | drivers/input/tablet/wacom_wac.h | 1 |
3 files changed, 47 insertions, 2 deletions
diff --git a/drivers/input/tablet/wacom_sys.c b/drivers/input/tablet/wacom_sys.c index 79b69ea47f74..7e4cc2fd83e4 100644 --- a/drivers/input/tablet/wacom_sys.c +++ b/drivers/input/tablet/wacom_sys.c | |||
@@ -548,7 +548,7 @@ static int wacom_query_tablet_data(struct usb_interface *intf, struct wacom_feat | |||
548 | /* MT Tablet PC touch */ | 548 | /* MT Tablet PC touch */ |
549 | return wacom_set_device_mode(intf, 3, 4, 4); | 549 | return wacom_set_device_mode(intf, 3, 4, 4); |
550 | } | 550 | } |
551 | else if (features->type == WACOM_24HDT) { | 551 | else if (features->type == WACOM_24HDT || features->type == CINTIQ_HYBRID) { |
552 | return wacom_set_device_mode(intf, 18, 3, 2); | 552 | return wacom_set_device_mode(intf, 18, 3, 2); |
553 | } | 553 | } |
554 | } else if (features->device_type == BTN_TOOL_PEN) { | 554 | } else if (features->device_type == BTN_TOOL_PEN) { |
diff --git a/drivers/input/tablet/wacom_wac.c b/drivers/input/tablet/wacom_wac.c index b2aa503c16b1..45984afb040d 100644 --- a/drivers/input/tablet/wacom_wac.c +++ b/drivers/input/tablet/wacom_wac.c | |||
@@ -477,7 +477,7 @@ static void wacom_intuos_general(struct wacom_wac *wacom) | |||
477 | /* general pen packet */ | 477 | /* general pen packet */ |
478 | if ((data[1] & 0xb8) == 0xa0) { | 478 | if ((data[1] & 0xb8) == 0xa0) { |
479 | t = (data[6] << 2) | ((data[7] >> 6) & 3); | 479 | t = (data[6] << 2) | ((data[7] >> 6) & 3); |
480 | if (features->type >= INTUOS4S && features->type <= WACOM_24HD) { | 480 | if (features->type >= INTUOS4S && features->type <= CINTIQ_HYBRID) { |
481 | t = (t << 1) | (data[1] & 1); | 481 | t = (t << 1) | (data[1] & 1); |
482 | } | 482 | } |
483 | input_report_abs(input, ABS_PRESSURE, t); | 483 | input_report_abs(input, ABS_PRESSURE, t); |
@@ -621,6 +621,22 @@ static int wacom_intuos_irq(struct wacom_wac *wacom) | |||
621 | } else { | 621 | } else { |
622 | input_report_abs(input, ABS_MISC, 0); | 622 | input_report_abs(input, ABS_MISC, 0); |
623 | } | 623 | } |
624 | } else if (features->type == CINTIQ_HYBRID) { | ||
625 | /* | ||
626 | * Do not send hardware buttons under Android. They | ||
627 | * are already sent to the system through GPIO (and | ||
628 | * have different meaning). | ||
629 | */ | ||
630 | input_report_key(input, BTN_1, (data[4] & 0x01)); | ||
631 | input_report_key(input, BTN_2, (data[4] & 0x02)); | ||
632 | input_report_key(input, BTN_3, (data[4] & 0x04)); | ||
633 | input_report_key(input, BTN_4, (data[4] & 0x08)); | ||
634 | |||
635 | input_report_key(input, BTN_5, (data[4] & 0x10)); /* Right */ | ||
636 | input_report_key(input, BTN_6, (data[4] & 0x20)); /* Up */ | ||
637 | input_report_key(input, BTN_7, (data[4] & 0x40)); /* Left */ | ||
638 | input_report_key(input, BTN_8, (data[4] & 0x80)); /* Down */ | ||
639 | input_report_key(input, BTN_0, (data[3] & 0x01)); /* Center */ | ||
624 | } else if (features->type >= INTUOS5S && features->type <= INTUOS5L) { | 640 | } else if (features->type >= INTUOS5S && features->type <= INTUOS5L) { |
625 | int i; | 641 | int i; |
626 | 642 | ||
@@ -1327,6 +1343,7 @@ void wacom_wac_irq(struct wacom_wac *wacom_wac, size_t len) | |||
1327 | case WACOM_22HD: | 1343 | case WACOM_22HD: |
1328 | case WACOM_24HD: | 1344 | case WACOM_24HD: |
1329 | case DTK: | 1345 | case DTK: |
1346 | case CINTIQ_HYBRID: | ||
1330 | sync = wacom_intuos_irq(wacom_wac); | 1347 | sync = wacom_intuos_irq(wacom_wac); |
1331 | break; | 1348 | break; |
1332 | 1349 | ||
@@ -1765,6 +1782,24 @@ int wacom_setup_input_capabilities(struct input_dev *input_dev, | |||
1765 | 0, 0); | 1782 | 0, 0); |
1766 | } | 1783 | } |
1767 | break; | 1784 | break; |
1785 | |||
1786 | case CINTIQ_HYBRID: | ||
1787 | __set_bit(BTN_1, input_dev->keybit); | ||
1788 | __set_bit(BTN_2, input_dev->keybit); | ||
1789 | __set_bit(BTN_3, input_dev->keybit); | ||
1790 | __set_bit(BTN_4, input_dev->keybit); | ||
1791 | |||
1792 | __set_bit(BTN_5, input_dev->keybit); | ||
1793 | __set_bit(BTN_6, input_dev->keybit); | ||
1794 | __set_bit(BTN_7, input_dev->keybit); | ||
1795 | __set_bit(BTN_8, input_dev->keybit); | ||
1796 | __set_bit(BTN_0, input_dev->keybit); | ||
1797 | |||
1798 | input_set_abs_params(input_dev, ABS_Z, -900, 899, 0, 0); | ||
1799 | __set_bit(INPUT_PROP_DIRECT, input_dev->propbit); | ||
1800 | |||
1801 | wacom_setup_cintiq(wacom_wac); | ||
1802 | break; | ||
1768 | } | 1803 | } |
1769 | return 0; | 1804 | return 0; |
1770 | } | 1805 | } |
@@ -2125,6 +2160,13 @@ static const struct wacom_features wacom_features_0x301 = | |||
2125 | static const struct wacom_features wacom_features_0x6004 = | 2160 | static const struct wacom_features wacom_features_0x6004 = |
2126 | { "ISD-V4", WACOM_PKGLEN_GRAPHIRE, 12800, 8000, 255, | 2161 | { "ISD-V4", WACOM_PKGLEN_GRAPHIRE, 12800, 8000, 255, |
2127 | 0, TABLETPC, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; | 2162 | 0, TABLETPC, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; |
2163 | static const struct wacom_features wacom_features_0x0307 = | ||
2164 | { "Wacom ISDv5 307", WACOM_PKGLEN_INTUOS, 59552, 33848, 2047, | ||
2165 | 63, CINTIQ_HYBRID, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, | ||
2166 | .oVid = USB_VENDOR_ID_WACOM, .oPid = 0x309 }; | ||
2167 | static const struct wacom_features wacom_features_0x0309 = | ||
2168 | { "Wacom ISDv5 309", .type = WACOM_24HDT, /* Touch */ | ||
2169 | .oVid = USB_VENDOR_ID_WACOM, .oPid = 0x0307, .touch_max = 10 }; | ||
2128 | 2170 | ||
2129 | #define USB_DEVICE_WACOM(prod) \ | 2171 | #define USB_DEVICE_WACOM(prod) \ |
2130 | USB_DEVICE(USB_VENDOR_ID_WACOM, prod), \ | 2172 | USB_DEVICE(USB_VENDOR_ID_WACOM, prod), \ |
@@ -2257,6 +2299,8 @@ const struct usb_device_id wacom_ids[] = { | |||
2257 | { USB_DEVICE_WACOM(0xF8) }, | 2299 | { USB_DEVICE_WACOM(0xF8) }, |
2258 | { USB_DEVICE_DETAILED(0xF6, USB_CLASS_HID, 0, 0) }, | 2300 | { USB_DEVICE_DETAILED(0xF6, USB_CLASS_HID, 0, 0) }, |
2259 | { USB_DEVICE_WACOM(0xFA) }, | 2301 | { USB_DEVICE_WACOM(0xFA) }, |
2302 | { USB_DEVICE_WACOM(0x0307) }, | ||
2303 | { USB_DEVICE_DETAILED(0x0309, USB_CLASS_HID, 0, 0) }, | ||
2260 | { USB_DEVICE_LENOVO(0x6004) }, | 2304 | { USB_DEVICE_LENOVO(0x6004) }, |
2261 | { } | 2305 | { } |
2262 | }; | 2306 | }; |
diff --git a/drivers/input/tablet/wacom_wac.h b/drivers/input/tablet/wacom_wac.h index dfc9e08e7f70..90ce10dadb33 100644 --- a/drivers/input/tablet/wacom_wac.h +++ b/drivers/input/tablet/wacom_wac.h | |||
@@ -80,6 +80,7 @@ enum { | |||
80 | WACOM_22HD, | 80 | WACOM_22HD, |
81 | DTK, | 81 | DTK, |
82 | WACOM_24HD, | 82 | WACOM_24HD, |
83 | CINTIQ_HYBRID, | ||
83 | CINTIQ, | 84 | CINTIQ, |
84 | WACOM_BEE, | 85 | WACOM_BEE, |
85 | WACOM_13HD, | 86 | WACOM_13HD, |