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()
830 static psmouse_ret_t elantech_process_byte(struct psmouse *psmouse) in elantech_process_byte() argument
832 struct elantech_data *etd = psmouse->private; in elantech_process_byte()
835 if (psmouse->pktcnt < psmouse->pktsize) in elantech_process_byte()
839 elantech_packet_dump(psmouse); in elantech_process_byte()
843 if (etd->paritycheck && !elantech_packet_check_v1(psmouse)) in elantech_process_byte()
846 elantech_report_absolute_v1(psmouse); in elantech_process_byte()
851 if (elantech_debounce_check_v2(psmouse)) in elantech_process_byte()
854 if (etd->paritycheck && !elantech_packet_check_v2(psmouse)) in elantech_process_byte()
857 elantech_report_absolute_v2(psmouse); in elantech_process_byte()
861 packet_type = elantech_packet_check_v3(psmouse); in elantech_process_byte()
871 elantech_report_trackpoint(psmouse, packet_type); in elantech_process_byte()
875 elantech_report_absolute_v3(psmouse, packet_type); in elantech_process_byte()
882 packet_type = elantech_packet_check_v4(psmouse); in elantech_process_byte()
888 elantech_report_trackpoint(psmouse, packet_type); in elantech_process_byte()
892 elantech_report_absolute_v4(psmouse, packet_type); in elantech_process_byte()
907 static void elantech_set_rate_restore_reg_07(struct psmouse *psmouse, in elantech_set_rate_restore_reg_07() argument
910 struct elantech_data *etd = psmouse->private; in elantech_set_rate_restore_reg_07()
912 etd->original_set_rate(psmouse, rate); in elantech_set_rate_restore_reg_07()
913 if (elantech_write_reg(psmouse, 0x07, etd->reg_07)) in elantech_set_rate_restore_reg_07()
914 psmouse_err(psmouse, "restoring reg_07 failed\n"); in elantech_set_rate_restore_reg_07()
920 static int elantech_set_absolute_mode(struct psmouse *psmouse) in elantech_set_absolute_mode() argument
922 struct elantech_data *etd = psmouse->private; in elantech_set_absolute_mode()
931 if (elantech_write_reg(psmouse, 0x10, etd->reg_10) || in elantech_set_absolute_mode()
932 elantech_write_reg(psmouse, 0x11, etd->reg_11)) { in elantech_set_absolute_mode()
942 if (elantech_write_reg(psmouse, 0x10, etd->reg_10) || in elantech_set_absolute_mode()
943 elantech_write_reg(psmouse, 0x11, etd->reg_11) || in elantech_set_absolute_mode()
944 elantech_write_reg(psmouse, 0x21, etd->reg_21)) { in elantech_set_absolute_mode()
955 if (elantech_write_reg(psmouse, 0x10, etd->reg_10)) in elantech_set_absolute_mode()
962 if (elantech_write_reg(psmouse, 0x07, etd->reg_07)) in elantech_set_absolute_mode()
976 rc = elantech_read_reg(psmouse, 0x10, &val); in elantech_set_absolute_mode()
985 psmouse_err(psmouse, in elantech_set_absolute_mode()
989 psmouse_err(psmouse, in elantech_set_absolute_mode()
997 psmouse_err(psmouse, "failed to initialise registers.\n"); in elantech_set_absolute_mode()
1002 static int elantech_set_range(struct psmouse *psmouse, in elantech_set_range() argument
1007 struct elantech_data *etd = psmouse->private; in elantech_set_range()
1034 if (etd->send_cmd(psmouse, ETP_FW_ID_QUERY, param)) in elantech_set_range()
1040 if (etd->send_cmd(psmouse, ETP_SAMPLE_QUERY, param)) in elantech_set_range()
1059 if (etd->send_cmd(psmouse, ETP_FW_ID_QUERY, param)) in elantech_set_range()
1067 if (etd->send_cmd(psmouse, ETP_FW_ID_QUERY, param)) in elantech_set_range()
1092 static int elantech_get_resolution_v4(struct psmouse *psmouse, in elantech_get_resolution_v4() argument
1098 if (elantech_send_cmd(psmouse, ETP_RESOLUTION_QUERY, param)) in elantech_get_resolution_v4()
1143 static void elantech_set_buttonpad_prop(struct psmouse *psmouse) in elantech_set_buttonpad_prop() argument
1145 struct input_dev *dev = psmouse->dev; in elantech_set_buttonpad_prop()
1146 struct elantech_data *etd = psmouse->private; in elantech_set_buttonpad_prop()
1173 static int elantech_set_input_params(struct psmouse *psmouse) in elantech_set_input_params() argument
1175 struct input_dev *dev = psmouse->dev; in elantech_set_input_params()
1176 struct elantech_data *etd = psmouse->private; in elantech_set_input_params()
1180 if (elantech_set_range(psmouse, &x_min, &y_min, &x_max, &y_max, &width)) in elantech_set_input_params()
1216 elantech_set_buttonpad_prop(psmouse); in elantech_set_input_params()
1231 if (elantech_get_resolution_v4(psmouse, &x_res, &y_res)) { in elantech_set_input_params()
1236 psmouse_warn(psmouse, "couldn't query resolution data.\n"); in elantech_set_input_params()
1238 elantech_set_buttonpad_prop(psmouse); in elantech_set_input_params()
1287 static ssize_t elantech_show_int_attr(struct psmouse *psmouse, void *data, in elantech_show_int_attr() argument
1290 struct elantech_data *etd = psmouse->private; in elantech_show_int_attr()
1296 rc = elantech_read_reg(psmouse, attr->reg, reg); in elantech_show_int_attr()
1304 static ssize_t elantech_set_int_attr(struct psmouse *psmouse, in elantech_set_int_attr() argument
1307 struct elantech_data *etd = psmouse->private; in elantech_set_int_attr()
1327 if (!attr->reg || elantech_write_reg(psmouse, attr->reg, value) == 0) in elantech_set_int_attr()
1407 int elantech_detect(struct psmouse *psmouse, bool set_properties) in elantech_detect() argument
1409 struct ps2dev *ps2dev = &psmouse->ps2dev; in elantech_detect()
1412 ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_RESET_DIS); in elantech_detect()
1419 psmouse_dbg(psmouse, "sending Elantech magic knock failed.\n"); in elantech_detect()
1429 psmouse_dbg(psmouse, in elantech_detect()
1440 if (synaptics_send_cmd(psmouse, ETP_FW_VERSION_QUERY, param)) { in elantech_detect()
1441 psmouse_dbg(psmouse, "failed to query firmware version.\n"); in elantech_detect()
1445 psmouse_dbg(psmouse, in elantech_detect()
1450 psmouse_dbg(psmouse, in elantech_detect()
1456 psmouse->vendor = "Elantech"; in elantech_detect()
1457 psmouse->name = "Touchpad"; in elantech_detect()
1466 static void elantech_disconnect(struct psmouse *psmouse) in elantech_disconnect() argument
1468 struct elantech_data *etd = psmouse->private; in elantech_disconnect()
1472 sysfs_remove_group(&psmouse->ps2dev.serio->dev.kobj, in elantech_disconnect()
1474 kfree(psmouse->private); in elantech_disconnect()
1475 psmouse->private = NULL; in elantech_disconnect()
1481 static int elantech_reconnect(struct psmouse *psmouse) in elantech_reconnect() argument
1483 psmouse_reset(psmouse); in elantech_reconnect()
1485 if (elantech_detect(psmouse, 0)) in elantech_reconnect()
1488 if (elantech_set_absolute_mode(psmouse)) { in elantech_reconnect()
1489 psmouse_err(psmouse, in elantech_reconnect()
1624 int elantech_init(struct psmouse *psmouse) in elantech_init() argument
1632 psmouse->private = etd = kzalloc(sizeof(struct elantech_data), GFP_KERNEL); in elantech_init()
1636 psmouse_reset(psmouse); in elantech_init()
1645 if (synaptics_send_cmd(psmouse, ETP_FW_VERSION_QUERY, param)) { in elantech_init()
1646 psmouse_err(psmouse, "failed to query firmware version.\n"); in elantech_init()
1652 psmouse_err(psmouse, "unknown hardware version, aborting...\n"); in elantech_init()
1655 psmouse_info(psmouse, in elantech_init()
1659 if (etd->send_cmd(psmouse, ETP_CAPABILITIES_QUERY, in elantech_init()
1661 psmouse_err(psmouse, "failed to query capabilities.\n"); in elantech_init()
1664 psmouse_info(psmouse, in elantech_init()
1670 if (etd->send_cmd(psmouse, ETP_SAMPLE_QUERY, etd->samples)) { in elantech_init()
1671 psmouse_err(psmouse, "failed to query sample data\n"); in elantech_init()
1674 psmouse_info(psmouse, in elantech_init()
1679 if (elantech_set_absolute_mode(psmouse)) { in elantech_init()
1680 psmouse_err(psmouse, in elantech_init()
1686 etd->original_set_rate = psmouse->set_rate; in elantech_init()
1687 psmouse->set_rate = elantech_set_rate_restore_reg_07; in elantech_init()
1690 if (elantech_set_input_params(psmouse)) { in elantech_init()
1691 psmouse_err(psmouse, "failed to query touchpad range.\n"); in elantech_init()
1695 error = sysfs_create_group(&psmouse->ps2dev.serio->dev.kobj, in elantech_init()
1698 psmouse_err(psmouse, in elantech_init()
1715 psmouse->ps2dev.serio->phys); in elantech_init()
1722 tp_dev->dev.parent = &psmouse->ps2dev.serio->dev; in elantech_init()
1738 psmouse->protocol_handler = elantech_process_byte; in elantech_init()
1739 psmouse->disconnect = elantech_disconnect; in elantech_init()
1740 psmouse->reconnect = elantech_reconnect; in elantech_init()
1741 psmouse->pktsize = etd->hw_version > 1 ? 6 : 4; in elantech_init()
1747 sysfs_remove_group(&psmouse->ps2dev.serio->dev.kobj, in elantech_init()
1750 psmouse_reset(psmouse); in elantech_init()