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 (ps2_sliced_command(&psmouse->ps2dev, 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 (ps2_sliced_command(&psmouse->ps2dev, ETP_REGISTER_READ) || in elantech_read_reg()
111 ps2_sliced_command(&psmouse->ps2dev, 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 (ps2_sliced_command(&psmouse->ps2dev, ETP_REGISTER_WRITE) || in elantech_write_reg()
166 ps2_sliced_command(&psmouse->ps2dev, reg) || in elantech_write_reg()
167 ps2_sliced_command(&psmouse->ps2dev, 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
225 psmouse_printk(KERN_DEBUG, psmouse, "PS/2 packet [%*ph]\n", in elantech_packet_dump()
226 psmouse->pktsize, psmouse->packet); in elantech_packet_dump()
279 static void elantech_report_absolute_v1(struct psmouse *psmouse) in elantech_report_absolute_v1() argument
281 struct input_dev *dev = psmouse->dev; in elantech_report_absolute_v1()
282 struct elantech_data *etd = psmouse->private; in elantech_report_absolute_v1()
283 unsigned char *packet = psmouse->packet; in elantech_report_absolute_v1()
367 static void elantech_report_absolute_v2(struct psmouse *psmouse) in elantech_report_absolute_v2() argument
369 struct elantech_data *etd = psmouse->private; in elantech_report_absolute_v2()
370 struct input_dev *dev = psmouse->dev; in elantech_report_absolute_v2()
371 unsigned char *packet = psmouse->packet; in elantech_report_absolute_v2()
448 static void elantech_report_trackpoint(struct psmouse *psmouse, in elantech_report_trackpoint() argument
466 struct elantech_data *etd = psmouse->private; in elantech_report_trackpoint()
468 unsigned char *packet = psmouse->packet; in elantech_report_trackpoint()
494 elantech_packet_dump(psmouse); in elantech_report_trackpoint()
504 static void elantech_report_absolute_v3(struct psmouse *psmouse, in elantech_report_absolute_v3() argument
507 struct input_dev *dev = psmouse->dev; in elantech_report_absolute_v3()
508 struct elantech_data *etd = psmouse->private; in elantech_report_absolute_v3()
509 unsigned char *packet = psmouse->packet; in elantech_report_absolute_v3()
583 static void elantech_input_sync_v4(struct psmouse *psmouse) in elantech_input_sync_v4() argument
585 struct input_dev *dev = psmouse->dev; in elantech_input_sync_v4()
586 struct elantech_data *etd = psmouse->private; in elantech_input_sync_v4()
587 unsigned char *packet = psmouse->packet; in elantech_input_sync_v4()
599 static void process_packet_status_v4(struct psmouse *psmouse) in process_packet_status_v4() argument
601 struct input_dev *dev = psmouse->dev; in process_packet_status_v4()
602 unsigned char *packet = psmouse->packet; in process_packet_status_v4()
615 elantech_input_sync_v4(psmouse); in process_packet_status_v4()
618 static void process_packet_head_v4(struct psmouse *psmouse) in process_packet_head_v4() argument
620 struct input_dev *dev = psmouse->dev; in process_packet_head_v4()
621 struct elantech_data *etd = psmouse->private; in process_packet_head_v4()
622 unsigned char *packet = psmouse->packet; in process_packet_head_v4()
644 elantech_input_sync_v4(psmouse); in process_packet_head_v4()
647 static void process_packet_motion_v4(struct psmouse *psmouse) in process_packet_motion_v4() argument
649 struct input_dev *dev = psmouse->dev; in process_packet_motion_v4()
650 struct elantech_data *etd = psmouse->private; in process_packet_motion_v4()
651 unsigned char *packet = psmouse->packet; in process_packet_motion_v4()
685 elantech_input_sync_v4(psmouse); in process_packet_motion_v4()
688 static void elantech_report_absolute_v4(struct psmouse *psmouse, in elantech_report_absolute_v4() argument
693 process_packet_status_v4(psmouse); in elantech_report_absolute_v4()
697 process_packet_head_v4(psmouse); in elantech_report_absolute_v4()
701 process_packet_motion_v4(psmouse); in elantech_report_absolute_v4()
711 static int elantech_packet_check_v1(struct psmouse *psmouse) in elantech_packet_check_v1() argument
713 struct elantech_data *etd = psmouse->private; in elantech_packet_check_v1()
714 unsigned char *packet = psmouse->packet; in elantech_packet_check_v1()
735 static int elantech_debounce_check_v2(struct psmouse *psmouse) in elantech_debounce_check_v2() argument
744 unsigned char *packet = psmouse->packet; in elantech_debounce_check_v2()
749 static int elantech_packet_check_v2(struct psmouse *psmouse) in elantech_packet_check_v2() argument
751 struct elantech_data *etd = psmouse->private; in elantech_packet_check_v2()
752 unsigned char *packet = psmouse->packet; in elantech_packet_check_v2()
781 static int elantech_packet_check_v3(struct psmouse *psmouse) in elantech_packet_check_v3() argument
783 struct elantech_data *etd = psmouse->private; in elantech_packet_check_v3()
787 unsigned char *packet = psmouse->packet; in elantech_packet_check_v3()
819 static int elantech_packet_check_v4(struct psmouse *psmouse) in elantech_packet_check_v4() argument
821 struct elantech_data *etd = psmouse->private; in elantech_packet_check_v4()
822 unsigned char *packet = psmouse->packet; in elantech_packet_check_v4()
868 static psmouse_ret_t elantech_process_byte(struct psmouse *psmouse) in elantech_process_byte() argument
870 struct elantech_data *etd = psmouse->private; in elantech_process_byte()
873 if (psmouse->pktcnt < psmouse->pktsize) in elantech_process_byte()
877 elantech_packet_dump(psmouse); in elantech_process_byte()
881 if (etd->info.paritycheck && !elantech_packet_check_v1(psmouse)) in elantech_process_byte()
884 elantech_report_absolute_v1(psmouse); in elantech_process_byte()
889 if (elantech_debounce_check_v2(psmouse)) in elantech_process_byte()
892 if (etd->info.paritycheck && !elantech_packet_check_v2(psmouse)) in elantech_process_byte()
895 elantech_report_absolute_v2(psmouse); in elantech_process_byte()
899 packet_type = elantech_packet_check_v3(psmouse); in elantech_process_byte()
909 elantech_report_trackpoint(psmouse, packet_type); in elantech_process_byte()
913 elantech_report_absolute_v3(psmouse, packet_type); in elantech_process_byte()
920 packet_type = elantech_packet_check_v4(psmouse); in elantech_process_byte()
926 elantech_report_trackpoint(psmouse, packet_type); in elantech_process_byte()
930 elantech_report_absolute_v4(psmouse, packet_type); in elantech_process_byte()
945 static void elantech_set_rate_restore_reg_07(struct psmouse *psmouse, in elantech_set_rate_restore_reg_07() argument
948 struct elantech_data *etd = psmouse->private; in elantech_set_rate_restore_reg_07()
950 etd->original_set_rate(psmouse, rate); in elantech_set_rate_restore_reg_07()
951 if (elantech_write_reg(psmouse, 0x07, etd->reg_07)) in elantech_set_rate_restore_reg_07()
952 psmouse_err(psmouse, "restoring reg_07 failed\n"); in elantech_set_rate_restore_reg_07()
958 static int elantech_set_absolute_mode(struct psmouse *psmouse) in elantech_set_absolute_mode() argument
960 struct elantech_data *etd = psmouse->private; in elantech_set_absolute_mode()
969 if (elantech_write_reg(psmouse, 0x10, etd->reg_10) || in elantech_set_absolute_mode()
970 elantech_write_reg(psmouse, 0x11, etd->reg_11)) { in elantech_set_absolute_mode()
980 if (elantech_write_reg(psmouse, 0x10, etd->reg_10) || in elantech_set_absolute_mode()
981 elantech_write_reg(psmouse, 0x11, etd->reg_11) || in elantech_set_absolute_mode()
982 elantech_write_reg(psmouse, 0x21, etd->reg_21)) { in elantech_set_absolute_mode()
993 if (elantech_write_reg(psmouse, 0x10, etd->reg_10)) in elantech_set_absolute_mode()
1000 if (elantech_write_reg(psmouse, 0x07, etd->reg_07)) in elantech_set_absolute_mode()
1014 rc = elantech_read_reg(psmouse, 0x10, &val); in elantech_set_absolute_mode()
1023 psmouse_err(psmouse, in elantech_set_absolute_mode()
1027 psmouse_err(psmouse, in elantech_set_absolute_mode()
1035 psmouse_err(psmouse, "failed to initialise registers.\n"); in elantech_set_absolute_mode()
1049 static int elantech_get_resolution_v4(struct psmouse *psmouse, in elantech_get_resolution_v4() argument
1056 if (elantech_send_cmd(psmouse, ETP_RESOLUTION_QUERY, param)) in elantech_get_resolution_v4()
1066 static void elantech_set_buttonpad_prop(struct psmouse *psmouse) in elantech_set_buttonpad_prop() argument
1068 struct input_dev *dev = psmouse->dev; in elantech_set_buttonpad_prop()
1069 struct elantech_data *etd = psmouse->private; in elantech_set_buttonpad_prop()
1110 static int elantech_set_input_params(struct psmouse *psmouse) in elantech_set_input_params() argument
1112 struct input_dev *dev = psmouse->dev; in elantech_set_input_params()
1113 struct elantech_data *etd = psmouse->private; in elantech_set_input_params()
1152 elantech_set_buttonpad_prop(psmouse); in elantech_set_input_params()
1167 elantech_set_buttonpad_prop(psmouse); in elantech_set_input_params()
1216 static ssize_t elantech_show_int_attr(struct psmouse *psmouse, void *data, in elantech_show_int_attr() argument
1219 struct elantech_data *etd = psmouse->private; in elantech_show_int_attr()
1225 rc = elantech_read_reg(psmouse, attr->reg, reg); in elantech_show_int_attr()
1233 static ssize_t elantech_set_int_attr(struct psmouse *psmouse, in elantech_set_int_attr() argument
1236 struct elantech_data *etd = psmouse->private; in elantech_set_int_attr()
1256 if (!attr->reg || elantech_write_reg(psmouse, attr->reg, value) == 0) in elantech_set_int_attr()
1347 int elantech_detect(struct psmouse *psmouse, bool set_properties) in elantech_detect() argument
1349 struct ps2dev *ps2dev = &psmouse->ps2dev; in elantech_detect()
1359 psmouse_dbg(psmouse, "sending Elantech magic knock failed.\n"); in elantech_detect()
1369 psmouse_dbg(psmouse, in elantech_detect()
1380 if (synaptics_send_cmd(psmouse, ETP_FW_VERSION_QUERY, param)) { in elantech_detect()
1381 psmouse_dbg(psmouse, "failed to query firmware version.\n"); in elantech_detect()
1385 psmouse_dbg(psmouse, in elantech_detect()
1390 psmouse_dbg(psmouse, in elantech_detect()
1396 psmouse->vendor = "Elantech"; in elantech_detect()
1397 psmouse->name = "Touchpad"; in elantech_detect()
1406 static void elantech_disconnect(struct psmouse *psmouse) in elantech_disconnect() argument
1408 struct elantech_data *etd = psmouse->private; in elantech_disconnect()
1414 psmouse_smbus_cleanup(psmouse); in elantech_disconnect()
1418 sysfs_remove_group(&psmouse->ps2dev.serio->dev.kobj, in elantech_disconnect()
1420 kfree(psmouse->private); in elantech_disconnect()
1421 psmouse->private = NULL; in elantech_disconnect()
1427 static int elantech_reconnect(struct psmouse *psmouse) in elantech_reconnect() argument
1429 psmouse_reset(psmouse); in elantech_reconnect()
1431 if (elantech_detect(psmouse, 0)) in elantech_reconnect()
1434 if (elantech_set_absolute_mode(psmouse)) { in elantech_reconnect()
1435 psmouse_err(psmouse, in elantech_reconnect()
1596 static int elantech_query_info(struct psmouse *psmouse, in elantech_query_info() argument
1607 if (synaptics_send_cmd(psmouse, ETP_FW_VERSION_QUERY, param)) { in elantech_query_info()
1608 psmouse_err(psmouse, "failed to query firmware version.\n"); in elantech_query_info()
1614 psmouse_err(psmouse, "unknown hardware version, aborting...\n"); in elantech_query_info()
1617 psmouse_info(psmouse, in elantech_query_info()
1621 if (info->send_cmd(psmouse, ETP_CAPABILITIES_QUERY, in elantech_query_info()
1623 psmouse_err(psmouse, "failed to query capabilities.\n"); in elantech_query_info()
1626 psmouse_info(psmouse, in elantech_query_info()
1632 if (info->send_cmd(psmouse, ETP_SAMPLE_QUERY, info->samples)) { in elantech_query_info()
1633 psmouse_err(psmouse, "failed to query sample data\n"); in elantech_query_info()
1636 psmouse_info(psmouse, in elantech_query_info()
1649 psmouse_info(psmouse, in elantech_query_info()
1660 if (elantech_get_resolution_v4(psmouse, in elantech_query_info()
1664 psmouse_warn(psmouse, in elantech_query_info()
1693 if (info->send_cmd(psmouse, ETP_FW_ID_QUERY, param)) in elantech_query_info()
1699 if (info->send_cmd(psmouse, ETP_SAMPLE_QUERY, param)) in elantech_query_info()
1718 if (info->send_cmd(psmouse, ETP_FW_ID_QUERY, param)) in elantech_query_info()
1726 if (info->send_cmd(psmouse, ETP_FW_ID_QUERY, param)) in elantech_query_info()
1782 static int elantech_create_smbus(struct psmouse *psmouse, in elantech_create_smbus() argument
1826 return psmouse_smbus_init(psmouse, &smbus_board, NULL, 0, false, in elantech_create_smbus()
1834 static int elantech_setup_smbus(struct psmouse *psmouse, in elantech_setup_smbus() argument
1850 psmouse_matches_pnp_id(psmouse, i2c_blacklist_pnp_ids)) in elantech_setup_smbus()
1854 psmouse_info(psmouse, "Trying to set up SMBus access\n"); in elantech_setup_smbus()
1856 error = elantech_create_smbus(psmouse, info, leave_breadcrumbs); in elantech_setup_smbus()
1859 psmouse_info(psmouse, "SMbus companion is not ready yet\n"); in elantech_setup_smbus()
1861 psmouse_err(psmouse, "unable to create intertouch device\n"); in elantech_setup_smbus()
1869 static bool elantech_use_host_notify(struct psmouse *psmouse, in elantech_use_host_notify() argument
1881 psmouse_dbg(psmouse, "Ignoring SMBus provider through alert protocol.\n"); in elantech_use_host_notify()
1887 psmouse_dbg(psmouse, in elantech_use_host_notify()
1895 int elantech_init_smbus(struct psmouse *psmouse) in elantech_init_smbus() argument
1900 psmouse_reset(psmouse); in elantech_init_smbus()
1902 error = elantech_query_info(psmouse, &info); in elantech_init_smbus()
1911 return elantech_create_smbus(psmouse, &info, false); in elantech_init_smbus()
1913 psmouse_reset(psmouse); in elantech_init_smbus()
1921 static int elantech_setup_ps2(struct psmouse *psmouse, in elantech_setup_ps2() argument
1929 psmouse->private = etd = kzalloc(sizeof(*etd), GFP_KERNEL); in elantech_setup_ps2()
1939 if (elantech_set_absolute_mode(psmouse)) { in elantech_setup_ps2()
1940 psmouse_err(psmouse, in elantech_setup_ps2()
1946 etd->original_set_rate = psmouse->set_rate; in elantech_setup_ps2()
1947 psmouse->set_rate = elantech_set_rate_restore_reg_07; in elantech_setup_ps2()
1950 if (elantech_set_input_params(psmouse)) { in elantech_setup_ps2()
1951 psmouse_err(psmouse, "failed to query touchpad range.\n"); in elantech_setup_ps2()
1955 error = sysfs_create_group(&psmouse->ps2dev.serio->dev.kobj, in elantech_setup_ps2()
1958 psmouse_err(psmouse, in elantech_setup_ps2()
1974 psmouse->ps2dev.serio->phys); in elantech_setup_ps2()
1981 tp_dev->dev.parent = &psmouse->ps2dev.serio->dev; in elantech_setup_ps2()
1997 psmouse->protocol_handler = elantech_process_byte; in elantech_setup_ps2()
1998 psmouse->disconnect = elantech_disconnect; in elantech_setup_ps2()
1999 psmouse->reconnect = elantech_reconnect; in elantech_setup_ps2()
2000 psmouse->pktsize = info->hw_version > 1 ? 6 : 4; in elantech_setup_ps2()
2006 sysfs_remove_group(&psmouse->ps2dev.serio->dev.kobj, in elantech_setup_ps2()
2013 int elantech_init_ps2(struct psmouse *psmouse) in elantech_init_ps2() argument
2018 psmouse_reset(psmouse); in elantech_init_ps2()
2020 error = elantech_query_info(psmouse, &info); in elantech_init_ps2()
2024 error = elantech_setup_ps2(psmouse, &info); in elantech_init_ps2()
2030 psmouse_reset(psmouse); in elantech_init_ps2()
2034 int elantech_init(struct psmouse *psmouse) in elantech_init() argument
2039 psmouse_reset(psmouse); in elantech_init()
2041 error = elantech_query_info(psmouse, &info); in elantech_init()
2047 if (elantech_use_host_notify(psmouse, &info)) { in elantech_init()
2050 psmouse_warn(psmouse, in elantech_init()
2054 error = elantech_setup_smbus(psmouse, &info, true); in elantech_init()
2061 error = elantech_setup_ps2(psmouse, &info); in elantech_init()
2067 psmouse_smbus_cleanup(psmouse); in elantech_init()
2073 psmouse_reset(psmouse); in elantech_init()