Lines Matching refs:psmouse
79 static int synaptics_mode_cmd(struct psmouse *psmouse, u8 mode) in synaptics_mode_cmd() argument
84 error = ps2_sliced_command(&psmouse->ps2dev, mode); in synaptics_mode_cmd()
89 error = ps2_command(&psmouse->ps2dev, param, PSMOUSE_CMD_SETRATE); in synaptics_mode_cmd()
96 int synaptics_detect(struct psmouse *psmouse, bool set_properties) in synaptics_detect() argument
98 struct ps2dev *ps2dev = &psmouse->ps2dev; in synaptics_detect()
111 psmouse->vendor = "Synaptics"; in synaptics_detect()
112 psmouse->name = "TouchPad"; in synaptics_detect()
118 void synaptics_reset(struct psmouse *psmouse) in synaptics_reset() argument
121 synaptics_mode_cmd(psmouse, 0); in synaptics_reset()
216 static int synaptics_send_cmd(struct psmouse *psmouse, u8 cmd, u8 *param) in synaptics_send_cmd() argument
220 error = ps2_sliced_command(&psmouse->ps2dev, cmd); in synaptics_send_cmd()
224 error = ps2_command(&psmouse->ps2dev, param, PSMOUSE_CMD_GETINFO); in synaptics_send_cmd()
231 static int synaptics_query_int(struct psmouse *psmouse, u8 query_cmd, u32 *val) in synaptics_query_int() argument
239 error = synaptics_send_cmd(psmouse, query_cmd, resp.buf + 1); in synaptics_query_int()
251 static int synaptics_identify(struct psmouse *psmouse, in synaptics_identify() argument
256 error = synaptics_query_int(psmouse, SYN_QUE_IDENTIFY, &info->identity); in synaptics_identify()
267 static int synaptics_model_id(struct psmouse *psmouse, in synaptics_model_id() argument
270 return synaptics_query_int(psmouse, SYN_QUE_MODEL, &info->model_id); in synaptics_model_id()
276 static int synaptics_firmware_id(struct psmouse *psmouse, in synaptics_firmware_id() argument
279 return synaptics_query_int(psmouse, SYN_QUE_FIRMWARE_ID, in synaptics_firmware_id()
287 static int synaptics_query_modes(struct psmouse *psmouse, in synaptics_query_modes() argument
297 error = synaptics_send_cmd(psmouse, SYN_QUE_MODES, bid); in synaptics_query_modes()
304 return synaptics_query_int(psmouse, SYN_QUE_MEXT_CAPAB_10, in synaptics_query_modes()
314 static int synaptics_capability(struct psmouse *psmouse, in synaptics_capability() argument
319 error = synaptics_query_int(psmouse, SYN_QUE_CAPABILITIES, in synaptics_capability()
341 error = synaptics_query_int(psmouse, SYN_QUE_EXT_CAPAB, in synaptics_capability()
344 psmouse_warn(psmouse, in synaptics_capability()
357 error = synaptics_query_int(psmouse, SYN_QUE_EXT_CAPAB_0C, in synaptics_capability()
360 psmouse_warn(psmouse, in synaptics_capability()
371 static int synaptics_resolution(struct psmouse *psmouse, in synaptics_resolution() argument
380 error = synaptics_send_cmd(psmouse, SYN_QUE_RESOLUTION, resp); in synaptics_resolution()
390 error = synaptics_send_cmd(psmouse, in synaptics_resolution()
393 psmouse_warn(psmouse, in synaptics_resolution()
398 psmouse_info(psmouse, in synaptics_resolution()
412 error = synaptics_send_cmd(psmouse, in synaptics_resolution()
415 psmouse_warn(psmouse, in synaptics_resolution()
420 psmouse_info(psmouse, in synaptics_resolution()
429 static int synaptics_query_hardware(struct psmouse *psmouse, in synaptics_query_hardware() argument
436 error = synaptics_identify(psmouse, info); in synaptics_query_hardware()
440 error = synaptics_model_id(psmouse, info); in synaptics_query_hardware()
444 error = synaptics_firmware_id(psmouse, info); in synaptics_query_hardware()
448 error = synaptics_query_modes(psmouse, info); in synaptics_query_hardware()
452 error = synaptics_capability(psmouse, info); in synaptics_query_hardware()
456 error = synaptics_resolution(psmouse, info); in synaptics_query_hardware()
536 static void synaptics_apply_quirks(struct psmouse *psmouse, in synaptics_apply_quirks() argument
542 if (!psmouse_matches_pnp_id(psmouse, in synaptics_apply_quirks()
558 psmouse_info(psmouse, in synaptics_apply_quirks()
572 static int synaptics_set_advanced_gesture_mode(struct psmouse *psmouse) in synaptics_set_advanced_gesture_mode() argument
577 error = ps2_sliced_command(&psmouse->ps2dev, SYN_QUE_MODEL); in synaptics_set_advanced_gesture_mode()
581 error = ps2_command(&psmouse->ps2dev, ¶m, PSMOUSE_CMD_SETRATE); in synaptics_set_advanced_gesture_mode()
588 static int synaptics_set_mode(struct psmouse *psmouse) in synaptics_set_mode() argument
590 struct synaptics_data *priv = psmouse->private; in synaptics_set_mode()
598 if (psmouse->rate >= 80) in synaptics_set_mode()
603 error = synaptics_mode_cmd(psmouse, priv->mode); in synaptics_set_mode()
608 error = synaptics_set_advanced_gesture_mode(psmouse); in synaptics_set_mode()
610 psmouse_err(psmouse, in synaptics_set_mode()
620 static void synaptics_set_rate(struct psmouse *psmouse, unsigned int rate) in synaptics_set_rate() argument
622 struct synaptics_data *priv = psmouse->private; in synaptics_set_rate()
626 psmouse->rate = 80; in synaptics_set_rate()
629 psmouse->rate = 40; in synaptics_set_rate()
632 synaptics_mode_cmd(psmouse, priv->mode); in synaptics_set_rate()
640 struct psmouse *parent = psmouse_from_serio(serio->parent); in synaptics_pt_write()
657 struct psmouse *parent = psmouse_from_serio(serio->parent); in synaptics_pt_start()
668 struct psmouse *parent = psmouse_from_serio(serio->parent); in synaptics_pt_stop()
677 struct psmouse *parent = psmouse_from_serio(serio->parent); in synaptics_pt_open()
688 struct psmouse *parent = psmouse_from_serio(serio->parent); in synaptics_pt_close()
711 struct psmouse *child = psmouse_from_serio(ptport); in synaptics_pass_pt_packet()
722 static void synaptics_pt_activate(struct psmouse *psmouse) in synaptics_pt_activate() argument
724 struct synaptics_data *priv = psmouse->private; in synaptics_pt_activate()
725 struct psmouse *child = psmouse_from_serio(priv->pt_port); in synaptics_pt_activate()
734 if (synaptics_mode_cmd(psmouse, priv->mode)) in synaptics_pt_activate()
735 psmouse_warn(psmouse, in synaptics_pt_activate()
740 static void synaptics_pt_create(struct psmouse *psmouse) in synaptics_pt_create() argument
746 psmouse_err(psmouse, in synaptics_pt_create()
759 serio->parent = psmouse->ps2dev.serio; in synaptics_pt_create()
761 psmouse->pt_activate = synaptics_pt_activate; in synaptics_pt_create()
763 psmouse_info(psmouse, "serio: %s port at %s\n", in synaptics_pt_create()
764 serio->name, psmouse->phys); in synaptics_pt_create()
957 static void synaptics_report_ext_buttons(struct psmouse *psmouse, in synaptics_report_ext_buttons() argument
960 struct input_dev *dev = psmouse->dev; in synaptics_report_ext_buttons()
961 struct synaptics_data *priv = psmouse->private; in synaptics_report_ext_buttons()
971 !((psmouse->packet[0] ^ psmouse->packet[3]) & 0x02)) in synaptics_report_ext_buttons()
1003 static void synaptics_report_buttons(struct psmouse *psmouse, in synaptics_report_buttons() argument
1006 struct input_dev *dev = psmouse->dev; in synaptics_report_buttons()
1007 struct synaptics_data *priv = psmouse->private; in synaptics_report_buttons()
1020 synaptics_report_ext_buttons(psmouse, hw); in synaptics_report_buttons()
1023 static void synaptics_report_mt_data(struct psmouse *psmouse, in synaptics_report_mt_data() argument
1027 struct input_dev *dev = psmouse->dev; in synaptics_report_mt_data()
1028 struct synaptics_data *priv = psmouse->private; in synaptics_report_mt_data()
1058 synaptics_report_buttons(psmouse, sgm); in synaptics_report_mt_data()
1063 static void synaptics_image_sensor_process(struct psmouse *psmouse, in synaptics_image_sensor_process() argument
1066 struct synaptics_data *priv = psmouse->private; in synaptics_image_sensor_process()
1084 synaptics_report_mt_data(psmouse, sgm, num_fingers); in synaptics_image_sensor_process()
1099 static void synaptics_process_packet(struct psmouse *psmouse) in synaptics_process_packet() argument
1101 struct input_dev *dev = psmouse->dev; in synaptics_process_packet()
1102 struct synaptics_data *priv = psmouse->private; in synaptics_process_packet()
1108 if (synaptics_parse_hw_state(psmouse->packet, priv, &hw)) in synaptics_process_packet()
1112 synaptics_image_sensor_process(psmouse, &hw); in synaptics_process_packet()
1164 synaptics_report_mt_data(psmouse, &hw, num_fingers); in synaptics_process_packet()
1194 synaptics_report_buttons(psmouse, &hw); in synaptics_process_packet()
1199 static bool synaptics_validate_byte(struct psmouse *psmouse, in synaptics_validate_byte() argument
1207 const u8 *packet = psmouse->packet; in synaptics_validate_byte()
1225 psmouse_err(psmouse, "unknown packet type %d\n", pkt_type); in synaptics_validate_byte()
1231 synaptics_detect_pkt_type(struct psmouse *psmouse) in synaptics_detect_pkt_type() argument
1236 if (!synaptics_validate_byte(psmouse, i, SYN_NEWABS_STRICT)) { in synaptics_detect_pkt_type()
1237 psmouse_info(psmouse, "using relaxed packet validation\n"); in synaptics_detect_pkt_type()
1245 static psmouse_ret_t synaptics_process_byte(struct psmouse *psmouse) in synaptics_process_byte() argument
1247 struct synaptics_data *priv = psmouse->private; in synaptics_process_byte()
1249 if (psmouse->pktcnt >= 6) { /* Full packet received */ in synaptics_process_byte()
1251 priv->pkt_type = synaptics_detect_pkt_type(psmouse); in synaptics_process_byte()
1254 synaptics_is_pt_packet(psmouse->packet)) { in synaptics_process_byte()
1255 synaptics_pass_pt_packet(priv, psmouse->packet); in synaptics_process_byte()
1257 synaptics_process_packet(psmouse); in synaptics_process_byte()
1263 return synaptics_validate_byte(psmouse, psmouse->pktcnt - 1, priv->pkt_type) ? in synaptics_process_byte()
1287 static int set_input_params(struct psmouse *psmouse, in set_input_params() argument
1290 struct input_dev *dev = psmouse->dev; in set_input_params()
1389 if (psmouse_matches_pnp_id(psmouse, topbuttonpad_pnp_ids) && in set_input_params()
1397 static ssize_t synaptics_show_disable_gesture(struct psmouse *psmouse, in synaptics_show_disable_gesture() argument
1400 struct synaptics_data *priv = psmouse->private; in synaptics_show_disable_gesture()
1405 static ssize_t synaptics_set_disable_gesture(struct psmouse *psmouse, in synaptics_set_disable_gesture() argument
1409 struct synaptics_data *priv = psmouse->private; in synaptics_set_disable_gesture()
1429 if (synaptics_mode_cmd(psmouse, priv->mode)) in synaptics_set_disable_gesture()
1439 static void synaptics_disconnect(struct psmouse *psmouse) in synaptics_disconnect() argument
1441 struct synaptics_data *priv = psmouse->private; in synaptics_disconnect()
1447 psmouse_smbus_cleanup(psmouse); in synaptics_disconnect()
1451 device_remove_file(&psmouse->ps2dev.serio->dev, in synaptics_disconnect()
1454 synaptics_reset(psmouse); in synaptics_disconnect()
1456 psmouse->private = NULL; in synaptics_disconnect()
1459 static int synaptics_reconnect(struct psmouse *psmouse) in synaptics_reconnect() argument
1461 struct synaptics_data *priv = psmouse->private; in synaptics_reconnect()
1468 psmouse_reset(psmouse); in synaptics_reconnect()
1479 ps2_command(&psmouse->ps2dev, param, PSMOUSE_CMD_GETID); in synaptics_reconnect()
1480 error = synaptics_detect(psmouse, 0); in synaptics_reconnect()
1487 psmouse_dbg(psmouse, "reconnected after %d tries\n", retry); in synaptics_reconnect()
1489 error = synaptics_query_hardware(psmouse, &info); in synaptics_reconnect()
1491 psmouse_err(psmouse, "Unable to query device.\n"); in synaptics_reconnect()
1495 error = synaptics_set_mode(psmouse); in synaptics_reconnect()
1497 psmouse_err(psmouse, "Unable to initialize device.\n"); in synaptics_reconnect()
1505 psmouse_err(psmouse, in synaptics_reconnect()
1591 static int synaptics_init_ps2(struct psmouse *psmouse, in synaptics_init_ps2() argument
1598 synaptics_apply_quirks(psmouse, info); in synaptics_init_ps2()
1600 psmouse->private = priv = kzalloc(sizeof(*priv), GFP_KERNEL); in synaptics_init_ps2()
1613 priv->is_forcepad = psmouse_matches_pnp_id(psmouse, forcepad_pnp_ids); in synaptics_init_ps2()
1615 err = synaptics_set_mode(psmouse); in synaptics_init_ps2()
1617 psmouse_err(psmouse, "Unable to initialize device.\n"); in synaptics_init_ps2()
1624 psmouse_info(psmouse, in synaptics_init_ps2()
1632 err = set_input_params(psmouse, priv); in synaptics_init_ps2()
1634 psmouse_err(psmouse, in synaptics_init_ps2()
1646 psmouse->model = ((info->model_id & 0x00ff0000) >> 8) | in synaptics_init_ps2()
1650 psmouse->protocol_handler = synaptics_process_byte; in synaptics_init_ps2()
1651 psmouse->pktsize = 6; in synaptics_init_ps2()
1654 psmouse->protocol_handler = psmouse_process_byte; in synaptics_init_ps2()
1655 psmouse->pktsize = 3; in synaptics_init_ps2()
1658 psmouse->set_rate = synaptics_set_rate; in synaptics_init_ps2()
1659 psmouse->disconnect = synaptics_disconnect; in synaptics_init_ps2()
1660 psmouse->reconnect = synaptics_reconnect; in synaptics_init_ps2()
1661 psmouse->fast_reconnect = NULL; in synaptics_init_ps2()
1662 psmouse->cleanup = synaptics_reset; in synaptics_init_ps2()
1664 psmouse->resync_time = 0; in synaptics_init_ps2()
1667 synaptics_pt_create(psmouse); in synaptics_init_ps2()
1674 if (psmouse->rate >= 80 && impaired_toshiba_kbc) { in synaptics_init_ps2()
1675 psmouse_info(psmouse, in synaptics_init_ps2()
1678 psmouse->rate = 40; in synaptics_init_ps2()
1682 err = device_create_file(&psmouse->ps2dev.serio->dev, in synaptics_init_ps2()
1685 psmouse_err(psmouse, in synaptics_init_ps2()
1699 static int __synaptics_init(struct psmouse *psmouse, bool absolute_mode) in __synaptics_init() argument
1704 psmouse_reset(psmouse); in __synaptics_init()
1706 error = synaptics_query_hardware(psmouse, &info); in __synaptics_init()
1708 psmouse_err(psmouse, "Unable to query device: %d\n", error); in __synaptics_init()
1712 return synaptics_init_ps2(psmouse, &info, absolute_mode); in __synaptics_init()
1715 int synaptics_init_absolute(struct psmouse *psmouse) in synaptics_init_absolute() argument
1717 return __synaptics_init(psmouse, true); in synaptics_init_absolute()
1720 int synaptics_init_relative(struct psmouse *psmouse) in synaptics_init_relative() argument
1722 return __synaptics_init(psmouse, false); in synaptics_init_relative()
1725 static int synaptics_setup_ps2(struct psmouse *psmouse, in synaptics_setup_ps2() argument
1738 psmouse_info(psmouse, in synaptics_setup_ps2()
1743 error = synaptics_init_ps2(psmouse, info, absolute_mode); in synaptics_setup_ps2()
1757 synaptics_setup_ps2(struct psmouse *psmouse, in synaptics_setup_ps2() argument
1783 static int synaptics_create_intertouch(struct psmouse *psmouse, in synaptics_create_intertouch() argument
1788 psmouse_matches_pnp_id(psmouse, topbuttonpad_pnp_ids) && in synaptics_create_intertouch()
1809 return psmouse_smbus_init(psmouse, &intertouch_board, in synaptics_create_intertouch()
1818 static int synaptics_setup_intertouch(struct psmouse *psmouse, in synaptics_setup_intertouch() argument
1828 if (!psmouse_matches_pnp_id(psmouse, topbuttonpad_pnp_ids) && in synaptics_setup_intertouch()
1829 !psmouse_matches_pnp_id(psmouse, smbus_pnp_ids)) { in synaptics_setup_intertouch()
1831 if (!psmouse_matches_pnp_id(psmouse, forcepad_pnp_ids)) in synaptics_setup_intertouch()
1832 psmouse_info(psmouse, in synaptics_setup_intertouch()
1835 psmouse->ps2dev.serio->firmware_id); in synaptics_setup_intertouch()
1841 psmouse_info(psmouse, "Trying to set up SMBus access\n"); in synaptics_setup_intertouch()
1843 error = synaptics_create_intertouch(psmouse, info, leave_breadcrumbs); in synaptics_setup_intertouch()
1846 psmouse_info(psmouse, "SMbus companion is not ready yet\n"); in synaptics_setup_intertouch()
1848 psmouse_err(psmouse, "unable to create intertouch device\n"); in synaptics_setup_intertouch()
1856 int synaptics_init_smbus(struct psmouse *psmouse) in synaptics_init_smbus() argument
1861 psmouse_reset(psmouse); in synaptics_init_smbus()
1863 error = synaptics_query_hardware(psmouse, &info); in synaptics_init_smbus()
1865 psmouse_err(psmouse, "Unable to query device: %d\n", error); in synaptics_init_smbus()
1872 return synaptics_create_intertouch(psmouse, &info, false); in synaptics_init_smbus()
1878 synaptics_setup_intertouch(struct psmouse *psmouse, in synaptics_setup_intertouch() argument
1885 int synaptics_init_smbus(struct psmouse *psmouse) in synaptics_init_smbus() argument
1895 int synaptics_init(struct psmouse *psmouse) in synaptics_init() argument
1901 psmouse_reset(psmouse); in synaptics_init()
1903 error = synaptics_query_hardware(psmouse, &info); in synaptics_init()
1905 psmouse_err(psmouse, "Unable to query device: %d\n", error); in synaptics_init()
1913 !psmouse_matches_pnp_id(psmouse, forcepad_pnp_ids)) { in synaptics_init()
1914 psmouse_warn(psmouse, in synaptics_init()
1919 error = synaptics_setup_intertouch(psmouse, &info, true); in synaptics_init()
1924 retval = synaptics_setup_ps2(psmouse, &info); in synaptics_init()
1930 psmouse_smbus_cleanup(psmouse); in synaptics_init()
1938 int synaptics_init(struct psmouse *psmouse) in synaptics_init() argument