• Home
  • Raw
  • Download

Lines Matching +full:button +full:- +full:392

4  * Copyright (C) 2007-2009 Arjan Opmeer <arjan@opmeer.net>
30 if (etd->info.debug) \
41 if (ps2_sliced_command(&psmouse->ps2dev, c) || in synaptics_send_cmd()
42 ps2_command(&psmouse->ps2dev, param, PSMOUSE_CMD_GETINFO)) { in synaptics_send_cmd()
44 return -1; in synaptics_send_cmd()
56 struct ps2dev *ps2dev = &psmouse->ps2dev; in elantech_send_cmd()
62 return -1; in elantech_send_cmd()
74 struct ps2dev *ps2dev = &psmouse->ps2dev; in elantech_ps2_command()
75 struct elantech_data *etd = psmouse->private; in elantech_ps2_command()
83 tries--; in elantech_ps2_command()
101 struct elantech_data *etd = psmouse->private; in elantech_read_reg()
106 return -1; in elantech_read_reg()
109 return -1; in elantech_read_reg()
111 switch (etd->info.hw_version) { in elantech_read_reg()
113 if (ps2_sliced_command(&psmouse->ps2dev, ETP_REGISTER_READ) || in elantech_read_reg()
114 ps2_sliced_command(&psmouse->ps2dev, reg) || in elantech_read_reg()
115 ps2_command(&psmouse->ps2dev, param, PSMOUSE_CMD_GETINFO)) { in elantech_read_reg()
116 rc = -1; in elantech_read_reg()
126 rc = -1; in elantech_read_reg()
136 rc = -1; in elantech_read_reg()
143 else if (etd->info.hw_version != 4) in elantech_read_reg()
157 struct elantech_data *etd = psmouse->private; in elantech_write_reg()
161 return -1; in elantech_write_reg()
164 return -1; in elantech_write_reg()
166 switch (etd->info.hw_version) { in elantech_write_reg()
168 if (ps2_sliced_command(&psmouse->ps2dev, ETP_REGISTER_WRITE) || in elantech_write_reg()
169 ps2_sliced_command(&psmouse->ps2dev, reg) || in elantech_write_reg()
170 ps2_sliced_command(&psmouse->ps2dev, val) || in elantech_write_reg()
171 ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_SETSCALE11)) { in elantech_write_reg()
172 rc = -1; in elantech_write_reg()
184 rc = -1; in elantech_write_reg()
196 rc = -1; in elantech_write_reg()
210 rc = -1; in elantech_write_reg()
229 psmouse->pktsize, psmouse->packet); in elantech_packet_dump()
238 struct input_dev *dev = psmouse->dev; in elantech_report_absolute_v1()
239 struct elantech_data *etd = psmouse->private; in elantech_report_absolute_v1()
240 unsigned char *packet = psmouse->packet; in elantech_report_absolute_v1()
243 if (etd->info.fw_version < 0x020000) { in elantech_report_absolute_v1()
258 if (etd->info.jumpy_cursor) { in elantech_report_absolute_v1()
260 etd->single_finger_reports = 0; in elantech_report_absolute_v1()
261 } else if (etd->single_finger_reports < 2) { in elantech_report_absolute_v1()
263 etd->single_finger_reports++; in elantech_report_absolute_v1()
279 etd->y_max - (((packet[1] & 0x03) << 8) | packet[3])); in elantech_report_absolute_v1()
288 if (etd->info.fw_version < 0x020000 && in elantech_report_absolute_v1()
289 (etd->info.capabilities[0] & ETP_CAP_HAS_ROCKER)) { in elantech_report_absolute_v1()
326 struct elantech_data *etd = psmouse->private; in elantech_report_absolute_v2()
327 struct input_dev *dev = psmouse->dev; in elantech_report_absolute_v2()
328 unsigned char *packet = psmouse->packet; in elantech_report_absolute_v2()
354 y1 = etd->y_max - (((packet[4] & 0x0f) << 8) | packet[5]); in elantech_report_absolute_v2()
369 y1 = etd->y_max - in elantech_report_absolute_v2()
377 y2 = etd->y_max - in elantech_report_absolute_v2()
397 if (etd->info.reports_pressure) { in elantech_report_absolute_v2()
423 struct elantech_data *etd = psmouse->private; in elantech_report_trackpoint()
424 struct input_dev *tp_dev = etd->tp_dev; in elantech_report_trackpoint()
425 unsigned char *packet = psmouse->packet; in elantech_report_trackpoint()
436 x = packet[4] - (int)((packet[1]^0x80) << 1); in elantech_report_trackpoint()
437 y = (int)((packet[2]^0x80) << 1) - packet[5]; in elantech_report_trackpoint()
450 if (etd->info.debug == 1) in elantech_report_trackpoint()
464 struct input_dev *dev = psmouse->dev; in elantech_report_absolute_v3()
465 struct elantech_data *etd = psmouse->private; in elantech_report_absolute_v3()
466 unsigned char *packet = psmouse->packet; in elantech_report_absolute_v3()
485 y1 = etd->y_max - (((packet[4] & 0x0f) << 8) | packet[5]); in elantech_report_absolute_v3()
494 etd->mt[0].x = ((packet[1] & 0x0f) << 8) | packet[2]; in elantech_report_absolute_v3()
499 etd->mt[0].y = etd->y_max - in elantech_report_absolute_v3()
508 x1 = etd->mt[0].x; in elantech_report_absolute_v3()
509 y1 = etd->mt[0].y; in elantech_report_absolute_v3()
511 y2 = etd->y_max - (((packet[4] & 0x0f) << 8) | packet[5]); in elantech_report_absolute_v3()
529 if (etd->info.fw_version & 0x001000) in elantech_report_absolute_v3()
542 struct input_dev *dev = psmouse->dev; in elantech_input_sync_v4()
543 struct elantech_data *etd = psmouse->private; in elantech_input_sync_v4()
544 unsigned char *packet = psmouse->packet; in elantech_input_sync_v4()
547 if (etd->info.fw_version & 0x001000) in elantech_input_sync_v4()
558 struct input_dev *dev = psmouse->dev; in process_packet_status_v4()
559 unsigned char *packet = psmouse->packet; in process_packet_status_v4()
577 struct input_dev *dev = psmouse->dev; in process_packet_head_v4()
578 struct elantech_data *etd = psmouse->private; in process_packet_head_v4()
579 unsigned char *packet = psmouse->packet; in process_packet_head_v4()
580 int id = ((packet[3] & 0xe0) >> 5) - 1; in process_packet_head_v4()
586 etd->mt[id].x = ((packet[1] & 0x0f) << 8) | packet[2]; in process_packet_head_v4()
587 etd->mt[id].y = etd->y_max - (((packet[4] & 0x0f) << 8) | packet[5]); in process_packet_head_v4()
594 input_report_abs(dev, ABS_MT_POSITION_X, etd->mt[id].x); in process_packet_head_v4()
595 input_report_abs(dev, ABS_MT_POSITION_Y, etd->mt[id].y); in process_packet_head_v4()
597 input_report_abs(dev, ABS_MT_TOUCH_MAJOR, traces * etd->width); in process_packet_head_v4()
606 struct input_dev *dev = psmouse->dev; in process_packet_motion_v4()
607 struct elantech_data *etd = psmouse->private; in process_packet_motion_v4()
608 unsigned char *packet = psmouse->packet; in process_packet_motion_v4()
612 id = ((packet[0] & 0xe0) >> 5) - 1; in process_packet_motion_v4()
616 sid = ((packet[3] & 0xe0) >> 5) - 1; in process_packet_motion_v4()
628 etd->mt[id].x += delta_x1 * weight; in process_packet_motion_v4()
629 etd->mt[id].y -= delta_y1 * weight; in process_packet_motion_v4()
631 input_report_abs(dev, ABS_MT_POSITION_X, etd->mt[id].x); in process_packet_motion_v4()
632 input_report_abs(dev, ABS_MT_POSITION_Y, etd->mt[id].y); in process_packet_motion_v4()
635 etd->mt[sid].x += delta_x2 * weight; in process_packet_motion_v4()
636 etd->mt[sid].y -= delta_y2 * weight; in process_packet_motion_v4()
638 input_report_abs(dev, ABS_MT_POSITION_X, etd->mt[sid].x); in process_packet_motion_v4()
639 input_report_abs(dev, ABS_MT_POSITION_Y, etd->mt[sid].y); in process_packet_motion_v4()
670 struct elantech_data *etd = psmouse->private; in elantech_packet_check_v1()
671 unsigned char *packet = psmouse->packet; in elantech_packet_check_v1()
675 if (etd->info.fw_version < 0x020000) { in elantech_packet_check_v1()
687 return etd->parity[packet[1]] == p1 && in elantech_packet_check_v1()
688 etd->parity[packet[2]] == p2 && in elantech_packet_check_v1()
689 etd->parity[packet[3]] == p3; in elantech_packet_check_v1()
701 unsigned char *packet = psmouse->packet; in elantech_debounce_check_v2()
708 struct elantech_data *etd = psmouse->private; in elantech_packet_check_v2()
709 unsigned char *packet = psmouse->packet; in elantech_packet_check_v2()
720 if (etd->info.reports_pressure) in elantech_packet_check_v2()
740 struct elantech_data *etd = psmouse->private; in elantech_packet_check_v3()
744 unsigned char *packet = psmouse->packet; in elantech_packet_check_v3()
757 if (etd->info.crc_enabled) { in elantech_packet_check_v3()
778 struct elantech_data *etd = psmouse->private; in elantech_packet_check_v4()
779 unsigned char *packet = psmouse->packet; in elantech_packet_check_v4()
784 if (etd->tp_dev && (packet[3] & 0x0f) == 0x06) in elantech_packet_check_v4()
788 ic_version = (etd->info.fw_version & 0x0f0000) >> 16; in elantech_packet_check_v4()
797 if (etd->info.crc_enabled) in elantech_packet_check_v4()
799 else if (ic_version == 7 && etd->info.samples[1] == 0x2A) in elantech_packet_check_v4()
827 struct elantech_data *etd = psmouse->private; in elantech_process_byte()
830 if (psmouse->pktcnt < psmouse->pktsize) in elantech_process_byte()
833 if (etd->info.debug > 1) in elantech_process_byte()
836 switch (etd->info.hw_version) { in elantech_process_byte()
838 if (etd->info.paritycheck && !elantech_packet_check_v1(psmouse)) in elantech_process_byte()
849 if (etd->info.paritycheck && !elantech_packet_check_v2(psmouse)) in elantech_process_byte()
905 struct elantech_data *etd = psmouse->private; in elantech_set_rate_restore_reg_07()
907 etd->original_set_rate(psmouse, rate); in elantech_set_rate_restore_reg_07()
908 if (elantech_write_reg(psmouse, 0x07, etd->reg_07)) in elantech_set_rate_restore_reg_07()
917 struct elantech_data *etd = psmouse->private; in elantech_set_absolute_mode()
922 switch (etd->info.hw_version) { in elantech_set_absolute_mode()
924 etd->reg_10 = 0x16; in elantech_set_absolute_mode()
925 etd->reg_11 = 0x8f; in elantech_set_absolute_mode()
926 if (elantech_write_reg(psmouse, 0x10, etd->reg_10) || in elantech_set_absolute_mode()
927 elantech_write_reg(psmouse, 0x11, etd->reg_11)) { in elantech_set_absolute_mode()
928 rc = -1; in elantech_set_absolute_mode()
934 etd->reg_10 = 0x54; in elantech_set_absolute_mode()
935 etd->reg_11 = 0x88; /* 0x8a */ in elantech_set_absolute_mode()
936 etd->reg_21 = 0x60; /* 0x00 */ in elantech_set_absolute_mode()
937 if (elantech_write_reg(psmouse, 0x10, etd->reg_10) || in elantech_set_absolute_mode()
938 elantech_write_reg(psmouse, 0x11, etd->reg_11) || in elantech_set_absolute_mode()
939 elantech_write_reg(psmouse, 0x21, etd->reg_21)) { in elantech_set_absolute_mode()
940 rc = -1; in elantech_set_absolute_mode()
945 if (etd->info.set_hw_resolution) in elantech_set_absolute_mode()
946 etd->reg_10 = 0x0b; in elantech_set_absolute_mode()
948 etd->reg_10 = 0x01; in elantech_set_absolute_mode()
950 if (elantech_write_reg(psmouse, 0x10, etd->reg_10)) in elantech_set_absolute_mode()
951 rc = -1; in elantech_set_absolute_mode()
956 etd->reg_07 = 0x01; in elantech_set_absolute_mode()
957 if (elantech_write_reg(psmouse, 0x07, etd->reg_07)) in elantech_set_absolute_mode()
958 rc = -1; in elantech_set_absolute_mode()
974 tries--; in elantech_set_absolute_mode()
982 } else if (etd->info.hw_version == 1 && in elantech_set_absolute_mode()
986 rc = -1; in elantech_set_absolute_mode()
1002 struct elantech_data *etd = psmouse->private; in elantech_set_range()
1003 struct elantech_device_info *info = &etd->info; in elantech_set_range()
1007 switch (info->hw_version) { in elantech_set_range()
1016 if (info->fw_version == 0x020800 || in elantech_set_range()
1017 info->fw_version == 0x020b00 || in elantech_set_range()
1018 info->fw_version == 0x020030) { in elantech_set_range()
1027 i = (info->fw_version > 0x020800 && in elantech_set_range()
1028 info->fw_version < 0x020900) ? 1 : 2; in elantech_set_range()
1030 if (info->send_cmd(psmouse, ETP_FW_ID_QUERY, param)) in elantech_set_range()
1031 return -1; in elantech_set_range()
1035 if (((info->fw_version >> 16) == 0x14) && fixed_dpi) { in elantech_set_range()
1036 if (info->send_cmd(psmouse, ETP_SAMPLE_QUERY, param)) in elantech_set_range()
1037 return -1; in elantech_set_range()
1039 *x_max = (info->capabilities[1] - i) * param[1] / 2; in elantech_set_range()
1040 *y_max = (info->capabilities[2] - i) * param[2] / 2; in elantech_set_range()
1041 } else if (info->fw_version == 0x040216) { in elantech_set_range()
1044 } else if (info->fw_version == 0x040219 || info->fw_version == 0x040215) { in elantech_set_range()
1048 *x_max = (info->capabilities[1] - i) * 64; in elantech_set_range()
1049 *y_max = (info->capabilities[2] - i) * 64; in elantech_set_range()
1055 if (info->send_cmd(psmouse, ETP_FW_ID_QUERY, param)) in elantech_set_range()
1056 return -1; in elantech_set_range()
1063 if (info->send_cmd(psmouse, ETP_FW_ID_QUERY, param)) in elantech_set_range()
1064 return -1; in elantech_set_range()
1068 traces = info->capabilities[1]; in elantech_set_range()
1070 return -1; in elantech_set_range()
1072 *width = *x_max / (traces - 1); in elantech_set_range()
1096 return -1; in elantech_get_resolution_v4()
1109 * Laptop-model: fw_version: caps: buttons:
1111 * Acer S7-392 0x581f01 50, 17, 0d clickpad
1112 * Acer V5-131 0x461f02 01, 16, 0c clickpad
1113 * Acer V5-551 0x461f00 ? clickpad
1121 * Avatar AVIU-145A2 0x361f00 ? clickpad
1137 * Samsung NP900X3E-A02 0x575f03 ? clickpad
1138 * Samsung NP-QX410 0x851b00 19, 14, 0c clickpad
1148 struct input_dev *dev = psmouse->dev; in elantech_set_buttonpad_prop()
1149 struct elantech_data *etd = psmouse->private; in elantech_set_buttonpad_prop()
1151 if (etd->info.fw_version & 0x001000) { in elantech_set_buttonpad_prop()
1152 __set_bit(INPUT_PROP_BUTTONPAD, dev->propbit); in elantech_set_buttonpad_prop()
1153 __clear_bit(BTN_RIGHT, dev->keybit); in elantech_set_buttonpad_prop()
1158 * Some hw_version 4 models do have a middle button
1163 /* Fujitsu H730 has a middle button */
1170 /* Fujitsu H760 also has a middle button */
1177 /* Fujitsu H780 also has a middle button */
1202 struct input_dev *dev = psmouse->dev; in elantech_set_input_params()
1203 struct elantech_data *etd = psmouse->private; in elantech_set_input_params()
1204 struct elantech_device_info *info = &etd->info; in elantech_set_input_params()
1208 return -1; in elantech_set_input_params()
1210 __set_bit(INPUT_PROP_POINTER, dev->propbit); in elantech_set_input_params()
1211 __set_bit(EV_KEY, dev->evbit); in elantech_set_input_params()
1212 __set_bit(EV_ABS, dev->evbit); in elantech_set_input_params()
1213 __clear_bit(EV_REL, dev->evbit); in elantech_set_input_params()
1215 __set_bit(BTN_LEFT, dev->keybit); in elantech_set_input_params()
1218 __set_bit(BTN_MIDDLE, dev->keybit); in elantech_set_input_params()
1219 __set_bit(BTN_RIGHT, dev->keybit); in elantech_set_input_params()
1221 __set_bit(BTN_TOUCH, dev->keybit); in elantech_set_input_params()
1222 __set_bit(BTN_TOOL_FINGER, dev->keybit); in elantech_set_input_params()
1223 __set_bit(BTN_TOOL_DOUBLETAP, dev->keybit); in elantech_set_input_params()
1224 __set_bit(BTN_TOOL_TRIPLETAP, dev->keybit); in elantech_set_input_params()
1226 switch (info->hw_version) { in elantech_set_input_params()
1228 /* Rocker button */ in elantech_set_input_params()
1229 if (info->fw_version < 0x020000 && in elantech_set_input_params()
1230 (info->capabilities[0] & ETP_CAP_HAS_ROCKER)) { in elantech_set_input_params()
1231 __set_bit(BTN_FORWARD, dev->keybit); in elantech_set_input_params()
1232 __set_bit(BTN_BACK, dev->keybit); in elantech_set_input_params()
1239 __set_bit(BTN_TOOL_QUADTAP, dev->keybit); in elantech_set_input_params()
1240 __set_bit(INPUT_PROP_SEMI_MT, dev->propbit); in elantech_set_input_params()
1243 if (info->hw_version == 3) in elantech_set_input_params()
1247 if (info->reports_pressure) { in elantech_set_input_params()
1260 __set_bit(BTN_TOOL_QUADTAP, dev->keybit); in elantech_set_input_params()
1280 * convert to surface unit as Protocol-B requires. in elantech_set_input_params()
1287 input_abs_set_res(dev, ABS_X, info->x_res); in elantech_set_input_params()
1288 input_abs_set_res(dev, ABS_Y, info->y_res); in elantech_set_input_params()
1289 if (info->hw_version > 1) { in elantech_set_input_params()
1290 input_abs_set_res(dev, ABS_MT_POSITION_X, info->x_res); in elantech_set_input_params()
1291 input_abs_set_res(dev, ABS_MT_POSITION_Y, info->y_res); in elantech_set_input_params()
1294 etd->y_max = y_max; in elantech_set_input_params()
1295 etd->width = width; in elantech_set_input_params()
1311 struct elantech_data *etd = psmouse->private; in elantech_show_int_attr()
1313 unsigned char *reg = (unsigned char *) etd + attr->field_offset; in elantech_show_int_attr()
1316 if (attr->reg) in elantech_show_int_attr()
1317 rc = elantech_read_reg(psmouse, attr->reg, reg); in elantech_show_int_attr()
1319 return sprintf(buf, "0x%02x\n", (attr->reg && rc) ? -1 : *reg); in elantech_show_int_attr()
1328 struct elantech_data *etd = psmouse->private; in elantech_set_int_attr()
1330 unsigned char *reg = (unsigned char *) etd + attr->field_offset; in elantech_set_int_attr()
1339 if (etd->info.hw_version == 1) { in elantech_set_int_attr()
1340 if (attr->reg == 0x10) in elantech_set_int_attr()
1343 else if (attr->reg == 0x11) in elantech_set_int_attr()
1348 if (!attr->reg || elantech_write_reg(psmouse, attr->reg, value) == 0) in elantech_set_int_attr()
1441 struct ps2dev *ps2dev = &psmouse->ps2dev; in elantech_detect()
1452 return -1; in elantech_detect()
1464 return -1; in elantech_detect()
1469 * value to avoid mis-detection. Logitech mice are known to respond in elantech_detect()
1474 return -1; in elantech_detect()
1484 return -1; in elantech_detect()
1488 psmouse->vendor = "Elantech"; in elantech_detect()
1489 psmouse->name = "Touchpad"; in elantech_detect()
1500 struct elantech_data *etd = psmouse->private; in elantech_disconnect()
1508 if (etd->tp_dev) in elantech_disconnect()
1509 input_unregister_device(etd->tp_dev); in elantech_disconnect()
1510 sysfs_remove_group(&psmouse->ps2dev.serio->dev.kobj, in elantech_disconnect()
1512 kfree(psmouse->private); in elantech_disconnect()
1513 psmouse->private = NULL; in elantech_disconnect()
1524 return -1; in elantech_reconnect()
1529 return -1; in elantech_reconnect()
1630 int ver = (info->fw_version & 0x0f0000) >> 16; in elantech_set_properties()
1633 if (info->fw_version < 0x020030 || info->fw_version == 0x020600) in elantech_set_properties()
1634 info->hw_version = 1; in elantech_set_properties()
1639 info->hw_version = 2; in elantech_set_properties()
1642 info->hw_version = 3; in elantech_set_properties()
1645 info->hw_version = 4; in elantech_set_properties()
1648 return -1; in elantech_set_properties()
1653 info->send_cmd = info->hw_version >= 3 ? elantech_send_cmd : in elantech_set_properties()
1657 info->paritycheck = 1; in elantech_set_properties()
1664 info->jumpy_cursor = in elantech_set_properties()
1665 (info->fw_version == 0x020022 || info->fw_version == 0x020600); in elantech_set_properties()
1667 if (info->hw_version > 1) { in elantech_set_properties()
1669 info->debug = 1; in elantech_set_properties()
1671 if (info->fw_version >= 0x020800) in elantech_set_properties()
1672 info->reports_pressure = true; in elantech_set_properties()
1679 info->crc_enabled = (info->fw_version & 0x4000) == 0x4000 || in elantech_set_properties()
1683 info->set_hw_resolution = !dmi_check_system(no_hw_res_dmi_table); in elantech_set_properties()
1700 return -EINVAL; in elantech_query_info()
1702 info->fw_version = (param[0] << 16) | (param[1] << 8) | param[2]; in elantech_query_info()
1706 return -EINVAL; in elantech_query_info()
1710 info->hw_version, param[0], param[1], param[2]); in elantech_query_info()
1712 if (info->send_cmd(psmouse, ETP_CAPABILITIES_QUERY, in elantech_query_info()
1713 info->capabilities)) { in elantech_query_info()
1715 return -EINVAL; in elantech_query_info()
1719 info->capabilities[0], info->capabilities[1], in elantech_query_info()
1720 info->capabilities[2]); in elantech_query_info()
1722 if (info->hw_version != 1) { in elantech_query_info()
1723 if (info->send_cmd(psmouse, ETP_SAMPLE_QUERY, info->samples)) { in elantech_query_info()
1725 return -EINVAL; in elantech_query_info()
1729 info->samples[0], in elantech_query_info()
1730 info->samples[1], in elantech_query_info()
1731 info->samples[2]); in elantech_query_info()
1734 if (info->samples[1] == 0x74 && info->hw_version == 0x03) { in elantech_query_info()
1742 return -ENODEV; in elantech_query_info()
1746 info->has_trackpoint = (info->capabilities[0] & 0x80) == 0x80; in elantech_query_info()
1748 info->x_res = 31; in elantech_query_info()
1749 info->y_res = 31; in elantech_query_info()
1750 if (info->hw_version == 4) { in elantech_query_info()
1752 &info->x_res, in elantech_query_info()
1753 &info->y_res, in elantech_query_info()
1754 &info->bus)) { in elantech_query_info()
1771 ELANTECH_SMBUS_NOT_SET = -1,
1806 if (info->has_trackpoint) in elantech_create_smbus()
1814 * elantech_setup_smbus - called once the PS/2 devices are enumerated
1824 return -ENXIO; in elantech_setup_smbus()
1832 if (!ETP_NEW_IC_SMBUS_HOST_NOTIFY(info->fw_version) || in elantech_setup_smbus()
1834 return -ENXIO; in elantech_setup_smbus()
1841 if (error == -EAGAIN) in elantech_setup_smbus()
1855 if (ETP_NEW_IC_SMBUS_HOST_NOTIFY(info->fw_version)) in elantech_use_host_notify()
1858 switch (info->bus) { in elantech_use_host_notify()
1863 /* fall-through */ in elantech_use_host_notify()
1868 /* fall-through */ in elantech_use_host_notify()
1874 info->bus); in elantech_use_host_notify()
1883 int error = -EINVAL; in elantech_init_smbus()
1892 error = -ENXIO; in elantech_init_smbus()
1911 int error = -EINVAL; in elantech_setup_ps2()
1914 psmouse->private = etd = kzalloc(sizeof(*etd), GFP_KERNEL); in elantech_setup_ps2()
1916 return -ENOMEM; in elantech_setup_ps2()
1918 etd->info = *info; in elantech_setup_ps2()
1920 etd->parity[0] = 1; in elantech_setup_ps2()
1922 etd->parity[i] = etd->parity[i & (i - 1)] ^ 1; in elantech_setup_ps2()
1930 if (info->fw_version == 0x381f17) { in elantech_setup_ps2()
1931 etd->original_set_rate = psmouse->set_rate; in elantech_setup_ps2()
1932 psmouse->set_rate = elantech_set_rate_restore_reg_07; in elantech_setup_ps2()
1940 error = sysfs_create_group(&psmouse->ps2dev.serio->dev.kobj, in elantech_setup_ps2()
1949 if (info->has_trackpoint) { in elantech_setup_ps2()
1953 error = -ENOMEM; in elantech_setup_ps2()
1957 etd->tp_dev = tp_dev; in elantech_setup_ps2()
1958 snprintf(etd->tp_phys, sizeof(etd->tp_phys), "%s/input1", in elantech_setup_ps2()
1959 psmouse->ps2dev.serio->phys); in elantech_setup_ps2()
1960 tp_dev->phys = etd->tp_phys; in elantech_setup_ps2()
1961 tp_dev->name = "ETPS/2 Elantech TrackPoint"; in elantech_setup_ps2()
1962 tp_dev->id.bustype = BUS_I8042; in elantech_setup_ps2()
1963 tp_dev->id.vendor = 0x0002; in elantech_setup_ps2()
1964 tp_dev->id.product = PSMOUSE_ELANTECH; in elantech_setup_ps2()
1965 tp_dev->id.version = 0x0000; in elantech_setup_ps2()
1966 tp_dev->dev.parent = &psmouse->ps2dev.serio->dev; in elantech_setup_ps2()
1967 tp_dev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_REL); in elantech_setup_ps2()
1968 tp_dev->relbit[BIT_WORD(REL_X)] = in elantech_setup_ps2()
1970 tp_dev->keybit[BIT_WORD(BTN_LEFT)] = in elantech_setup_ps2()
1974 __set_bit(INPUT_PROP_POINTER, tp_dev->propbit); in elantech_setup_ps2()
1975 __set_bit(INPUT_PROP_POINTING_STICK, tp_dev->propbit); in elantech_setup_ps2()
1977 error = input_register_device(etd->tp_dev); in elantech_setup_ps2()
1982 psmouse->protocol_handler = elantech_process_byte; in elantech_setup_ps2()
1983 psmouse->disconnect = elantech_disconnect; in elantech_setup_ps2()
1984 psmouse->reconnect = elantech_reconnect; in elantech_setup_ps2()
1985 psmouse->pktsize = info->hw_version > 1 ? 6 : 4; in elantech_setup_ps2()
1991 sysfs_remove_group(&psmouse->ps2dev.serio->dev.kobj, in elantech_setup_ps2()
2001 int error = -EINVAL; in elantech_init_ps2()
2022 int error = -EINVAL; in elantech_init()