Commit 4c0eec03 authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input

Pull input updates from Dmitry Torokhov:
 "A few fixups to Wacom and eGalax touchscreen driver"

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
  Input: wacom - add an eraser to DTH2242/DTK2241
  Input: wacom - add a few new styli for Cintiq series
  Input: wacom - add three new display tablets
  Input: egalax_ts - ABS_MT_POSITION_Y not reported well
parents d9795562 c73a1afb
...@@ -342,10 +342,10 @@ static int wacom_intuos_inout(struct wacom_wac *wacom) ...@@ -342,10 +342,10 @@ static int wacom_intuos_inout(struct wacom_wac *wacom)
wacom->id[idx] = (data[2] << 4) | (data[3] >> 4) | wacom->id[idx] = (data[2] << 4) | (data[3] >> 4) |
((data[7] & 0x0f) << 20) | ((data[8] & 0xf0) << 12); ((data[7] & 0x0f) << 20) | ((data[8] & 0xf0) << 12);
switch (wacom->id[idx] & 0xfffff) { switch (wacom->id[idx]) {
case 0x812: /* Inking pen */ case 0x812: /* Inking pen */
case 0x801: /* Intuos3 Inking pen */ case 0x801: /* Intuos3 Inking pen */
case 0x20802: /* Intuos4 Inking Pen */ case 0x120802: /* Intuos4/5 Inking Pen */
case 0x012: case 0x012:
wacom->tool[idx] = BTN_TOOL_PENCIL; wacom->tool[idx] = BTN_TOOL_PENCIL;
break; break;
...@@ -356,11 +356,13 @@ static int wacom_intuos_inout(struct wacom_wac *wacom) ...@@ -356,11 +356,13 @@ static int wacom_intuos_inout(struct wacom_wac *wacom)
case 0x823: /* Intuos3 Grip Pen */ case 0x823: /* Intuos3 Grip Pen */
case 0x813: /* Intuos3 Classic Pen */ case 0x813: /* Intuos3 Classic Pen */
case 0x885: /* Intuos3 Marker Pen */ case 0x885: /* Intuos3 Marker Pen */
case 0x802: /* Intuos4 General Pen */ case 0x802: /* Intuos4/5 13HD/24HD General Pen */
case 0x804: /* Intuos4 Marker Pen */ case 0x804: /* Intuos4/5 13HD/24HD Marker Pen */
case 0x40802: /* Intuos4 Classic Pen */
case 0x18802: /* DTH2242 Grip Pen */
case 0x022: case 0x022:
case 0x100804: /* Intuos4/5 13HD/24HD Art Pen */
case 0x140802: /* Intuos4/5 13HD/24HD Classic Pen */
case 0x160802: /* Cintiq 13HD Pro Pen */
case 0x180802: /* DTH2242 Pen */
wacom->tool[idx] = BTN_TOOL_PEN; wacom->tool[idx] = BTN_TOOL_PEN;
break; break;
...@@ -391,10 +393,14 @@ static int wacom_intuos_inout(struct wacom_wac *wacom) ...@@ -391,10 +393,14 @@ static int wacom_intuos_inout(struct wacom_wac *wacom)
case 0x82b: /* Intuos3 Grip Pen Eraser */ case 0x82b: /* Intuos3 Grip Pen Eraser */
case 0x81b: /* Intuos3 Classic Pen Eraser */ case 0x81b: /* Intuos3 Classic Pen Eraser */
case 0x91b: /* Intuos3 Airbrush Eraser */ case 0x91b: /* Intuos3 Airbrush Eraser */
case 0x80c: /* Intuos4 Marker Pen Eraser */ case 0x80c: /* Intuos4/5 13HD/24HD Marker Pen Eraser */
case 0x80a: /* Intuos4 General Pen Eraser */ case 0x80a: /* Intuos4/5 13HD/24HD General Pen Eraser */
case 0x4080a: /* Intuos4 Classic Pen Eraser */ case 0x90a: /* Intuos4/5 13HD/24HD Airbrush Eraser */
case 0x90a: /* Intuos4 Airbrush Eraser */ case 0x14080a: /* Intuos4/5 13HD/24HD Classic Pen Eraser */
case 0x10090a: /* Intuos4/5 13HD/24HD Airbrush Eraser */
case 0x10080c: /* Intuos4/5 13HD/24HD Art Pen Eraser */
case 0x16080a: /* Cintiq 13HD Pro Pen Eraser */
case 0x18080a: /* DTH2242 Eraser */
wacom->tool[idx] = BTN_TOOL_RUBBER; wacom->tool[idx] = BTN_TOOL_RUBBER;
break; break;
...@@ -402,7 +408,8 @@ static int wacom_intuos_inout(struct wacom_wac *wacom) ...@@ -402,7 +408,8 @@ static int wacom_intuos_inout(struct wacom_wac *wacom)
case 0x912: case 0x912:
case 0x112: case 0x112:
case 0x913: /* Intuos3 Airbrush */ case 0x913: /* Intuos3 Airbrush */
case 0x902: /* Intuos4 Airbrush */ case 0x902: /* Intuos4/5 13HD/24HD Airbrush */
case 0x100902: /* Intuos4/5 13HD/24HD Airbrush */
wacom->tool[idx] = BTN_TOOL_AIRBRUSH; wacom->tool[idx] = BTN_TOOL_AIRBRUSH;
break; break;
...@@ -533,10 +540,8 @@ static int wacom_intuos_irq(struct wacom_wac *wacom) ...@@ -533,10 +540,8 @@ static int wacom_intuos_irq(struct wacom_wac *wacom)
input_report_key(input, BTN_8, (data[3] & 0x80)); input_report_key(input, BTN_8, (data[3] & 0x80));
} }
if (data[1] | (data[2] & 0x01) | data[3]) { if (data[1] | (data[2] & 0x01) | data[3]) {
input_report_key(input, wacom->tool[1], 1);
input_report_abs(input, ABS_MISC, PAD_DEVICE_ID); input_report_abs(input, ABS_MISC, PAD_DEVICE_ID);
} else { } else {
input_report_key(input, wacom->tool[1], 0);
input_report_abs(input, ABS_MISC, 0); input_report_abs(input, ABS_MISC, 0);
} }
} else if (features->type == DTK) { } else if (features->type == DTK) {
...@@ -546,6 +551,26 @@ static int wacom_intuos_irq(struct wacom_wac *wacom) ...@@ -546,6 +551,26 @@ static int wacom_intuos_irq(struct wacom_wac *wacom)
input_report_key(input, BTN_3, (data[6] & 0x08)); input_report_key(input, BTN_3, (data[6] & 0x08));
input_report_key(input, BTN_4, (data[6] & 0x10)); input_report_key(input, BTN_4, (data[6] & 0x10));
input_report_key(input, BTN_5, (data[6] & 0x20)); input_report_key(input, BTN_5, (data[6] & 0x20));
if (data[6] & 0x3f) {
input_report_abs(input, ABS_MISC, PAD_DEVICE_ID);
} else {
input_report_abs(input, ABS_MISC, 0);
}
} else if (features->type == WACOM_13HD) {
input_report_key(input, BTN_0, (data[3] & 0x01));
input_report_key(input, BTN_1, (data[4] & 0x01));
input_report_key(input, BTN_2, (data[4] & 0x02));
input_report_key(input, BTN_3, (data[4] & 0x04));
input_report_key(input, BTN_4, (data[4] & 0x08));
input_report_key(input, BTN_5, (data[4] & 0x10));
input_report_key(input, BTN_6, (data[4] & 0x20));
input_report_key(input, BTN_7, (data[4] & 0x40));
input_report_key(input, BTN_8, (data[4] & 0x80));
if ((data[3] & 0x01) | data[4]) {
input_report_abs(input, ABS_MISC, PAD_DEVICE_ID);
} else {
input_report_abs(input, ABS_MISC, 0);
}
} else if (features->type == WACOM_24HD) { } else if (features->type == WACOM_24HD) {
input_report_key(input, BTN_0, (data[6] & 0x01)); input_report_key(input, BTN_0, (data[6] & 0x01));
input_report_key(input, BTN_1, (data[6] & 0x02)); input_report_key(input, BTN_1, (data[6] & 0x02));
...@@ -590,10 +615,8 @@ static int wacom_intuos_irq(struct wacom_wac *wacom) ...@@ -590,10 +615,8 @@ static int wacom_intuos_irq(struct wacom_wac *wacom)
} }
if (data[1] | data[2] | (data[3] & 0x1f) | data[4] | data[6] | data[8]) { if (data[1] | data[2] | (data[3] & 0x1f) | data[4] | data[6] | data[8]) {
input_report_key(input, wacom->tool[1], 1);
input_report_abs(input, ABS_MISC, PAD_DEVICE_ID); input_report_abs(input, ABS_MISC, PAD_DEVICE_ID);
} else { } else {
input_report_key(input, wacom->tool[1], 0);
input_report_abs(input, ABS_MISC, 0); input_report_abs(input, ABS_MISC, 0);
} }
} else if (features->type >= INTUOS5S && features->type <= INTUOS5L) { } else if (features->type >= INTUOS5S && features->type <= INTUOS5L) {
...@@ -618,10 +641,8 @@ static int wacom_intuos_irq(struct wacom_wac *wacom) ...@@ -618,10 +641,8 @@ static int wacom_intuos_irq(struct wacom_wac *wacom)
} }
if (data[2] | (data[3] & 0x01) | data[4] | data[5]) { if (data[2] | (data[3] & 0x01) | data[4] | data[5]) {
input_report_key(input, wacom->tool[1], 1);
input_report_abs(input, ABS_MISC, PAD_DEVICE_ID); input_report_abs(input, ABS_MISC, PAD_DEVICE_ID);
} else { } else {
input_report_key(input, wacom->tool[1], 0);
input_report_abs(input, ABS_MISC, 0); input_report_abs(input, ABS_MISC, 0);
} }
} else { } else {
...@@ -668,10 +689,8 @@ static int wacom_intuos_irq(struct wacom_wac *wacom) ...@@ -668,10 +689,8 @@ static int wacom_intuos_irq(struct wacom_wac *wacom)
if ((data[5] & 0x1f) | data[6] | (data[1] & 0x1f) | if ((data[5] & 0x1f) | data[6] | (data[1] & 0x1f) |
data[2] | (data[3] & 0x1f) | data[4] | data[8] | data[2] | (data[3] & 0x1f) | data[4] | data[8] |
(data[7] & 0x01)) { (data[7] & 0x01)) {
input_report_key(input, wacom->tool[1], 1);
input_report_abs(input, ABS_MISC, PAD_DEVICE_ID); input_report_abs(input, ABS_MISC, PAD_DEVICE_ID);
} else { } else {
input_report_key(input, wacom->tool[1], 0);
input_report_abs(input, ABS_MISC, 0); input_report_abs(input, ABS_MISC, 0);
} }
} }
...@@ -1301,6 +1320,7 @@ void wacom_wac_irq(struct wacom_wac *wacom_wac, size_t len) ...@@ -1301,6 +1320,7 @@ void wacom_wac_irq(struct wacom_wac *wacom_wac, size_t len)
case INTUOS4L: case INTUOS4L:
case CINTIQ: case CINTIQ:
case WACOM_BEE: case WACOM_BEE:
case WACOM_13HD:
case WACOM_21UX2: case WACOM_21UX2:
case WACOM_22HD: case WACOM_22HD:
case WACOM_24HD: case WACOM_24HD:
...@@ -1530,15 +1550,15 @@ int wacom_setup_input_capabilities(struct input_dev *input_dev, ...@@ -1530,15 +1550,15 @@ int wacom_setup_input_capabilities(struct input_dev *input_dev,
__set_bit(KEY_PROG1, input_dev->keybit); __set_bit(KEY_PROG1, input_dev->keybit);
__set_bit(KEY_PROG2, input_dev->keybit); __set_bit(KEY_PROG2, input_dev->keybit);
__set_bit(KEY_PROG3, input_dev->keybit); __set_bit(KEY_PROG3, input_dev->keybit);
input_set_abs_params(input_dev, ABS_Z, -900, 899, 0, 0);
input_set_abs_params(input_dev, ABS_THROTTLE, 0, 71, 0, 0);
/* fall through */ /* fall through */
case DTK: case DTK:
for (i = 0; i < 6; i++) for (i = 0; i < 6; i++)
__set_bit(BTN_0 + i, input_dev->keybit); __set_bit(BTN_0 + i, input_dev->keybit);
input_set_abs_params(input_dev, ABS_Z, -900, 899, 0, 0);
input_set_abs_params(input_dev, ABS_THROTTLE, 0, 71, 0, 0);
__set_bit(INPUT_PROP_DIRECT, input_dev->propbit); __set_bit(INPUT_PROP_DIRECT, input_dev->propbit);
wacom_setup_cintiq(wacom_wac); wacom_setup_cintiq(wacom_wac);
...@@ -1579,6 +1599,15 @@ int wacom_setup_input_capabilities(struct input_dev *input_dev, ...@@ -1579,6 +1599,15 @@ int wacom_setup_input_capabilities(struct input_dev *input_dev,
wacom_setup_cintiq(wacom_wac); wacom_setup_cintiq(wacom_wac);
break; break;
case WACOM_13HD:
for (i = 0; i < 9; i++)
__set_bit(BTN_0 + i, input_dev->keybit);
input_set_abs_params(input_dev, ABS_Z, -900, 899, 0, 0);
__set_bit(INPUT_PROP_DIRECT, input_dev->propbit);
wacom_setup_cintiq(wacom_wac);
break;
case INTUOS3: case INTUOS3:
case INTUOS3L: case INTUOS3L:
__set_bit(BTN_4, input_dev->keybit); __set_bit(BTN_4, input_dev->keybit);
...@@ -1950,6 +1979,9 @@ static const struct wacom_features wacom_features_0xC5 = ...@@ -1950,6 +1979,9 @@ static const struct wacom_features wacom_features_0xC5 =
static const struct wacom_features wacom_features_0xC6 = static const struct wacom_features wacom_features_0xC6 =
{ "Wacom Cintiq 12WX", WACOM_PKGLEN_INTUOS, 53020, 33440, 1023, { "Wacom Cintiq 12WX", WACOM_PKGLEN_INTUOS, 53020, 33440, 1023,
63, WACOM_BEE, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES }; 63, WACOM_BEE, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES };
static const struct wacom_features wacom_features_0x304 =
{ "Wacom Cintiq 13HD", WACOM_PKGLEN_INTUOS, 59552, 33848, 1023,
63, WACOM_13HD, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES };
static const struct wacom_features wacom_features_0xC7 = static const struct wacom_features wacom_features_0xC7 =
{ "Wacom DTU1931", WACOM_PKGLEN_GRAPHIRE, 37832, 30305, 511, { "Wacom DTU1931", WACOM_PKGLEN_GRAPHIRE, 37832, 30305, 511,
0, PL, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; 0, PL, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
...@@ -1959,6 +1991,9 @@ static const struct wacom_features wacom_features_0xCE = ...@@ -1959,6 +1991,9 @@ static const struct wacom_features wacom_features_0xCE =
static const struct wacom_features wacom_features_0xF0 = static const struct wacom_features wacom_features_0xF0 =
{ "Wacom DTU1631", WACOM_PKGLEN_GRAPHIRE, 34623, 19553, 511, { "Wacom DTU1631", WACOM_PKGLEN_GRAPHIRE, 34623, 19553, 511,
0, DTU, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; 0, DTU, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
static const struct wacom_features wacom_features_0x57 =
{ "Wacom DTK2241", WACOM_PKGLEN_INTUOS, 95840, 54260, 2047,
63, DTK, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES};
static const struct wacom_features wacom_features_0x59 = /* Pen */ static const struct wacom_features wacom_features_0x59 = /* Pen */
{ "Wacom DTH2242", WACOM_PKGLEN_INTUOS, 95840, 54260, 2047, { "Wacom DTH2242", WACOM_PKGLEN_INTUOS, 95840, 54260, 2047,
63, DTK, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 63, DTK, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES,
...@@ -1972,6 +2007,12 @@ static const struct wacom_features wacom_features_0xCC = ...@@ -1972,6 +2007,12 @@ static const struct wacom_features wacom_features_0xCC =
static const struct wacom_features wacom_features_0xFA = static const struct wacom_features wacom_features_0xFA =
{ "Wacom Cintiq 22HD", WACOM_PKGLEN_INTUOS, 95840, 54260, 2047, { "Wacom Cintiq 22HD", WACOM_PKGLEN_INTUOS, 95840, 54260, 2047,
63, WACOM_22HD, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES }; 63, WACOM_22HD, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES };
static const struct wacom_features wacom_features_0x5B =
{ "Wacom Cintiq 22HDT", WACOM_PKGLEN_INTUOS, 95840, 54260, 2047,
63, WACOM_24HD, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, .oVid = USB_VENDOR_ID_WACOM, .oPid = 0x5e };
static const struct wacom_features wacom_features_0x5E =
{ "Wacom Cintiq 22HDT", .type = WACOM_24HDT,
.oVid = USB_VENDOR_ID_WACOM, .oPid = 0x5b, .touch_max = 10 };
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 };
...@@ -2143,8 +2184,11 @@ const struct usb_device_id wacom_ids[] = { ...@@ -2143,8 +2184,11 @@ const struct usb_device_id wacom_ids[] = {
{ USB_DEVICE_WACOM(0x43) }, { USB_DEVICE_WACOM(0x43) },
{ USB_DEVICE_WACOM(0x44) }, { USB_DEVICE_WACOM(0x44) },
{ USB_DEVICE_WACOM(0x45) }, { USB_DEVICE_WACOM(0x45) },
{ USB_DEVICE_WACOM(0x57) },
{ USB_DEVICE_WACOM(0x59) }, { USB_DEVICE_WACOM(0x59) },
{ USB_DEVICE_DETAILED(0x5D, USB_CLASS_HID, 0, 0) }, { USB_DEVICE_DETAILED(0x5D, USB_CLASS_HID, 0, 0) },
{ USB_DEVICE_WACOM(0x5B) },
{ USB_DEVICE_DETAILED(0x5E, USB_CLASS_HID, 0, 0) },
{ USB_DEVICE_WACOM(0xB0) }, { USB_DEVICE_WACOM(0xB0) },
{ USB_DEVICE_WACOM(0xB1) }, { USB_DEVICE_WACOM(0xB1) },
{ USB_DEVICE_WACOM(0xB2) }, { USB_DEVICE_WACOM(0xB2) },
...@@ -2205,6 +2249,7 @@ const struct usb_device_id wacom_ids[] = { ...@@ -2205,6 +2249,7 @@ const struct usb_device_id wacom_ids[] = {
{ USB_DEVICE_WACOM(0x100) }, { USB_DEVICE_WACOM(0x100) },
{ USB_DEVICE_WACOM(0x101) }, { USB_DEVICE_WACOM(0x101) },
{ USB_DEVICE_WACOM(0x10D) }, { USB_DEVICE_WACOM(0x10D) },
{ USB_DEVICE_WACOM(0x304) },
{ USB_DEVICE_WACOM(0x4001) }, { USB_DEVICE_WACOM(0x4001) },
{ USB_DEVICE_WACOM(0x47) }, { USB_DEVICE_WACOM(0x47) },
{ USB_DEVICE_WACOM(0xF4) }, { USB_DEVICE_WACOM(0xF4) },
......
...@@ -82,6 +82,7 @@ enum { ...@@ -82,6 +82,7 @@ enum {
WACOM_24HD, WACOM_24HD,
CINTIQ, CINTIQ,
WACOM_BEE, WACOM_BEE,
WACOM_13HD,
WACOM_MO, WACOM_MO,
WIRELESS, WIRELESS,
BAMBOO_PT, BAMBOO_PT,
......
...@@ -216,7 +216,7 @@ static int egalax_ts_probe(struct i2c_client *client, ...@@ -216,7 +216,7 @@ static int egalax_ts_probe(struct i2c_client *client,
input_set_abs_params(input_dev, input_set_abs_params(input_dev,
ABS_MT_POSITION_X, 0, EGALAX_MAX_X, 0, 0); ABS_MT_POSITION_X, 0, EGALAX_MAX_X, 0, 0);
input_set_abs_params(input_dev, input_set_abs_params(input_dev,
ABS_MT_POSITION_X, 0, EGALAX_MAX_Y, 0, 0); ABS_MT_POSITION_Y, 0, EGALAX_MAX_Y, 0, 0);
input_mt_init_slots(input_dev, MAX_SUPPORT_POINTS, 0); input_mt_init_slots(input_dev, MAX_SUPPORT_POINTS, 0);
input_set_drvdata(input_dev, ts); input_set_drvdata(input_dev, ts);
......
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