Commit d838c644 authored by Ping Cheng's avatar Ping Cheng Committed by Dmitry Torokhov

Input: wacom - add support to Cintiq 22HD

Signed-off-by: default avatarPing Cheng <pingc@wacom.com>
Signed-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
parent 43c4d13e
...@@ -464,7 +464,7 @@ static void wacom_intuos_general(struct wacom_wac *wacom) ...@@ -464,7 +464,7 @@ static void wacom_intuos_general(struct wacom_wac *wacom)
t = (data[6] << 2) | ((data[7] >> 6) & 3); t = (data[6] << 2) | ((data[7] >> 6) & 3);
if ((features->type >= INTUOS4S && features->type <= INTUOS4L) || if ((features->type >= INTUOS4S && features->type <= INTUOS4L) ||
(features->type >= INTUOS5S && features->type <= INTUOS5L) || (features->type >= INTUOS5S && features->type <= INTUOS5L) ||
features->type == WACOM_21UX2 || features->type == WACOM_24HD) { (features->type >= WACOM_21UX2 && features->type <= WACOM_24HD)) {
t = (t << 1) | (data[1] & 1); t = (t << 1) | (data[1] & 1);
} }
input_report_abs(input, ABS_PRESSURE, t); input_report_abs(input, ABS_PRESSURE, t);
...@@ -614,7 +614,7 @@ static int wacom_intuos_irq(struct wacom_wac *wacom) ...@@ -614,7 +614,7 @@ static int wacom_intuos_irq(struct wacom_wac *wacom)
input_report_abs(input, ABS_MISC, 0); input_report_abs(input, ABS_MISC, 0);
} }
} else { } else {
if (features->type == WACOM_21UX2) { if (features->type == WACOM_21UX2 || features->type == WACOM_22HD) {
input_report_key(input, BTN_0, (data[5] & 0x01)); input_report_key(input, BTN_0, (data[5] & 0x01));
input_report_key(input, BTN_1, (data[6] & 0x01)); input_report_key(input, BTN_1, (data[6] & 0x01));
input_report_key(input, BTN_2, (data[6] & 0x02)); input_report_key(input, BTN_2, (data[6] & 0x02));
...@@ -633,6 +633,12 @@ static int wacom_intuos_irq(struct wacom_wac *wacom) ...@@ -633,6 +633,12 @@ static int wacom_intuos_irq(struct wacom_wac *wacom)
input_report_key(input, BTN_Z, (data[8] & 0x20)); input_report_key(input, BTN_Z, (data[8] & 0x20));
input_report_key(input, BTN_BASE, (data[8] & 0x40)); input_report_key(input, BTN_BASE, (data[8] & 0x40));
input_report_key(input, BTN_BASE2, (data[8] & 0x80)); input_report_key(input, BTN_BASE2, (data[8] & 0x80));
if (features->type == WACOM_22HD) {
input_report_key(input, KEY_PROG1, data[9] & 0x01);
input_report_key(input, KEY_PROG2, data[9] & 0x02);
input_report_key(input, KEY_PROG3, data[9] & 0x04);
}
} else { } else {
input_report_key(input, BTN_0, (data[5] & 0x01)); input_report_key(input, BTN_0, (data[5] & 0x01));
input_report_key(input, BTN_1, (data[5] & 0x02)); input_report_key(input, BTN_1, (data[5] & 0x02));
...@@ -1231,6 +1237,7 @@ void wacom_wac_irq(struct wacom_wac *wacom_wac, size_t len) ...@@ -1231,6 +1237,7 @@ void wacom_wac_irq(struct wacom_wac *wacom_wac, size_t len)
case CINTIQ: case CINTIQ:
case WACOM_BEE: case WACOM_BEE:
case WACOM_21UX2: case WACOM_21UX2:
case WACOM_22HD:
case WACOM_24HD: case WACOM_24HD:
sync = wacom_intuos_irq(wacom_wac); sync = wacom_intuos_irq(wacom_wac);
break; break;
...@@ -1432,6 +1439,12 @@ int wacom_setup_input_capabilities(struct input_dev *input_dev, ...@@ -1432,6 +1439,12 @@ int wacom_setup_input_capabilities(struct input_dev *input_dev,
wacom_setup_cintiq(wacom_wac); wacom_setup_cintiq(wacom_wac);
break; break;
case WACOM_22HD:
__set_bit(KEY_PROG1, input_dev->keybit);
__set_bit(KEY_PROG2, input_dev->keybit);
__set_bit(KEY_PROG3, input_dev->keybit);
/* fall through */
case WACOM_21UX2: case WACOM_21UX2:
__set_bit(BTN_A, input_dev->keybit); __set_bit(BTN_A, input_dev->keybit);
__set_bit(BTN_B, input_dev->keybit); __set_bit(BTN_B, input_dev->keybit);
...@@ -1858,6 +1871,9 @@ static const struct wacom_features wacom_features_0xF0 = ...@@ -1858,6 +1871,9 @@ static const struct wacom_features wacom_features_0xF0 =
static const struct wacom_features wacom_features_0xCC = static const struct wacom_features wacom_features_0xCC =
{ "Wacom Cintiq 21UX2", WACOM_PKGLEN_INTUOS, 87200, 65600, 2047, { "Wacom Cintiq 21UX2", WACOM_PKGLEN_INTUOS, 87200, 65600, 2047,
63, WACOM_21UX2, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES }; 63, WACOM_21UX2, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES };
static const struct wacom_features wacom_features_0xFA =
{ "Wacom Cintiq 22HD", WACOM_PKGLEN_INTUOS, 95840, 54260, 2047,
63, WACOM_22HD, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES };
static const struct wacom_features wacom_features_0x90 = static const struct wacom_features wacom_features_0x90 =
{ "Wacom ISDv4 90", WACOM_PKGLEN_GRAPHIRE, 26202, 16325, 255, { "Wacom ISDv4 90", WACOM_PKGLEN_GRAPHIRE, 26202, 16325, 255,
0, TABLETPC, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; 0, TABLETPC, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
...@@ -2075,6 +2091,7 @@ const struct usb_device_id wacom_ids[] = { ...@@ -2075,6 +2091,7 @@ const struct usb_device_id wacom_ids[] = {
{ USB_DEVICE_WACOM(0xEF) }, { USB_DEVICE_WACOM(0xEF) },
{ USB_DEVICE_WACOM(0x47) }, { USB_DEVICE_WACOM(0x47) },
{ USB_DEVICE_WACOM(0xF4) }, { USB_DEVICE_WACOM(0xF4) },
{ USB_DEVICE_WACOM(0xFA) },
{ USB_DEVICE_LENOVO(0x6004) }, { USB_DEVICE_LENOVO(0x6004) },
{ } { }
}; };
......
...@@ -73,8 +73,9 @@ enum { ...@@ -73,8 +73,9 @@ enum {
INTUOS5S, INTUOS5S,
INTUOS5, INTUOS5,
INTUOS5L, INTUOS5L,
WACOM_24HD,
WACOM_21UX2, WACOM_21UX2,
WACOM_22HD,
WACOM_24HD,
CINTIQ, CINTIQ,
WACOM_BEE, WACOM_BEE,
WACOM_MO, WACOM_MO,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment