Lines Matching refs:data
128 unsigned char *data = wacom->data;
131 switch (data[0]) {
133 if (data[5] & 0x80) {
134 wacom->tool[0] = (data[5] & 0x20) ? BTN_TOOL_RUBBER : BTN_TOOL_PEN;
135 wacom->id[0] = (data[5] & 0x20) ? ERASER_DEVICE_ID : STYLUS_DEVICE_ID;
138 input_report_abs(input, ABS_X, get_unaligned_le16(&data[1]));
139 input_report_abs(input, ABS_Y, get_unaligned_le16(&data[3]));
140 input_report_abs(input, ABS_PRESSURE, (signed char)data[6] + 127);
141 input_report_key(input, BTN_TOUCH, ((signed char)data[6] > -127));
142 input_report_key(input, BTN_STYLUS, (data[5] & 0x40));
154 input_report_abs(input, ABS_X, get_unaligned_le16(&data[1]));
155 input_report_abs(input, ABS_Y, get_unaligned_le16(&data[3]));
156 input_report_abs(input, ABS_PRESSURE, (signed char)data[6] + 127);
157 input_report_key(input, BTN_TOUCH, ((signed char)data[6] > -80) && !(data[5] & 0x20));
158 input_report_key(input, BTN_STYLUS, (data[5] & 0x40));
163 "%s: received unknown report #%d\n", __func__, data[0]);
173 unsigned char *data = wacom->data;
177 if (data[0] != WACOM_REPORT_PENABLED) {
179 "%s: received unknown report #%d\n", __func__, data[0]);
183 prox = data[1] & 0x40;
186 if ((data[0] & 0x10) || (data[4] & 0x20)) {
200 if (wacom->tool[0] == BTN_TOOL_RUBBER && !(data[4] & 0x20)) {
209 pressure = (signed char)((data[7] << 1) | ((data[4] >> 2) & 1));
211 pressure = (pressure << 1) | ((data[4] >> 6) & 1);
214 input_report_abs(input, ABS_X, data[3] | (data[2] << 7) | ((data[1] & 0x03) << 14));
215 input_report_abs(input, ABS_Y, data[6] | (data[5] << 7) | ((data[4] & 0x03) << 14));
218 input_report_key(input, BTN_TOUCH, data[4] & 0x08);
219 input_report_key(input, BTN_STYLUS, data[4] & 0x10);
221 input_report_key(input, BTN_STYLUS2, (wacom->tool[0] == BTN_TOOL_PEN) && (data[4] & 0x20));
233 unsigned char *data = wacom->data;
236 if (data[0] != WACOM_REPORT_PENABLED) {
238 "%s: received unknown report #%d\n", __func__, data[0]);
242 if (data[1] & 0x04) {
243 input_report_key(input, BTN_TOOL_RUBBER, data[1] & 0x20);
244 input_report_key(input, BTN_TOUCH, data[1] & 0x08);
247 input_report_key(input, BTN_TOOL_PEN, data[1] & 0x20);
248 input_report_key(input, BTN_TOUCH, data[1] & 0x01);
252 input_report_abs(input, ABS_X, le16_to_cpup((__le16 *)&data[2]));
253 input_report_abs(input, ABS_Y, le16_to_cpup((__le16 *)&data[4]));
254 input_report_abs(input, ABS_PRESSURE, le16_to_cpup((__le16 *)&data[6]));
255 input_report_key(input, BTN_STYLUS, data[1] & 0x02);
256 input_report_key(input, BTN_STYLUS2, data[1] & 0x10);
262 unsigned char *data = wacom->data;
264 int prox = data[1] & 0x20;
267 "%s: received report #%d", __func__, data[0]);
271 wacom->tool[0] = (data[1] & 0x0c) ? BTN_TOOL_RUBBER : BTN_TOOL_PEN;
277 input_report_key(input, BTN_STYLUS, data[1] & 0x02);
278 input_report_key(input, BTN_STYLUS2, data[1] & 0x10);
279 input_report_abs(input, ABS_X, le16_to_cpup((__le16 *)&data[2]));
280 input_report_abs(input, ABS_Y, le16_to_cpup((__le16 *)&data[4]));
281 input_report_abs(input, ABS_PRESSURE, ((data[7] & 0x01) << 8) | data[6]);
282 input_report_key(input, BTN_TOUCH, data[1] & 0x05);
292 unsigned char *data = wacom->data;
296 if (data[0] != WACOM_REPORT_DTUS && data[0] != WACOM_REPORT_DTUSPAD) {
298 "%s: received unknown report #%d", __func__, data[0]);
300 } else if (data[0] == WACOM_REPORT_DTUSPAD) {
302 input_report_key(input, BTN_0, (data[1] & 0x01));
303 input_report_key(input, BTN_1, (data[1] & 0x02));
304 input_report_key(input, BTN_2, (data[1] & 0x04));
305 input_report_key(input, BTN_3, (data[1] & 0x08));
307 data[1] & 0x0f ? PAD_DEVICE_ID : 0);
310 prox = data[1] & 0x80;
312 switch ((data[1] >> 3) & 3) {
325 input_report_key(input, BTN_STYLUS, data[1] & 0x20);
326 input_report_key(input, BTN_STYLUS2, data[1] & 0x40);
327 input_report_abs(input, ABS_X, get_unaligned_be16(&data[3]));
328 input_report_abs(input, ABS_Y, get_unaligned_be16(&data[5]));
329 pressure = ((data[1] & 0x03) << 8) | (data[2] & 0xff);
344 unsigned char *data = wacom->data;
353 if (data[0] != WACOM_REPORT_PENABLED_BT) {
356 data[0]);
359 } else if (data[0] != WACOM_REPORT_PENABLED) {
361 "%s: received unknown report #%d\n", __func__, data[0]);
365 prox = data[1] & 0x80;
368 switch ((data[1] >> 5) & 3) {
381 input_report_key(input, BTN_MIDDLE, data[1] & 0x04);
390 input_report_abs(input, ABS_X, le16_to_cpup((__le16 *)&data[2]));
391 input_report_abs(input, ABS_Y, le16_to_cpup((__le16 *)&data[4]));
394 input_report_abs(input, ABS_PRESSURE, data[6] |
395 (((__u16) (data[1] & 0x08)) << 5));
397 input_report_abs(input, ABS_PRESSURE, data[6] |
398 ((data[7] & 0x03) << 8));
399 input_report_key(input, BTN_TOUCH, data[1] & 0x01);
400 input_report_key(input, BTN_STYLUS, data[1] & 0x02);
401 input_report_key(input, BTN_STYLUS2, data[1] & 0x04);
403 input_report_key(input, BTN_LEFT, data[1] & 0x01);
404 input_report_key(input, BTN_RIGHT, data[1] & 0x02);
407 input_report_abs(input, ABS_DISTANCE, data[6] & 0x3f);
408 rw = (data[7] & 0x04) - (data[7] & 0x03);
411 rw = 44 - (data[6] >> 2);
414 if (((data[1] >> 5) & 3) == 2) {
417 data[1] & 0x04);
418 rw = (data[6] & 0x01) ? -1 :
419 (data[6] & 0x02) ? 1 : 0;
424 input_report_abs(input, ABS_DISTANCE, data[7] & 0x3f);
425 rw = -(signed char)data[6];
437 /* send pad data */
440 prox = data[7] & 0xf8;
443 input_report_key(pad_input, BTN_BACK, (data[7] & 0x40));
444 input_report_key(pad_input, BTN_FORWARD, (data[7] & 0x80));
445 rw = ((data[7] & 0x18) >> 3) - ((data[7] & 0x20) >> 3);
455 prox = (data[7] & 0xf8) || data[8];
458 input_report_key(pad_input, BTN_BACK, (data[7] & 0x08));
459 input_report_key(pad_input, BTN_LEFT, (data[7] & 0x20));
460 input_report_key(pad_input, BTN_FORWARD, (data[7] & 0x10));
461 input_report_key(pad_input, BTN_RIGHT, (data[7] & 0x40));
462 input_report_abs(pad_input, ABS_WHEEL, (data[8] & 0x7f));
470 prox = data[7] & 0x03;
473 input_report_key(pad_input, BTN_0, (data[7] & 0x02));
474 input_report_key(pad_input, BTN_1, (data[7] & 0x01));
485 rw = (data[7] >> 2 & 0x07);
516 unsigned char *data = wacom->data;
528 if (!(data[0] == WACOM_REPORT_INTUOSPAD || data[0] == WACOM_REPORT_INTUOS5PAD ||
529 data[0] == WACOM_REPORT_CINTIQPAD))
533 buttons = (data[3] << 1) | (data[2] & 0x01);
534 ring1 = data[1];
536 buttons = data[6];
538 buttons = (data[4] << 1) | (data[3] & 0x01);
540 buttons = (data[8] << 8) | data[6];
541 ring1 = data[1];
542 ring2 = data[2];
549 * ((data[3] & 0x1f) << 8) | data[4])
552 keys = ((data[3] & 0x1C) ? 1<<2 : 0) |
553 ((data[4] & 0xE0) ? 1<<1 : 0) |
554 ((data[4] & 0x07) ? 1<<0 : 0);
555 keyboard = !!(data[4] & 0xE0);
556 info = !!(data[3] & 0x1C);
559 mute_touch = !!(data[4] & 0x07);
564 wrench = !!(data[4] & 0x07);
568 keys = data[2] & 0x07;
570 wrench = !!(data[2] & 0x01);
571 keyboard = !!(data[2] & 0x02);
574 mute_touch = !!(data[2] & 0x04);
579 menu = !!(data[2] & 0x04);
581 input_report_abs(input, ABS_X, be16_to_cpup((__be16 *)&data[4]));
582 input_report_abs(input, ABS_Y, be16_to_cpup((__be16 *)&data[6]));
583 input_report_abs(input, ABS_Z, be16_to_cpup((__be16 *)&data[8]));
590 * d-pad right -> data[4] & 0x10
591 * d-pad up -> data[4] & 0x20
592 * d-pad left -> data[4] & 0x40
593 * d-pad down -> data[4] & 0x80
594 * d-pad center -> data[3] & 0x01
596 buttons = (data[4] << 1) | (data[3] & 0x01);
598 /* d-pad right -> data[2] & 0x10
599 * d-pad up -> data[2] & 0x20
600 * d-pad left -> data[2] & 0x40
601 * d-pad down -> data[2] & 0x80
602 * d-pad center -> data[1] & 0x01
604 buttons = ((data[2] >> 4) << 7) |
605 ((data[1] & 0x04) << 4) |
606 ((data[2] & 0x0F) << 2) |
607 (data[1] & 0x03);
611 * addition to the mechanical switch. Switch data is
612 * stored in data[4], capacitive data in data[5].
614 * Touch ring mode switch (data[3]) has no capacitive sensor
616 buttons = (data[4] << 1) | (data[3] & 0x01);
617 ring1 = data[2];
620 buttons = (data[8] << 10) | ((data[7] & 0x01) << 9) |
621 (data[6] << 1) | (data[5] & 0x01);
625 keys = data[9] & 0x07;
627 info = !!(data[9] & 0x01);
628 wrench = !!(data[9] & 0x02);
631 buttons = ((data[6] & 0x10) << 5) |
632 ((data[5] & 0x10) << 4) |
633 ((data[6] & 0x0F) << 4) |
634 (data[5] & 0x0F);
636 strip1 = ((data[1] & 0x1f) << 8) | data[2];
637 strip2 = ((data[3] & 0x1f) << 8) | data[4];
784 unsigned char *data = wacom->data;
785 int idx = (features->type == INTUOS) ? (data[1] & 0x01) : 0;
822 unsigned char *data = wacom->data;
824 int idx = (features->type == INTUOS) ? (data[1] & 0x01) : 0;
826 if (!(((data[1] & 0xfc) == 0xc0) || /* in prox */
827 ((data[1] & 0xfe) == 0x20) || /* in range */
828 ((data[1] & 0xfe) == 0x80))) /* out prox */
832 if ((data[1] & 0xfc) == 0xc0) {
834 wacom->serial[idx] = ((__u64)(data[3] & 0x0f) << 28) +
835 (data[4] << 20) + (data[5] << 12) +
836 (data[6] << 4) + (data[7] >> 4);
838 wacom->id[idx] = (data[2] << 4) | (data[3] >> 4) |
839 ((data[7] & 0x0f) << 16) | ((data[8] & 0xf0) << 8);
848 if ((data[1] & 0xfe) == 0x20) {
863 if ((data[1] & 0xfe) == 0x80) {
891 unsigned char *data = wacom->data;
893 int idx = (features->type == INTUOS) ? (data[1] & 0x01) : 0;
894 unsigned char type = (data[1] >> 1) & 0x0F;
897 if (data[0] != WACOM_REPORT_PENABLED && data[0] != WACOM_REPORT_CINTIQ &&
898 data[0] != WACOM_REPORT_INTUOS_PEN)
912 * don't report events for invalid data
927 /* Cintiq doesn't send data when RDY bit isn't set */
928 (features->type == CINTIQ && !(data[1] & 0x40)))
931 x = (be16_to_cpup((__be16 *)&data[2]) << 1) | ((data[9] >> 1) & 1);
932 y = (be16_to_cpup((__be16 *)&data[4]) << 1) | (data[9] & 1);
933 distance = data[9] >> 2;
951 t = (data[6] << 3) | ((data[7] & 0xC0) >> 5) | (data[1] & 1);
957 (((data[7] << 1) & 0x7e) | (data[8] >> 7)) - 64);
958 input_report_abs(input, ABS_TILT_Y, (data[8] & 0x7f) - 64);
960 input_report_key(input, BTN_STYLUS, data[1] & 2);
961 input_report_key(input, BTN_STYLUS2, data[1] & 4);
968 (data[6] << 2) | ((data[7] >> 6) & 3));
970 (((data[7] << 1) & 0x7e) | (data[8] >> 7)) - 64);
971 input_report_abs(input, ABS_TILT_Y, (data[8] & 0x7f) - 64);
978 t = (data[6] << 3) | ((data[7] >> 5) & 7);
979 t = (data[7] & 0x20) ? ((t > 900) ? ((t-1) / 2 - 1350) :
984 t = (data[6] << 3) | ((data[7] >> 5) & 7);
985 input_report_abs(input, ABS_RZ, (data[7] & 0x20) ?
992 input_report_key(input, BTN_LEFT, data[8] & 0x01);
993 input_report_key(input, BTN_MIDDLE, data[8] & 0x02);
994 input_report_key(input, BTN_RIGHT, data[8] & 0x04);
996 input_report_key(input, BTN_SIDE, data[8] & 0x20);
997 input_report_key(input, BTN_EXTRA, data[8] & 0x10);
998 t = (data[6] << 2) | ((data[7] >> 6) & 3);
999 input_report_abs(input, ABS_THROTTLE, (data[8] & 0x08) ? -t : t);
1004 input_report_key(input, BTN_LEFT, data[6] & 0x01);
1005 input_report_key(input, BTN_MIDDLE, data[6] & 0x02);
1006 input_report_key(input, BTN_RIGHT, data[6] & 0x04);
1007 input_report_rel(input, REL_WHEEL, ((data[7] & 0x80) >> 7)
1008 - ((data[7] & 0x40) >> 6));
1009 input_report_key(input, BTN_SIDE, data[6] & 0x08);
1010 input_report_key(input, BTN_EXTRA, data[6] & 0x10);
1013 (((data[7] << 1) & 0x7e) | (data[8] >> 7)) - 64);
1014 input_report_abs(input, ABS_TILT_Y, (data[8] & 0x7f) - 64);
1020 input_report_key(input, BTN_LEFT, data[8] & 0x04);
1021 input_report_key(input, BTN_MIDDLE, data[8] & 0x08);
1022 input_report_key(input, BTN_RIGHT, data[8] & 0x10);
1023 input_report_rel(input, REL_WHEEL, (data[8] & 0x01)
1024 - ((data[8] & 0x02) >> 1));
1028 input_report_key(input, BTN_SIDE, data[8] & 0x40);
1029 input_report_key(input, BTN_EXTRA, data[8] & 0x20);
1034 input_report_key(input, BTN_LEFT, data[8] & 0x01);
1035 input_report_key(input, BTN_MIDDLE, data[8] & 0x02);
1036 input_report_key(input, BTN_RIGHT, data[8] & 0x04);
1037 input_report_key(input, BTN_SIDE, data[8] & 0x10);
1038 input_report_key(input, BTN_EXTRA, data[8] & 0x08);
1063 unsigned char *data = wacom->data;
1067 if (data[0] != WACOM_REPORT_PENABLED &&
1068 data[0] != WACOM_REPORT_INTUOS_ID1 &&
1069 data[0] != WACOM_REPORT_INTUOS_ID2 &&
1070 data[0] != WACOM_REPORT_INTUOSPAD &&
1071 data[0] != WACOM_REPORT_INTUOS_PEN &&
1072 data[0] != WACOM_REPORT_CINTIQ &&
1073 data[0] != WACOM_REPORT_CINTIQPAD &&
1074 data[0] != WACOM_REPORT_INTUOS5PAD) {
1076 "%s: received unknown report #%d\n", __func__, data[0]);
1100 unsigned char *data = wacom_wac->data;
1109 if (data[0] != WACOM_REPORT_REMOTE) {
1111 __func__, data[0]);
1115 serial = data[3] + (data[4] << 8) + (data[5] << 16);
1133 input_report_key(input, BTN_0, (data[9] & 0x01));
1134 input_report_key(input, BTN_1, (data[9] & 0x02));
1135 input_report_key(input, BTN_2, (data[9] & 0x04));
1136 input_report_key(input, BTN_3, (data[9] & 0x08));
1137 input_report_key(input, BTN_4, (data[9] & 0x10));
1138 input_report_key(input, BTN_5, (data[9] & 0x20));
1139 input_report_key(input, BTN_6, (data[9] & 0x40));
1140 input_report_key(input, BTN_7, (data[9] & 0x80));
1142 input_report_key(input, BTN_8, (data[10] & 0x01));
1143 input_report_key(input, BTN_9, (data[10] & 0x02));
1144 input_report_key(input, BTN_A, (data[10] & 0x04));
1145 input_report_key(input, BTN_B, (data[10] & 0x08));
1146 input_report_key(input, BTN_C, (data[10] & 0x10));
1147 input_report_key(input, BTN_X, (data[10] & 0x20));
1148 input_report_key(input, BTN_Y, (data[10] & 0x40));
1149 input_report_key(input, BTN_Z, (data[10] & 0x80));
1151 input_report_key(input, BTN_BASE, (data[11] & 0x01));
1152 input_report_key(input, BTN_BASE2, (data[11] & 0x02));
1154 if (data[12] & 0x80)
1155 input_report_abs(input, ABS_WHEEL, (data[12] & 0x7f) - 1);
1159 bat_percent = data[7] & 0x7f;
1160 bat_charging = !!(data[7] & 0x80);
1162 if (data[9] | data[10] | (data[11] & 0x03) | data[12])
1172 touch_ring_mode = (data[11] & 0xC0) >> 6;
1191 unsigned char *data = wacom_wac->data;
1197 if (data[0] != WACOM_REPORT_DEVICE_LIST)
1204 int serial = (data[j+6] << 16) + (data[j+5] << 8) + data[j+4];
1205 bool connected = data[j+2];
1234 unsigned char *data)
1236 memcpy(wacom->data, data, 10);
1246 unsigned char data[WACOM_PKGLEN_MAX];
1250 memcpy(data, wacom->data, len);
1252 switch (data[0]) {
1254 wacom_intuos_bt_process_data(wacom, data + i);
1258 wacom_intuos_bt_process_data(wacom, data + i);
1260 wacom_intuos_bt_process_data(wacom, data + i);
1262 power_raw = data[i];
1274 data[0], data[1], len);
1309 unsigned char *data = wacom->data;
1317 wacom->serial[0] = get_unaligned_le64(&data[99]);
1318 wacom->id[0] = get_unaligned_le16(&data[107]);
1322 wacom->serial[0] = get_unaligned_le64(&data[33]);
1323 wacom->id[0] = get_unaligned_le16(&data[41]);
1335 unsigned char *frame = &data[i*pen_frame_len + 1];
1350 unsigned char *frame = &data[i*pen_frame_len + 1];
1444 unsigned char *data = wacom->data;
1449 unsigned char *frame = &data[i*finger_frame_len + 109];
1498 input_report_switch(touch_input, SW_MUTE_DEVICE, !(data[281] >> 7));
1507 unsigned char *data = wacom->data;
1510 int expresskeys = data[282];
1511 int center = (data[281] & 0x40) >> 6;
1512 int ring = data[285] & 0x7F;
1513 bool ringstatus = data[285] & 0x80;
1516 /* Fix touchring data: userspace expects 0 at left and increasing clockwise */
1536 unsigned char *data = wacom->data;
1538 bool chg = data[284] & 0x80;
1539 int battery_status = data[284] & 0x7F;
1548 unsigned char *data = wacom->data;
1550 int buttons = data[44];
1563 unsigned char *data = wacom->data;
1565 bool chg = data[45] & 0x80;
1566 int battery_status = data[45] & 0x7F;
1574 unsigned char *data = wacom->data;
1576 if (data[0] != 0x80 && data[0] != 0x81) {
1578 "%s: received unknown report #%d\n", __func__, data[0]);
1598 unsigned char *data = wacom->data;
1600 int current_num_contacts = data[61];
1613 current_num_contacts = data[63];
1630 bool touch = (data[offset] & 0x1) && report_touch_events(wacom);
1631 int slot = input_mt_get_slot_by_key(input, data[offset + 1]);
1639 int t_x = get_unaligned_le16(&data[offset + 2]);
1640 int t_y = get_unaligned_le16(&data[offset + 4 + y_offset]);
1646 int c_x = get_unaligned_le16(&data[offset + 4]);
1647 int c_y = get_unaligned_le16(&data[offset + 8]);
1648 int w = get_unaligned_le16(&data[offset + 10]);
1649 int h = get_unaligned_le16(&data[offset + 12]);
1672 unsigned char *data = wacom->data;
1674 int current_num_contacts = data[2];
1694 bool touch = (data[offset] & 0x1) && report_touch_events(wacom);
1695 int id = get_unaligned_le16(&data[offset + 1]);
1704 int x = get_unaligned_le16(&data[offset + x_offset + 7]);
1705 int y = get_unaligned_le16(&data[offset + x_offset + 9]);
1723 unsigned char *data = wacom->data;
1727 int p = data[1] & (1 << i);
1733 int x = le16_to_cpup((__le16 *)&data[i * 2 + 2]) & 0x7fff;
1734 int y = le16_to_cpup((__le16 *)&data[i * 2 + 6]) & 0x7fff;
1750 unsigned char *data = wacom->data;
1759 prox = prox && (data[0] & 0x01);
1760 x = get_unaligned_le16(&data[1]);
1761 y = get_unaligned_le16(&data[3]);
1763 prox = prox && (data[2] & 0x01);
1764 x = get_unaligned_le16(&data[3]);
1765 y = get_unaligned_le16(&data[5]);
1767 prox = prox && (data[1] & 0x01);
1768 x = le16_to_cpup((__le16 *)&data[2]);
1769 y = le16_to_cpup((__le16 *)&data[4]);
1786 unsigned char *data = wacom->data;
1788 bool prox = data[1] & 0x20;
1792 wacom->tool[0] = (data[1] & 0x0c) ? BTN_TOOL_RUBBER : BTN_TOOL_PEN;
1801 input_report_key(input, BTN_STYLUS, data[1] & 0x02);
1802 input_report_key(input, BTN_STYLUS2, data[1] & 0x10);
1803 input_report_abs(input, ABS_X, le16_to_cpup((__le16 *)&data[2]));
1804 input_report_abs(input, ABS_Y, le16_to_cpup((__le16 *)&data[4]));
1805 input_report_abs(input, ABS_PRESSURE, ((data[7] & 0x07) << 8) | data[6]);
1806 input_report_key(input, BTN_TOUCH, data[1] & 0x05);
1816 unsigned char *data = wacom->data;
1820 "%s: received report #%d\n", __func__, data[0]);
1823 data[0] == WACOM_REPORT_PENABLED)
1828 "%s: received report #%d\n", __func__, data[0]);
1838 switch (data[0]) {
2120 /* do not overwrite previous data */
2782 /* If more packets of data are expected, give us a chance to
2954 unsigned char *data = wacom->data;
2957 if (data[0] != 0x02)
2961 int offset = (data[1] & 0x80) ? (8 * i) : (9 * i);
2963 && (data[offset + 3] & 0x80);
2968 int x = get_unaligned_be16(&data[offset + 3]) & 0x7ff;
2969 int y = get_unaligned_be16(&data[offset + 5]) & 0x7ff;
2981 input_report_key(pad_input, BTN_LEFT, (data[1] & 0x08) != 0);
2982 input_report_key(pad_input, BTN_FORWARD, (data[1] & 0x04) != 0);
2983 input_report_key(pad_input, BTN_BACK, (data[1] & 0x02) != 0);
2984 input_report_key(pad_input, BTN_RIGHT, (data[1] & 0x01) != 0);
2990 static void wacom_bpt3_touch_msg(struct wacom_wac *wacom, unsigned char *data)
2994 bool touch = data[1] & 0x80;
2995 int slot = input_mt_get_slot_by_key(input, data[0]);
3006 int x = (data[2] << 4) | (data[4] >> 4);
3007 int y = (data[3] << 4) | (data[4] & 0x0f);
3011 width = data[5] * 100;
3012 height = data[6] * 100;
3019 int a = data[5];
3033 static void wacom_bpt3_button_msg(struct wacom_wac *wacom, unsigned char *data)
3039 input_report_key(input, BTN_LEFT, (data[1] & 0x02) != 0);
3040 input_report_key(input, BTN_BACK, (data[1] & 0x08) != 0);
3042 input_report_key(input, BTN_BACK, (data[1] & 0x02) != 0);
3043 input_report_key(input, BTN_LEFT, (data[1] & 0x08) != 0);
3045 input_report_key(input, BTN_FORWARD, (data[1] & 0x04) != 0);
3046 input_report_key(input, BTN_RIGHT, (data[1] & 0x01) != 0);
3051 unsigned char *data = wacom->data;
3052 int count = data[1] & 0x07;
3055 if (data[0] != 0x02)
3058 /* data has up to 7 fixed sized 8-byte messages starting at data[2] */
3061 int msg_id = data[offset];
3064 wacom_bpt3_touch_msg(wacom, data + offset);
3067 wacom_bpt3_button_msg(wacom, data + offset);
3071 /* only update touch if we actually have a touchpad and touch data changed */
3084 unsigned char *data = wacom->data;
3089 if (data[0] != WACOM_REPORT_PENABLED)
3092 range = (data[1] & 0x80) == 0x80;
3093 prox = (data[1] & 0x40) == 0x40;
3094 rdy = (data[1] & 0x20) == 0x20;
3101 p = le16_to_cpup((__le16 *)&data[6]);
3102 pen = data[1] & 0x01;
3103 btn1 = data[1] & 0x02;
3104 btn2 = data[1] & 0x04;
3107 x = le16_to_cpup((__le16 *)&data[2]);
3108 y = le16_to_cpup((__le16 *)&data[4]);
3110 if (data[1] & 0x08) {
3126 if (data[8] <= features->distance_max)
3127 d = features->distance_max - data[8];
3173 unsigned char *data)
3184 prefix = data[0];
3185 data[0] = WACOM_REPORT_BPAD_PEN;
3192 hid_input_report(wacom->shared->pen, HID_INPUT_REPORT, data,
3195 data[0] = prefix;
3199 unsigned char *data)
3207 prefix = data[0];
3219 finger_data = data + 1 + id * 3;
3240 unsigned char *data = wacom->data;
3244 (data[0] != WACOM_REPORT_BPAD_TOUCH))
3247 if (data[1] & 0x01)
3248 wacom_bamboo_pad_pen_event(wacom, &data[1]);
3250 if (data[1] & 0x02)
3251 return wacom_bamboo_pad_touch_event(wacom, &data[9]);
3258 unsigned char *data = wacom->data;
3261 if (len != WACOM_PKGLEN_WIRELESS || data[0] != WACOM_REPORT_WL)
3264 connected = data[1] & 0x01;
3273 SW_MUTE_DEVICE, data[5] & 0x40);
3277 pid = get_unaligned_be16(&data[6]);
3278 battery = (data[5] & 0x3f) * 100 / 31;
3279 charging = !!(data[5] & 0x80);
3302 unsigned char *data = wacom_wac->data;
3304 if (data[0] != WACOM_REPORT_USB)
3312 SW_MUTE_DEVICE, data[8] & 0x40);
3316 if (data[9] & 0x02) { /* wireless module is attached */
3317 int battery = (data[8] & 0x3f) * 100 / 31;
3318 bool charging = !!(data[8] & 0x80);
3408 else if (wacom_wac->data[0] == WACOM_REPORT_USB)
3434 if (wacom_wac->data[0] == WACOM_REPORT_USB)
3450 if (wacom_wac->data[0] == WACOM_REPORT_DEVICE_LIST)
3545 * Intuos5/Pro and Bamboo 3rd gen have no useful data about its
3575 * sends ghosts PAD data on it. However, later, we must disable this