Lines Matching refs:psmouse

28 			psmouse_printk(KERN_DEBUG, psmouse,		\
35 static int synaptics_send_cmd(struct psmouse *psmouse, unsigned char c, in synaptics_send_cmd() argument
38 if (psmouse_sliced_command(psmouse, c) || in synaptics_send_cmd()
39 ps2_command(&psmouse->ps2dev, param, PSMOUSE_CMD_GETINFO)) { in synaptics_send_cmd()
40 psmouse_err(psmouse, "%s query 0x%02x failed.\n", __func__, c); in synaptics_send_cmd()
50 static int elantech_send_cmd(struct psmouse *psmouse, unsigned char c, in elantech_send_cmd() argument
53 struct ps2dev *ps2dev = &psmouse->ps2dev; in elantech_send_cmd()
58 psmouse_err(psmouse, "%s query 0x%02x failed.\n", __func__, c); in elantech_send_cmd()
68 static int elantech_ps2_command(struct psmouse *psmouse, in elantech_ps2_command() argument
71 struct ps2dev *ps2dev = &psmouse->ps2dev; in elantech_ps2_command()
72 struct elantech_data *etd = psmouse->private; in elantech_ps2_command()
87 psmouse_err(psmouse, "ps2 command 0x%02x failed.\n", command); in elantech_ps2_command()
95 static int elantech_read_reg(struct psmouse *psmouse, unsigned char reg, in elantech_read_reg() argument
98 struct elantech_data *etd = psmouse->private; in elantech_read_reg()
110 if (psmouse_sliced_command(psmouse, ETP_REGISTER_READ) || in elantech_read_reg()
111 psmouse_sliced_command(psmouse, reg) || in elantech_read_reg()
112 ps2_command(&psmouse->ps2dev, param, PSMOUSE_CMD_GETINFO)) { in elantech_read_reg()
118 if (elantech_ps2_command(psmouse, NULL, ETP_PS2_CUSTOM_COMMAND) || in elantech_read_reg()
119 elantech_ps2_command(psmouse, NULL, ETP_REGISTER_READ) || in elantech_read_reg()
120 elantech_ps2_command(psmouse, NULL, ETP_PS2_CUSTOM_COMMAND) || in elantech_read_reg()
121 elantech_ps2_command(psmouse, NULL, reg) || in elantech_read_reg()
122 elantech_ps2_command(psmouse, param, PSMOUSE_CMD_GETINFO)) { in elantech_read_reg()
128 if (elantech_ps2_command(psmouse, NULL, ETP_PS2_CUSTOM_COMMAND) || in elantech_read_reg()
129 elantech_ps2_command(psmouse, NULL, ETP_REGISTER_READWRITE) || in elantech_read_reg()
130 elantech_ps2_command(psmouse, NULL, ETP_PS2_CUSTOM_COMMAND) || in elantech_read_reg()
131 elantech_ps2_command(psmouse, NULL, reg) || in elantech_read_reg()
132 elantech_ps2_command(psmouse, param, PSMOUSE_CMD_GETINFO)) { in elantech_read_reg()
139 psmouse_err(psmouse, "failed to read register 0x%02x.\n", reg); in elantech_read_reg()
151 static int elantech_write_reg(struct psmouse *psmouse, unsigned char reg, in elantech_write_reg() argument
154 struct elantech_data *etd = psmouse->private; in elantech_write_reg()
165 if (psmouse_sliced_command(psmouse, ETP_REGISTER_WRITE) || in elantech_write_reg()
166 psmouse_sliced_command(psmouse, reg) || in elantech_write_reg()
167 psmouse_sliced_command(psmouse, val) || in elantech_write_reg()
168 ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_SETSCALE11)) { in elantech_write_reg()
174 if (elantech_ps2_command(psmouse, NULL, ETP_PS2_CUSTOM_COMMAND) || in elantech_write_reg()
175 elantech_ps2_command(psmouse, NULL, ETP_REGISTER_WRITE) || in elantech_write_reg()
176 elantech_ps2_command(psmouse, NULL, ETP_PS2_CUSTOM_COMMAND) || in elantech_write_reg()
177 elantech_ps2_command(psmouse, NULL, reg) || in elantech_write_reg()
178 elantech_ps2_command(psmouse, NULL, ETP_PS2_CUSTOM_COMMAND) || in elantech_write_reg()
179 elantech_ps2_command(psmouse, NULL, val) || in elantech_write_reg()
180 elantech_ps2_command(psmouse, NULL, PSMOUSE_CMD_SETSCALE11)) { in elantech_write_reg()
186 if (elantech_ps2_command(psmouse, NULL, ETP_PS2_CUSTOM_COMMAND) || in elantech_write_reg()
187 elantech_ps2_command(psmouse, NULL, ETP_REGISTER_READWRITE) || in elantech_write_reg()
188 elantech_ps2_command(psmouse, NULL, ETP_PS2_CUSTOM_COMMAND) || in elantech_write_reg()
189 elantech_ps2_command(psmouse, NULL, reg) || in elantech_write_reg()
190 elantech_ps2_command(psmouse, NULL, ETP_PS2_CUSTOM_COMMAND) || in elantech_write_reg()
191 elantech_ps2_command(psmouse, NULL, val) || in elantech_write_reg()
192 elantech_ps2_command(psmouse, NULL, PSMOUSE_CMD_SETSCALE11)) { in elantech_write_reg()
198 if (elantech_ps2_command(psmouse, NULL, ETP_PS2_CUSTOM_COMMAND) || in elantech_write_reg()
199 elantech_ps2_command(psmouse, NULL, ETP_REGISTER_READWRITE) || in elantech_write_reg()
200 elantech_ps2_command(psmouse, NULL, ETP_PS2_CUSTOM_COMMAND) || in elantech_write_reg()
201 elantech_ps2_command(psmouse, NULL, reg) || in elantech_write_reg()
202 elantech_ps2_command(psmouse, NULL, ETP_PS2_CUSTOM_COMMAND) || in elantech_write_reg()
203 elantech_ps2_command(psmouse, NULL, ETP_REGISTER_READWRITE) || in elantech_write_reg()
204 elantech_ps2_command(psmouse, NULL, ETP_PS2_CUSTOM_COMMAND) || in elantech_write_reg()
205 elantech_ps2_command(psmouse, NULL, val) || in elantech_write_reg()
206 elantech_ps2_command(psmouse, NULL, PSMOUSE_CMD_SETSCALE11)) { in elantech_write_reg()
213 psmouse_err(psmouse, in elantech_write_reg()
223 static void elantech_packet_dump(struct psmouse *psmouse) in elantech_packet_dump() argument
227 psmouse_printk(KERN_DEBUG, psmouse, "PS/2 packet ["); in elantech_packet_dump()
228 for (i = 0; i < psmouse->pktsize; i++) in elantech_packet_dump()
229 printk("%s0x%02x ", i ? ", " : " ", psmouse->packet[i]); in elantech_packet_dump()
237 static void elantech_report_absolute_v1(struct psmouse *psmouse) in elantech_report_absolute_v1() argument
239 struct input_dev *dev = psmouse->dev; in elantech_report_absolute_v1()
240 struct elantech_data *etd = psmouse->private; in elantech_report_absolute_v1()
241 unsigned char *packet = psmouse->packet; in elantech_report_absolute_v1()
325 static void elantech_report_absolute_v2(struct psmouse *psmouse) in elantech_report_absolute_v2() argument
327 struct elantech_data *etd = psmouse->private; in elantech_report_absolute_v2()
328 struct input_dev *dev = psmouse->dev; in elantech_report_absolute_v2()
329 unsigned char *packet = psmouse->packet; in elantech_report_absolute_v2()
407 static void elantech_report_trackpoint(struct psmouse *psmouse, in elantech_report_trackpoint() argument
425 struct elantech_data *etd = psmouse->private; in elantech_report_trackpoint()
427 unsigned char *packet = psmouse->packet; in elantech_report_trackpoint()
455 elantech_packet_dump(psmouse); in elantech_report_trackpoint()
465 static void elantech_report_absolute_v3(struct psmouse *psmouse, in elantech_report_absolute_v3() argument
468 struct input_dev *dev = psmouse->dev; in elantech_report_absolute_v3()
469 struct elantech_data *etd = psmouse->private; in elantech_report_absolute_v3()
470 unsigned char *packet = psmouse->packet; in elantech_report_absolute_v3()
546 static void elantech_input_sync_v4(struct psmouse *psmouse) in elantech_input_sync_v4() argument
548 struct input_dev *dev = psmouse->dev; in elantech_input_sync_v4()
549 struct elantech_data *etd = psmouse->private; in elantech_input_sync_v4()
550 unsigned char *packet = psmouse->packet; in elantech_input_sync_v4()
565 static void process_packet_status_v4(struct psmouse *psmouse) in process_packet_status_v4() argument
567 struct input_dev *dev = psmouse->dev; in process_packet_status_v4()
568 unsigned char *packet = psmouse->packet; in process_packet_status_v4()
581 elantech_input_sync_v4(psmouse); in process_packet_status_v4()
584 static void process_packet_head_v4(struct psmouse *psmouse) in process_packet_head_v4() argument
586 struct input_dev *dev = psmouse->dev; in process_packet_head_v4()
587 struct elantech_data *etd = psmouse->private; in process_packet_head_v4()
588 unsigned char *packet = psmouse->packet; in process_packet_head_v4()
610 elantech_input_sync_v4(psmouse); in process_packet_head_v4()
613 static void process_packet_motion_v4(struct psmouse *psmouse) in process_packet_motion_v4() argument
615 struct input_dev *dev = psmouse->dev; in process_packet_motion_v4()
616 struct elantech_data *etd = psmouse->private; in process_packet_motion_v4()
617 unsigned char *packet = psmouse->packet; in process_packet_motion_v4()
651 elantech_input_sync_v4(psmouse); in process_packet_motion_v4()
654 static void elantech_report_absolute_v4(struct psmouse *psmouse, in elantech_report_absolute_v4() argument
659 process_packet_status_v4(psmouse); in elantech_report_absolute_v4()
663 process_packet_head_v4(psmouse); in elantech_report_absolute_v4()
667 process_packet_motion_v4(psmouse); in elantech_report_absolute_v4()
677 static int elantech_packet_check_v1(struct psmouse *psmouse) in elantech_packet_check_v1() argument
679 struct elantech_data *etd = psmouse->private; in elantech_packet_check_v1()
680 unsigned char *packet = psmouse->packet; in elantech_packet_check_v1()
701 static int elantech_debounce_check_v2(struct psmouse *psmouse) in elantech_debounce_check_v2() argument
708 unsigned char *packet = psmouse->packet; in elantech_debounce_check_v2()
713 static int elantech_packet_check_v2(struct psmouse *psmouse) in elantech_packet_check_v2() argument
715 struct elantech_data *etd = psmouse->private; in elantech_packet_check_v2()
716 unsigned char *packet = psmouse->packet; in elantech_packet_check_v2()
745 static int elantech_packet_check_v3(struct psmouse *psmouse) in elantech_packet_check_v3() argument
747 struct elantech_data *etd = psmouse->private; in elantech_packet_check_v3()
749 unsigned char *packet = psmouse->packet; in elantech_packet_check_v3()
781 static int elantech_packet_check_v4(struct psmouse *psmouse) in elantech_packet_check_v4() argument
783 struct elantech_data *etd = psmouse->private; in elantech_packet_check_v4()
784 unsigned char *packet = psmouse->packet; in elantech_packet_check_v4()
823 static psmouse_ret_t elantech_process_byte(struct psmouse *psmouse) in elantech_process_byte() argument
825 struct elantech_data *etd = psmouse->private; in elantech_process_byte()
828 if (psmouse->pktcnt < psmouse->pktsize) in elantech_process_byte()
832 elantech_packet_dump(psmouse); in elantech_process_byte()
836 if (etd->paritycheck && !elantech_packet_check_v1(psmouse)) in elantech_process_byte()
839 elantech_report_absolute_v1(psmouse); in elantech_process_byte()
844 if (elantech_debounce_check_v2(psmouse)) in elantech_process_byte()
847 if (etd->paritycheck && !elantech_packet_check_v2(psmouse)) in elantech_process_byte()
850 elantech_report_absolute_v2(psmouse); in elantech_process_byte()
854 packet_type = elantech_packet_check_v3(psmouse); in elantech_process_byte()
864 elantech_report_trackpoint(psmouse, packet_type); in elantech_process_byte()
868 elantech_report_absolute_v3(psmouse, packet_type); in elantech_process_byte()
875 packet_type = elantech_packet_check_v4(psmouse); in elantech_process_byte()
881 elantech_report_trackpoint(psmouse, packet_type); in elantech_process_byte()
885 elantech_report_absolute_v4(psmouse, packet_type); in elantech_process_byte()
900 static void elantech_set_rate_restore_reg_07(struct psmouse *psmouse, in elantech_set_rate_restore_reg_07() argument
903 struct elantech_data *etd = psmouse->private; in elantech_set_rate_restore_reg_07()
905 etd->original_set_rate(psmouse, rate); in elantech_set_rate_restore_reg_07()
906 if (elantech_write_reg(psmouse, 0x07, etd->reg_07)) in elantech_set_rate_restore_reg_07()
907 psmouse_err(psmouse, "restoring reg_07 failed\n"); in elantech_set_rate_restore_reg_07()
913 static int elantech_set_absolute_mode(struct psmouse *psmouse) in elantech_set_absolute_mode() argument
915 struct elantech_data *etd = psmouse->private; in elantech_set_absolute_mode()
924 if (elantech_write_reg(psmouse, 0x10, etd->reg_10) || in elantech_set_absolute_mode()
925 elantech_write_reg(psmouse, 0x11, etd->reg_11)) { in elantech_set_absolute_mode()
935 if (elantech_write_reg(psmouse, 0x10, etd->reg_10) || in elantech_set_absolute_mode()
936 elantech_write_reg(psmouse, 0x11, etd->reg_11) || in elantech_set_absolute_mode()
937 elantech_write_reg(psmouse, 0x21, etd->reg_21)) { in elantech_set_absolute_mode()
948 if (elantech_write_reg(psmouse, 0x10, etd->reg_10)) in elantech_set_absolute_mode()
955 if (elantech_write_reg(psmouse, 0x07, etd->reg_07)) in elantech_set_absolute_mode()
969 rc = elantech_read_reg(psmouse, 0x10, &val); in elantech_set_absolute_mode()
978 psmouse_err(psmouse, in elantech_set_absolute_mode()
982 psmouse_err(psmouse, in elantech_set_absolute_mode()
990 psmouse_err(psmouse, "failed to initialise registers.\n"); in elantech_set_absolute_mode()
995 static int elantech_set_range(struct psmouse *psmouse, in elantech_set_range() argument
1000 struct elantech_data *etd = psmouse->private; in elantech_set_range()
1027 if (etd->send_cmd(psmouse, ETP_FW_ID_QUERY, param)) in elantech_set_range()
1033 if (etd->send_cmd(psmouse, ETP_SAMPLE_QUERY, param)) in elantech_set_range()
1052 if (etd->send_cmd(psmouse, ETP_FW_ID_QUERY, param)) in elantech_set_range()
1060 if (etd->send_cmd(psmouse, ETP_FW_ID_QUERY, param)) in elantech_set_range()
1085 static int elantech_get_resolution_v4(struct psmouse *psmouse, in elantech_get_resolution_v4() argument
1091 if (elantech_send_cmd(psmouse, ETP_RESOLUTION_QUERY, param)) in elantech_get_resolution_v4()
1135 static void elantech_set_buttonpad_prop(struct psmouse *psmouse) in elantech_set_buttonpad_prop() argument
1137 struct input_dev *dev = psmouse->dev; in elantech_set_buttonpad_prop()
1138 struct elantech_data *etd = psmouse->private; in elantech_set_buttonpad_prop()
1165 static int elantech_set_input_params(struct psmouse *psmouse) in elantech_set_input_params() argument
1167 struct input_dev *dev = psmouse->dev; in elantech_set_input_params()
1168 struct elantech_data *etd = psmouse->private; in elantech_set_input_params()
1172 if (elantech_set_range(psmouse, &x_min, &y_min, &x_max, &y_max, &width)) in elantech_set_input_params()
1208 elantech_set_buttonpad_prop(psmouse); in elantech_set_input_params()
1223 if (elantech_get_resolution_v4(psmouse, &x_res, &y_res)) { in elantech_set_input_params()
1228 psmouse_warn(psmouse, "couldn't query resolution data.\n"); in elantech_set_input_params()
1230 elantech_set_buttonpad_prop(psmouse); in elantech_set_input_params()
1276 static ssize_t elantech_show_int_attr(struct psmouse *psmouse, void *data, in elantech_show_int_attr() argument
1279 struct elantech_data *etd = psmouse->private; in elantech_show_int_attr()
1285 rc = elantech_read_reg(psmouse, attr->reg, reg); in elantech_show_int_attr()
1293 static ssize_t elantech_set_int_attr(struct psmouse *psmouse, in elantech_set_int_attr() argument
1296 struct elantech_data *etd = psmouse->private; in elantech_set_int_attr()
1316 if (!attr->reg || elantech_write_reg(psmouse, attr->reg, value) == 0) in elantech_set_int_attr()
1396 int elantech_detect(struct psmouse *psmouse, bool set_properties) in elantech_detect() argument
1398 struct ps2dev *ps2dev = &psmouse->ps2dev; in elantech_detect()
1401 ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_RESET_DIS); in elantech_detect()
1408 psmouse_dbg(psmouse, "sending Elantech magic knock failed.\n"); in elantech_detect()
1418 psmouse_dbg(psmouse, in elantech_detect()
1429 if (synaptics_send_cmd(psmouse, ETP_FW_VERSION_QUERY, param)) { in elantech_detect()
1430 psmouse_dbg(psmouse, "failed to query firmware version.\n"); in elantech_detect()
1434 psmouse_dbg(psmouse, in elantech_detect()
1439 psmouse_dbg(psmouse, in elantech_detect()
1445 psmouse->vendor = "Elantech"; in elantech_detect()
1446 psmouse->name = "Touchpad"; in elantech_detect()
1455 static void elantech_disconnect(struct psmouse *psmouse) in elantech_disconnect() argument
1457 struct elantech_data *etd = psmouse->private; in elantech_disconnect()
1461 sysfs_remove_group(&psmouse->ps2dev.serio->dev.kobj, in elantech_disconnect()
1463 kfree(psmouse->private); in elantech_disconnect()
1464 psmouse->private = NULL; in elantech_disconnect()
1470 static int elantech_reconnect(struct psmouse *psmouse) in elantech_reconnect() argument
1472 psmouse_reset(psmouse); in elantech_reconnect()
1474 if (elantech_detect(psmouse, 0)) in elantech_reconnect()
1477 if (elantech_set_absolute_mode(psmouse)) { in elantech_reconnect()
1478 psmouse_err(psmouse, in elantech_reconnect()
1606 int elantech_init(struct psmouse *psmouse) in elantech_init() argument
1614 psmouse->private = etd = kzalloc(sizeof(struct elantech_data), GFP_KERNEL); in elantech_init()
1618 psmouse_reset(psmouse); in elantech_init()
1627 if (synaptics_send_cmd(psmouse, ETP_FW_VERSION_QUERY, param)) { in elantech_init()
1628 psmouse_err(psmouse, "failed to query firmware version.\n"); in elantech_init()
1634 psmouse_err(psmouse, "unknown hardware version, aborting...\n"); in elantech_init()
1637 psmouse_info(psmouse, in elantech_init()
1641 if (etd->send_cmd(psmouse, ETP_CAPABILITIES_QUERY, in elantech_init()
1643 psmouse_err(psmouse, "failed to query capabilities.\n"); in elantech_init()
1646 psmouse_info(psmouse, in elantech_init()
1651 if (elantech_set_absolute_mode(psmouse)) { in elantech_init()
1652 psmouse_err(psmouse, in elantech_init()
1658 etd->original_set_rate = psmouse->set_rate; in elantech_init()
1659 psmouse->set_rate = elantech_set_rate_restore_reg_07; in elantech_init()
1662 if (elantech_set_input_params(psmouse)) { in elantech_init()
1663 psmouse_err(psmouse, "failed to query touchpad range.\n"); in elantech_init()
1667 error = sysfs_create_group(&psmouse->ps2dev.serio->dev.kobj, in elantech_init()
1670 psmouse_err(psmouse, in elantech_init()
1687 psmouse->ps2dev.serio->phys); in elantech_init()
1694 tp_dev->dev.parent = &psmouse->ps2dev.serio->dev; in elantech_init()
1710 psmouse->protocol_handler = elantech_process_byte; in elantech_init()
1711 psmouse->disconnect = elantech_disconnect; in elantech_init()
1712 psmouse->reconnect = elantech_reconnect; in elantech_init()
1713 psmouse->pktsize = etd->hw_version > 1 ? 6 : 4; in elantech_init()
1719 sysfs_remove_group(&psmouse->ps2dev.serio->dev.kobj, in elantech_init()
1722 psmouse_reset(psmouse); in elantech_init()