Lines Matching refs:wacom
52 struct wacom *wacom = container_of(wacom_wac, struct wacom, wacom_wac); in wacom_notify_battery() local
64 if (wacom->battery) in wacom_notify_battery()
65 power_supply_changed(wacom->battery); in wacom_notify_battery()
69 static int wacom_penpartner_irq(struct wacom_wac *wacom) in wacom_penpartner_irq() argument
71 unsigned char *data = wacom->data; in wacom_penpartner_irq()
72 struct input_dev *input = wacom->input; in wacom_penpartner_irq()
77 wacom->tool[0] = (data[5] & 0x20) ? BTN_TOOL_RUBBER : BTN_TOOL_PEN; in wacom_penpartner_irq()
78 wacom->id[0] = (data[5] & 0x20) ? ERASER_DEVICE_ID : STYLUS_DEVICE_ID; in wacom_penpartner_irq()
79 input_report_key(input, wacom->tool[0], 1); in wacom_penpartner_irq()
80 input_report_abs(input, ABS_MISC, wacom->id[0]); /* report tool id */ in wacom_penpartner_irq()
87 input_report_key(input, wacom->tool[0], 0); in wacom_penpartner_irq()
113 static int wacom_pl_irq(struct wacom_wac *wacom) in wacom_pl_irq() argument
115 struct wacom_features *features = &wacom->features; in wacom_pl_irq()
116 unsigned char *data = wacom->data; in wacom_pl_irq()
117 struct input_dev *input = wacom->input; in wacom_pl_irq()
129 wacom->id[0] = ERASER_DEVICE_ID; in wacom_pl_irq()
141 if (!wacom->tool[0]) { in wacom_pl_irq()
144 wacom->tool[1] = BTN_TOOL_RUBBER; in wacom_pl_irq()
147 wacom->tool[1] = (data[4] & 0x20) ? BTN_TOOL_RUBBER : BTN_TOOL_PEN; in wacom_pl_irq()
150 if (wacom->tool[1] == BTN_TOOL_RUBBER && !(data[4] & 0x20)) { in wacom_pl_irq()
152 input_report_key(input, wacom->tool[1], 0); in wacom_pl_irq()
154 wacom->tool[1] = BTN_TOOL_PEN; in wacom_pl_irq()
158 if (wacom->tool[1] != BTN_TOOL_RUBBER) { in wacom_pl_irq()
160 wacom->tool[1] = BTN_TOOL_PEN; in wacom_pl_irq()
161 wacom->id[0] = STYLUS_DEVICE_ID; in wacom_pl_irq()
163 input_report_key(input, wacom->tool[1], prox); /* report in proximity for tool */ in wacom_pl_irq()
164 input_report_abs(input, ABS_MISC, wacom->id[0]); /* report tool id */ in wacom_pl_irq()
172 input_report_key(input, BTN_STYLUS2, (wacom->tool[1] == BTN_TOOL_PEN) && (data[4] & 0x20)); in wacom_pl_irq()
175 if (wacom->tool[1] != BTN_TOOL_RUBBER) { in wacom_pl_irq()
177 wacom->tool[1] = BTN_TOOL_PEN; in wacom_pl_irq()
179 input_report_key(input, wacom->tool[1], prox); in wacom_pl_irq()
182 wacom->tool[0] = prox; /* Save proximity state */ in wacom_pl_irq()
186 static int wacom_ptu_irq(struct wacom_wac *wacom) in wacom_ptu_irq() argument
188 unsigned char *data = wacom->data; in wacom_ptu_irq()
189 struct input_dev *input = wacom->input; in wacom_ptu_irq()
200 wacom->id[0] = ERASER_DEVICE_ID; in wacom_ptu_irq()
204 wacom->id[0] = STYLUS_DEVICE_ID; in wacom_ptu_irq()
206 input_report_abs(input, ABS_MISC, wacom->id[0]); /* report tool id */ in wacom_ptu_irq()
215 static int wacom_dtu_irq(struct wacom_wac *wacom) in wacom_dtu_irq() argument
217 unsigned char *data = wacom->data; in wacom_dtu_irq()
218 struct input_dev *input = wacom->input; in wacom_dtu_irq()
226 wacom->tool[0] = (data[1] & 0x0c) ? BTN_TOOL_RUBBER : BTN_TOOL_PEN; in wacom_dtu_irq()
227 if (wacom->tool[0] == BTN_TOOL_PEN) in wacom_dtu_irq()
228 wacom->id[0] = STYLUS_DEVICE_ID; in wacom_dtu_irq()
230 wacom->id[0] = ERASER_DEVICE_ID; in wacom_dtu_irq()
239 wacom->id[0] = 0; in wacom_dtu_irq()
240 input_report_key(input, wacom->tool[0], prox); in wacom_dtu_irq()
241 input_report_abs(input, ABS_MISC, wacom->id[0]); in wacom_dtu_irq()
245 static int wacom_dtus_irq(struct wacom_wac *wacom) in wacom_dtus_irq() argument
247 char *data = wacom->data; in wacom_dtus_irq()
248 struct input_dev *input = wacom->input; in wacom_dtus_irq()
256 input = wacom->pad_input; in wacom_dtus_irq()
269 wacom->tool[0] = BTN_TOOL_RUBBER; in wacom_dtus_irq()
270 wacom->id[0] = ERASER_DEVICE_ID; in wacom_dtus_irq()
274 wacom->tool[0] = BTN_TOOL_PEN; in wacom_dtus_irq()
275 wacom->id[0] = STYLUS_DEVICE_ID; in wacom_dtus_irq()
289 wacom->id[0] = 0; in wacom_dtus_irq()
290 input_report_key(input, wacom->tool[0], prox); in wacom_dtus_irq()
291 input_report_abs(input, ABS_MISC, wacom->id[0]); in wacom_dtus_irq()
296 static int wacom_graphire_irq(struct wacom_wac *wacom) in wacom_graphire_irq() argument
298 struct wacom_features *features = &wacom->features; in wacom_graphire_irq()
299 unsigned char *data = wacom->data; in wacom_graphire_irq()
300 struct input_dev *input = wacom->input; in wacom_graphire_irq()
301 struct input_dev *pad_input = wacom->pad_input; in wacom_graphire_irq()
321 if (prox || wacom->id[0]) { in wacom_graphire_irq()
326 wacom->tool[0] = BTN_TOOL_PEN; in wacom_graphire_irq()
327 wacom->id[0] = STYLUS_DEVICE_ID; in wacom_graphire_irq()
331 wacom->tool[0] = BTN_TOOL_RUBBER; in wacom_graphire_irq()
332 wacom->id[0] = ERASER_DEVICE_ID; in wacom_graphire_irq()
340 wacom->tool[0] = BTN_TOOL_MOUSE; in wacom_graphire_irq()
341 wacom->id[0] = CURSOR_DEVICE_ID; in wacom_graphire_irq()
347 if (wacom->tool[0] != BTN_TOOL_MOUSE) { in wacom_graphire_irq()
386 wacom->id[0] = 0; in wacom_graphire_irq()
387 input_report_abs(input, ABS_MISC, wacom->id[0]); /* report tool id */ in wacom_graphire_irq()
388 input_report_key(input, wacom->tool[0], prox); in wacom_graphire_irq()
396 if (prox || wacom->id[1]) { in wacom_graphire_irq()
397 wacom->id[1] = PAD_DEVICE_ID; in wacom_graphire_irq()
403 wacom->id[1] = 0; in wacom_graphire_irq()
404 input_report_abs(pad_input, ABS_MISC, wacom->id[1]); in wacom_graphire_irq()
411 if (prox || wacom->id[1]) { in wacom_graphire_irq()
412 wacom->id[1] = PAD_DEVICE_ID; in wacom_graphire_irq()
419 wacom->id[1] = 0; in wacom_graphire_irq()
420 input_report_abs(pad_input, ABS_MISC, wacom->id[1]); in wacom_graphire_irq()
426 if (prox || wacom->id[1]) { in wacom_graphire_irq()
427 wacom->id[1] = PAD_DEVICE_ID; in wacom_graphire_irq()
431 wacom->id[1] = 0; in wacom_graphire_irq()
432 input_report_abs(pad_input, ABS_MISC, wacom->id[1]); in wacom_graphire_irq()
443 wacom_notify_battery(wacom, battery_capacity, ps_connected, in wacom_graphire_irq()
452 struct wacom *wacom = container_of(wacom_wac, struct wacom, wacom_wac); in wacom_intuos_schedule_prox_event() local
456 re = &(wacom->hdev->report_enum[HID_FEATURE_REPORT]); in wacom_intuos_schedule_prox_event()
459 hid_hw_request(wacom->hdev, r, HID_REQ_GET_REPORT); in wacom_intuos_schedule_prox_event()
463 static int wacom_intuos_inout(struct wacom_wac *wacom) in wacom_intuos_inout() argument
465 struct wacom_features *features = &wacom->features; in wacom_intuos_inout()
466 unsigned char *data = wacom->data; in wacom_intuos_inout()
467 struct input_dev *input = wacom->input; in wacom_intuos_inout()
477 wacom->serial[idx] = ((data[3] & 0x0f) << 28) + in wacom_intuos_inout()
481 wacom->id[idx] = (data[2] << 4) | (data[3] >> 4) | in wacom_intuos_inout()
484 switch (wacom->id[idx]) { in wacom_intuos_inout()
489 wacom->tool[idx] = BTN_TOOL_PENCIL; in wacom_intuos_inout()
506 wacom->tool[idx] = BTN_TOOL_PEN; in wacom_intuos_inout()
511 wacom->tool[idx] = BTN_TOOL_BRUSH; in wacom_intuos_inout()
519 wacom->tool[idx] = BTN_TOOL_MOUSE; in wacom_intuos_inout()
525 wacom->tool[idx] = BTN_TOOL_LENS; in wacom_intuos_inout()
545 wacom->tool[idx] = BTN_TOOL_RUBBER; in wacom_intuos_inout()
554 wacom->tool[idx] = BTN_TOOL_AIRBRUSH; in wacom_intuos_inout()
558 wacom->tool[idx] = BTN_TOOL_PEN; in wacom_intuos_inout()
568 if ((!((wacom->id[idx] >> 20) & 0x01) && in wacom_intuos_inout()
571 (wacom->tool[idx] == BTN_TOOL_LENS && in wacom_intuos_inout()
584 wacom->shared->stylus_in_proximity = true; in wacom_intuos_inout()
585 if (wacom->shared->touch_down) in wacom_intuos_inout()
589 if (((data[1] & 0xfe) == 0x20) && wacom->reporting_data) { in wacom_intuos_inout()
592 input_report_abs(input, ABS_DISTANCE, wacom->features.distance_max); in wacom_intuos_inout()
598 wacom->shared->stylus_in_proximity = false; in wacom_intuos_inout()
599 wacom->reporting_data = false; in wacom_intuos_inout()
602 if (!wacom->id[idx]) in wacom_intuos_inout()
614 if (wacom->tool[idx] >= BTN_TOOL_MOUSE) { in wacom_intuos_inout()
631 input_report_key(input, wacom->tool[idx], 0); in wacom_intuos_inout()
633 input_event(input, EV_MSC, MSC_SERIAL, wacom->serial[idx]); in wacom_intuos_inout()
634 wacom->id[idx] = 0; in wacom_intuos_inout()
639 if (!wacom->id[idx]) { in wacom_intuos_inout()
641 wacom_intuos_schedule_prox_event(wacom); in wacom_intuos_inout()
648 static void wacom_intuos_general(struct wacom_wac *wacom) in wacom_intuos_general() argument
650 struct wacom_features *features = &wacom->features; in wacom_intuos_general()
651 unsigned char *data = wacom->data; in wacom_intuos_general()
652 struct input_dev *input = wacom->input; in wacom_intuos_general()
680 static int wacom_intuos_irq(struct wacom_wac *wacom) in wacom_intuos_irq() argument
682 struct wacom_features *features = &wacom->features; in wacom_intuos_irq()
683 unsigned char *data = wacom->data; in wacom_intuos_irq()
684 struct input_dev *input = wacom->input; in wacom_intuos_irq()
707 input = wacom->pad_input; in wacom_intuos_irq()
920 result = wacom_intuos_inout(wacom); in wacom_intuos_irq()
935 wacom_intuos_general(wacom); in wacom_intuos_irq()
966 } else if (wacom->tool[idx] == BTN_TOOL_MOUSE) { in wacom_intuos_irq()
997 wacom->tool[idx] == BTN_TOOL_LENS) { in wacom_intuos_irq()
1007 input_report_abs(input, ABS_MISC, wacom->id[idx]); /* report tool id */ in wacom_intuos_irq()
1008 input_report_key(input, wacom->tool[idx], 1); in wacom_intuos_irq()
1009 input_event(input, EV_MSC, MSC_SERIAL, wacom->serial[idx]); in wacom_intuos_irq()
1010 wacom->reporting_data = true; in wacom_intuos_irq()
1022 static void wacom_intuos_bt_process_data(struct wacom_wac *wacom, in wacom_intuos_bt_process_data() argument
1025 memcpy(wacom->data, data, 10); in wacom_intuos_bt_process_data()
1026 wacom_intuos_irq(wacom); in wacom_intuos_bt_process_data()
1028 input_sync(wacom->input); in wacom_intuos_bt_process_data()
1029 if (wacom->pad_input) in wacom_intuos_bt_process_data()
1030 input_sync(wacom->pad_input); in wacom_intuos_bt_process_data()
1033 static int wacom_intuos_bt_irq(struct wacom_wac *wacom, size_t len) in wacom_intuos_bt_irq() argument
1039 memcpy(data, wacom->data, len); in wacom_intuos_bt_irq()
1043 wacom_intuos_bt_process_data(wacom, data + i); in wacom_intuos_bt_irq()
1047 wacom_intuos_bt_process_data(wacom, data + i); in wacom_intuos_bt_irq()
1049 wacom_intuos_bt_process_data(wacom, data + i); in wacom_intuos_bt_irq()
1055 wacom_notify_battery(wacom, battery_capacity, bat_charging, in wacom_intuos_bt_irq()
1060 dev_dbg(wacom->input->dev.parent, in wacom_intuos_bt_irq()
1068 static int wacom_wac_finger_count_touches(struct wacom_wac *wacom) in wacom_wac_finger_count_touches() argument
1070 struct input_dev *input = wacom->input; in wacom_wac_finger_count_touches()
1071 unsigned touch_max = wacom->features.touch_max; in wacom_wac_finger_count_touches()
1079 if ((touch_max == 1) && (wacom->features.type == HID_GENERIC)) in wacom_wac_finger_count_touches()
1080 return wacom->hid_data.tipswitch && in wacom_wac_finger_count_touches()
1081 !wacom->shared->stylus_in_proximity; in wacom_wac_finger_count_touches()
1093 static int wacom_24hdt_irq(struct wacom_wac *wacom) in wacom_24hdt_irq() argument
1095 struct input_dev *input = wacom->input; in wacom_24hdt_irq()
1096 unsigned char *data = wacom->data; in wacom_24hdt_irq()
1104 if (wacom->features.type == WACOM_27QHDT) { in wacom_24hdt_irq()
1116 wacom->num_contacts_left = current_num_contacts; in wacom_24hdt_irq()
1118 contacts_to_send = min(num_contacts_left, wacom->num_contacts_left); in wacom_24hdt_irq()
1122 bool touch = (data[offset] & 0x1) && !wacom->shared->stylus_in_proximity; in wacom_24hdt_irq()
1137 if (wacom->features.type != WACOM_27QHDT) { in wacom_24hdt_irq()
1153 wacom->num_contacts_left -= contacts_to_send; in wacom_24hdt_irq()
1154 if (wacom->num_contacts_left <= 0) { in wacom_24hdt_irq()
1155 wacom->num_contacts_left = 0; in wacom_24hdt_irq()
1156 wacom->shared->touch_down = wacom_wac_finger_count_touches(wacom); in wacom_24hdt_irq()
1161 static int wacom_mt_touch(struct wacom_wac *wacom) in wacom_mt_touch() argument
1163 struct input_dev *input = wacom->input; in wacom_mt_touch()
1164 unsigned char *data = wacom->data; in wacom_mt_touch()
1171 if (wacom->features.type == MTTPC || wacom->features.type == MTTPC_B) in wacom_mt_touch()
1179 wacom->num_contacts_left = current_num_contacts; in wacom_mt_touch()
1182 contacts_to_send = min(5, wacom->num_contacts_left); in wacom_mt_touch()
1186 bool touch = (data[offset] & 0x1) && !wacom->shared->stylus_in_proximity; in wacom_mt_touch()
1204 wacom->num_contacts_left -= contacts_to_send; in wacom_mt_touch()
1205 if (wacom->num_contacts_left <= 0) { in wacom_mt_touch()
1206 wacom->num_contacts_left = 0; in wacom_mt_touch()
1207 wacom->shared->touch_down = wacom_wac_finger_count_touches(wacom); in wacom_mt_touch()
1212 static int wacom_tpc_mt_touch(struct wacom_wac *wacom) in wacom_tpc_mt_touch() argument
1214 struct input_dev *input = wacom->input; in wacom_tpc_mt_touch()
1215 unsigned char *data = wacom->data; in wacom_tpc_mt_touch()
1220 bool touch = p && !wacom->shared->stylus_in_proximity; in wacom_tpc_mt_touch()
1235 wacom->shared->touch_down = wacom_wac_finger_count_touches(wacom); in wacom_tpc_mt_touch()
1240 static int wacom_tpc_single_touch(struct wacom_wac *wacom, size_t len) in wacom_tpc_single_touch() argument
1242 unsigned char *data = wacom->data; in wacom_tpc_single_touch()
1243 struct input_dev *input = wacom->input; in wacom_tpc_single_touch()
1244 bool prox = !wacom->shared->stylus_in_proximity; in wacom_tpc_single_touch()
1247 if (wacom->features.touch_max > 1 || len > WACOM_PKGLEN_TPC2FG) in wacom_tpc_single_touch()
1271 wacom->shared->touch_down = prox; in wacom_tpc_single_touch()
1276 static int wacom_tpc_pen(struct wacom_wac *wacom) in wacom_tpc_pen() argument
1278 unsigned char *data = wacom->data; in wacom_tpc_pen()
1279 struct input_dev *input = wacom->input; in wacom_tpc_pen()
1282 if (!wacom->shared->stylus_in_proximity) /* first in prox */ in wacom_tpc_pen()
1284 wacom->tool[0] = (data[1] & 0x0c) ? BTN_TOOL_RUBBER : BTN_TOOL_PEN; in wacom_tpc_pen()
1287 wacom->shared->stylus_in_proximity = prox; in wacom_tpc_pen()
1290 if (!wacom->shared->touch_down) { in wacom_tpc_pen()
1297 input_report_key(input, wacom->tool[0], prox); in wacom_tpc_pen()
1304 static int wacom_tpc_irq(struct wacom_wac *wacom, size_t len) in wacom_tpc_irq() argument
1306 unsigned char *data = wacom->data; in wacom_tpc_irq()
1308 dev_dbg(wacom->input->dev.parent, in wacom_tpc_irq()
1313 return wacom_tpc_single_touch(wacom, len); in wacom_tpc_irq()
1316 return wacom_tpc_mt_touch(wacom); in wacom_tpc_irq()
1319 return wacom_tpc_pen(wacom); in wacom_tpc_irq()
1327 return wacom_tpc_single_touch(wacom, len); in wacom_tpc_irq()
1331 return wacom_mt_touch(wacom); in wacom_tpc_irq()
1334 return wacom_tpc_pen(wacom); in wacom_tpc_irq()
1341 static void wacom_map_usage(struct wacom *wacom, struct hid_usage *usage, in wacom_map_usage() argument
1344 struct wacom_wac *wacom_wac = &wacom->wacom_wac; in wacom_map_usage()
1372 struct wacom *wacom = hid_get_drvdata(hdev); in wacom_wac_pen_usage_mapping() local
1376 wacom_map_usage(wacom, usage, field, EV_ABS, ABS_X, 4); in wacom_wac_pen_usage_mapping()
1379 wacom_map_usage(wacom, usage, field, EV_ABS, ABS_Y, 4); in wacom_wac_pen_usage_mapping()
1382 wacom_map_usage(wacom, usage, field, EV_ABS, ABS_PRESSURE, 0); in wacom_wac_pen_usage_mapping()
1385 wacom_map_usage(wacom, usage, field, EV_KEY, BTN_TOOL_PEN, 0); in wacom_wac_pen_usage_mapping()
1388 wacom_map_usage(wacom, usage, field, EV_KEY, in wacom_wac_pen_usage_mapping()
1393 wacom_map_usage(wacom, usage, field, EV_KEY, BTN_TOUCH, 0); in wacom_wac_pen_usage_mapping()
1396 wacom_map_usage(wacom, usage, field, EV_KEY, BTN_STYLUS, 0); in wacom_wac_pen_usage_mapping()
1399 wacom_map_usage(wacom, usage, field, EV_KEY, BTN_STYLUS2, 0); in wacom_wac_pen_usage_mapping()
1402 wacom_map_usage(wacom, usage, field, EV_MSC, MSC_SERIAL, 0); in wacom_wac_pen_usage_mapping()
1410 struct wacom *wacom = hid_get_drvdata(hdev); in wacom_wac_pen_event() local
1411 struct wacom_wac *wacom_wac = &wacom->wacom_wac; in wacom_wac_pen_event()
1440 struct wacom *wacom = hid_get_drvdata(hdev); in wacom_wac_pen_report() local
1441 struct wacom_wac *wacom_wac = &wacom->wacom_wac; in wacom_wac_pen_report()
1468 struct wacom *wacom = hid_get_drvdata(hdev); in wacom_wac_finger_usage_mapping() local
1469 struct wacom_wac *wacom_wac = &wacom->wacom_wac; in wacom_wac_finger_usage_mapping()
1477 wacom_map_usage(wacom, usage, field, EV_ABS, ABS_X, 4); in wacom_wac_finger_usage_mapping()
1479 wacom_map_usage(wacom, usage, field, EV_ABS, in wacom_wac_finger_usage_mapping()
1485 wacom_map_usage(wacom, usage, field, EV_ABS, ABS_Y, 4); in wacom_wac_finger_usage_mapping()
1487 wacom_map_usage(wacom, usage, field, EV_ABS, in wacom_wac_finger_usage_mapping()
1501 wacom_map_usage(wacom, usage, field, EV_KEY, BTN_TOUCH, 0); in wacom_wac_finger_usage_mapping()
1536 struct wacom *wacom = hid_get_drvdata(hdev); in wacom_wac_finger_event() local
1537 struct wacom_wac *wacom_wac = &wacom->wacom_wac; in wacom_wac_finger_event()
1566 struct wacom *wacom = hid_get_drvdata(hdev); in wacom_wac_finger_report() local
1567 struct wacom_wac *wacom_wac = &wacom->wacom_wac; in wacom_wac_finger_report()
1583 struct wacom *wacom = hid_get_drvdata(hdev); in wacom_wac_usage_mapping() local
1584 struct wacom_wac *wacom_wac = &wacom->wacom_wac; in wacom_wac_usage_mapping()
1600 struct wacom *wacom = hid_get_drvdata(hdev); in wacom_wac_event() local
1602 if (wacom->wacom_wac.features.type != HID_GENERIC) in wacom_wac_event()
1616 struct wacom *wacom = hid_get_drvdata(hdev); in wacom_wac_report() local
1617 struct wacom_wac *wacom_wac = &wacom->wacom_wac; in wacom_wac_report()
1630 static int wacom_bpt_touch(struct wacom_wac *wacom) in wacom_bpt_touch() argument
1632 struct wacom_features *features = &wacom->features; in wacom_bpt_touch()
1633 struct input_dev *input = wacom->input; in wacom_bpt_touch()
1634 struct input_dev *pad_input = wacom->pad_input; in wacom_bpt_touch()
1635 unsigned char *data = wacom->data; in wacom_bpt_touch()
1651 touch = touch && !wacom->shared->stylus_in_proximity; in wacom_bpt_touch()
1673 wacom->shared->touch_down = wacom_wac_finger_count_touches(wacom); in wacom_bpt_touch()
1678 static void wacom_bpt3_touch_msg(struct wacom_wac *wacom, unsigned char *data) in wacom_bpt3_touch_msg() argument
1680 struct wacom_features *features = &wacom->features; in wacom_bpt3_touch_msg()
1681 struct input_dev *input = wacom->input; in wacom_bpt3_touch_msg()
1688 touch = touch && !wacom->shared->stylus_in_proximity; in wacom_bpt3_touch_msg()
1721 static void wacom_bpt3_button_msg(struct wacom_wac *wacom, unsigned char *data) in wacom_bpt3_button_msg() argument
1723 struct input_dev *input = wacom->pad_input; in wacom_bpt3_button_msg()
1724 struct wacom_features *features = &wacom->features; in wacom_bpt3_button_msg()
1737 static int wacom_bpt3_touch(struct wacom_wac *wacom) in wacom_bpt3_touch() argument
1739 struct input_dev *input = wacom->input; in wacom_bpt3_touch()
1740 unsigned char *data = wacom->data; in wacom_bpt3_touch()
1753 wacom_bpt3_touch_msg(wacom, data + offset); in wacom_bpt3_touch()
1755 wacom_bpt3_button_msg(wacom, data + offset); in wacom_bpt3_touch()
1759 wacom->shared->touch_down = wacom_wac_finger_count_touches(wacom); in wacom_bpt3_touch()
1764 static int wacom_bpt_pen(struct wacom_wac *wacom) in wacom_bpt_pen() argument
1766 struct wacom_features *features = &wacom->features; in wacom_bpt_pen()
1767 struct input_dev *input = wacom->input; in wacom_bpt_pen()
1768 unsigned char *data = wacom->data; in wacom_bpt_pen()
1786 if (!wacom->shared->stylus_in_proximity) { in wacom_bpt_pen()
1788 wacom->tool[0] = BTN_TOOL_RUBBER; in wacom_bpt_pen()
1789 wacom->id[0] = ERASER_DEVICE_ID; in wacom_bpt_pen()
1791 wacom->tool[0] = BTN_TOOL_PEN; in wacom_bpt_pen()
1792 wacom->id[0] = STYLUS_DEVICE_ID; in wacom_bpt_pen()
1796 wacom->shared->stylus_in_proximity = prox; in wacom_bpt_pen()
1797 if (wacom->shared->touch_down) in wacom_bpt_pen()
1817 wacom->id[0] = 0; in wacom_bpt_pen()
1829 input_report_key(input, wacom->tool[0], prox); /* PEN or RUBBER */ in wacom_bpt_pen()
1830 input_report_abs(input, ABS_MISC, wacom->id[0]); /* TOOL ID */ in wacom_bpt_pen()
1835 static int wacom_bpt_irq(struct wacom_wac *wacom, size_t len) in wacom_bpt_irq() argument
1838 return wacom_bpt_touch(wacom); in wacom_bpt_irq()
1840 return wacom_bpt3_touch(wacom); in wacom_bpt_irq()
1842 return wacom_bpt_pen(wacom); in wacom_bpt_irq()
1847 static void wacom_bamboo_pad_pen_event(struct wacom_wac *wacom, in wacom_bamboo_pad_pen_event() argument
1867 hid_input_report(wacom->shared->pen, HID_INPUT_REPORT, data, in wacom_bamboo_pad_pen_event()
1873 static int wacom_bamboo_pad_touch_event(struct wacom_wac *wacom, in wacom_bamboo_pad_touch_event() argument
1876 struct input_dev *input = wacom->input; in wacom_bamboo_pad_touch_event()
1884 for (id = 0; id < wacom->features.touch_max; id++) { in wacom_bamboo_pad_touch_event()
1886 !wacom->shared->stylus_in_proximity; in wacom_bamboo_pad_touch_event()
1908 wacom->shared->touch_down = !!prefix && in wacom_bamboo_pad_touch_event()
1909 !wacom->shared->stylus_in_proximity; in wacom_bamboo_pad_touch_event()
1914 static int wacom_bamboo_pad_irq(struct wacom_wac *wacom, size_t len) in wacom_bamboo_pad_irq() argument
1916 unsigned char *data = wacom->data; in wacom_bamboo_pad_irq()
1924 wacom_bamboo_pad_pen_event(wacom, &data[1]); in wacom_bamboo_pad_irq()
1927 return wacom_bamboo_pad_touch_event(wacom, &data[9]); in wacom_bamboo_pad_irq()
1932 static int wacom_wireless_irq(struct wacom_wac *wacom, size_t len) in wacom_wireless_irq() argument
1934 unsigned char *data = wacom->data; in wacom_wireless_irq()
1944 if ((wacom->shared->type == INTUOSHT) && in wacom_wireless_irq()
1945 wacom->shared->touch_input && in wacom_wireless_irq()
1946 wacom->shared->touch_max) { in wacom_wireless_irq()
1947 input_report_switch(wacom->shared->touch_input, in wacom_wireless_irq()
1949 input_sync(wacom->shared->touch_input); in wacom_wireless_irq()
1955 if (wacom->pid != pid) { in wacom_wireless_irq()
1956 wacom->pid = pid; in wacom_wireless_irq()
1957 wacom_schedule_work(wacom); in wacom_wireless_irq()
1960 if (wacom->shared->type) in wacom_wireless_irq()
1961 wacom_notify_battery(wacom, battery, charging, 1, 0); in wacom_wireless_irq()
1963 } else if (wacom->pid != 0) { in wacom_wireless_irq()
1965 wacom->pid = 0; in wacom_wireless_irq()
1966 wacom_schedule_work(wacom); in wacom_wireless_irq()
1967 wacom_notify_battery(wacom, 0, 0, 0, 0); in wacom_wireless_irq()
1975 struct wacom *wacom = container_of(wacom_wac, struct wacom, wacom_wac); in wacom_status_irq() local
1997 if (!wacom->battery && in wacom_status_irq()
2000 INIT_WORK(&wacom->work, wacom_battery_work); in wacom_status_irq()
2005 wacom->battery) { in wacom_status_irq()
2007 INIT_WORK(&wacom->work, wacom_battery_work); in wacom_status_irq()