Lines Matching refs:psmouse

84 static int fsp_reg_read(struct psmouse *psmouse, int reg_addr, int *reg_val)  in fsp_reg_read()  argument
86 struct ps2dev *ps2dev = &psmouse->ps2dev; in fsp_reg_read()
97 psmouse_deactivate(psmouse); in fsp_reg_read()
134 psmouse_activate(psmouse); in fsp_reg_read()
135 psmouse_dbg(psmouse, in fsp_reg_read()
141 static int fsp_reg_write(struct psmouse *psmouse, int reg_addr, int reg_val) in fsp_reg_write() argument
143 struct ps2dev *ps2dev = &psmouse->ps2dev; in fsp_reg_write()
187 psmouse_dbg(psmouse, in fsp_reg_write()
194 static int fsp_reg_write_enable(struct psmouse *psmouse, bool enable) in fsp_reg_write_enable() argument
198 if (fsp_reg_read(psmouse, FSP_REG_SYSCTL1, &v) == -1) in fsp_reg_write_enable()
208 if (fsp_reg_write(psmouse, FSP_REG_SYSCTL1, nv) == -1) in fsp_reg_write_enable()
214 static int fsp_page_reg_read(struct psmouse *psmouse, int *reg_val) in fsp_page_reg_read() argument
216 struct ps2dev *ps2dev = &psmouse->ps2dev; in fsp_page_reg_read()
220 psmouse_deactivate(psmouse); in fsp_page_reg_read()
245 psmouse_activate(psmouse); in fsp_page_reg_read()
246 psmouse_dbg(psmouse, in fsp_page_reg_read()
252 static int fsp_page_reg_write(struct psmouse *psmouse, int reg_val) in fsp_page_reg_write() argument
254 struct ps2dev *ps2dev = &psmouse->ps2dev; in fsp_page_reg_write()
284 psmouse_dbg(psmouse, in fsp_page_reg_write()
290 static int fsp_get_version(struct psmouse *psmouse, int *version) in fsp_get_version() argument
292 if (fsp_reg_read(psmouse, FSP_REG_VERSION, version)) in fsp_get_version()
298 static int fsp_get_revision(struct psmouse *psmouse, int *rev) in fsp_get_revision() argument
300 if (fsp_reg_read(psmouse, FSP_REG_REVISION, rev)) in fsp_get_revision()
306 static int fsp_get_sn(struct psmouse *psmouse, int *sn) in fsp_get_sn() argument
312 if (fsp_page_reg_write(psmouse, FSP_PAGE_0B)) in fsp_get_sn()
314 if (fsp_reg_read(psmouse, FSP_REG_SN0, &v0)) in fsp_get_sn()
316 if (fsp_reg_read(psmouse, FSP_REG_SN1, &v1)) in fsp_get_sn()
318 if (fsp_reg_read(psmouse, FSP_REG_SN2, &v2)) in fsp_get_sn()
323 fsp_page_reg_write(psmouse, FSP_PAGE_DEFAULT); in fsp_get_sn()
327 static int fsp_get_buttons(struct psmouse *psmouse, int *btn) in fsp_get_buttons() argument
337 if (fsp_reg_read(psmouse, FSP_REG_TMOD_STATUS, &val) == -1) in fsp_get_buttons()
345 static int fsp_opc_tag_enable(struct psmouse *psmouse, bool enable) in fsp_opc_tag_enable() argument
350 if (fsp_reg_read(psmouse, FSP_REG_OPC_QDOWN, &v) == -1) { in fsp_opc_tag_enable()
351 psmouse_err(psmouse, "Unable get OPC state.\n"); in fsp_opc_tag_enable()
362 fsp_reg_write_enable(psmouse, true); in fsp_opc_tag_enable()
363 res = fsp_reg_write(psmouse, FSP_REG_OPC_QDOWN, nv); in fsp_opc_tag_enable()
364 fsp_reg_write_enable(psmouse, false); in fsp_opc_tag_enable()
368 psmouse_err(psmouse, "Unable to enable OPC tag.\n"); in fsp_opc_tag_enable()
375 static int fsp_onpad_vscr(struct psmouse *psmouse, bool enable) in fsp_onpad_vscr() argument
377 struct fsp_data *pad = psmouse->private; in fsp_onpad_vscr()
380 if (fsp_reg_read(psmouse, FSP_REG_ONPAD_CTL, &val)) in fsp_onpad_vscr()
390 if (fsp_reg_write(psmouse, FSP_REG_ONPAD_CTL, val)) in fsp_onpad_vscr()
396 static int fsp_onpad_hscr(struct psmouse *psmouse, bool enable) in fsp_onpad_hscr() argument
398 struct fsp_data *pad = psmouse->private; in fsp_onpad_hscr()
401 if (fsp_reg_read(psmouse, FSP_REG_ONPAD_CTL, &val)) in fsp_onpad_hscr()
404 if (fsp_reg_read(psmouse, FSP_REG_SYSCTL5, &v2)) in fsp_onpad_hscr()
417 if (fsp_reg_write(psmouse, FSP_REG_ONPAD_CTL, val)) in fsp_onpad_hscr()
421 if (fsp_reg_write(psmouse, FSP_REG_SYSCTL5, v2)) in fsp_onpad_hscr()
432 static ssize_t fsp_attr_set_setreg(struct psmouse *psmouse, void *data, in fsp_attr_set_setreg() argument
450 if (fsp_reg_write_enable(psmouse, true)) in fsp_attr_set_setreg()
453 retval = fsp_reg_write(psmouse, reg, val) < 0 ? -EIO : count; in fsp_attr_set_setreg()
455 fsp_reg_write_enable(psmouse, false); in fsp_attr_set_setreg()
462 static ssize_t fsp_attr_show_getreg(struct psmouse *psmouse, in fsp_attr_show_getreg() argument
465 struct fsp_data *pad = psmouse->private; in fsp_attr_show_getreg()
475 static ssize_t fsp_attr_set_getreg(struct psmouse *psmouse, void *data, in fsp_attr_set_getreg() argument
478 struct fsp_data *pad = psmouse->private; in fsp_attr_set_getreg()
489 if (fsp_reg_read(psmouse, reg, &val)) in fsp_attr_set_getreg()
501 static ssize_t fsp_attr_show_pagereg(struct psmouse *psmouse, in fsp_attr_show_pagereg() argument
506 if (fsp_page_reg_read(psmouse, &val)) in fsp_attr_show_pagereg()
512 static ssize_t fsp_attr_set_pagereg(struct psmouse *psmouse, void *data, in fsp_attr_set_pagereg() argument
525 if (fsp_page_reg_write(psmouse, val)) in fsp_attr_set_pagereg()
534 static ssize_t fsp_attr_show_vscroll(struct psmouse *psmouse, in fsp_attr_show_vscroll() argument
537 struct fsp_data *pad = psmouse->private; in fsp_attr_show_vscroll()
542 static ssize_t fsp_attr_set_vscroll(struct psmouse *psmouse, void *data, in fsp_attr_set_vscroll() argument
555 fsp_onpad_vscr(psmouse, val); in fsp_attr_set_vscroll()
563 static ssize_t fsp_attr_show_hscroll(struct psmouse *psmouse, in fsp_attr_show_hscroll() argument
566 struct fsp_data *pad = psmouse->private; in fsp_attr_show_hscroll()
571 static ssize_t fsp_attr_set_hscroll(struct psmouse *psmouse, void *data, in fsp_attr_set_hscroll() argument
584 fsp_onpad_hscr(psmouse, val); in fsp_attr_set_hscroll()
592 static ssize_t fsp_attr_show_flags(struct psmouse *psmouse, in fsp_attr_show_flags() argument
595 struct fsp_data *pad = psmouse->private; in fsp_attr_show_flags()
601 static ssize_t fsp_attr_set_flags(struct psmouse *psmouse, void *data, in fsp_attr_set_flags() argument
604 struct fsp_data *pad = psmouse->private; in fsp_attr_set_flags()
625 static ssize_t fsp_attr_show_ver(struct psmouse *psmouse, in fsp_attr_show_ver() argument
649 static void fsp_packet_debug(struct psmouse *psmouse, unsigned char packet[]) in fsp_packet_debug() argument
677 psmouse_dbg(psmouse, in fsp_packet_debug()
684 psmouse_dbg(psmouse, "PS/2 packets/sec = %d\n", ps2_packet_cnt); in fsp_packet_debug()
690 static void fsp_packet_debug(struct psmouse *psmouse, unsigned char packet[]) in fsp_packet_debug() argument
706 static psmouse_ret_t fsp_process_byte(struct psmouse *psmouse) in fsp_process_byte() argument
708 struct input_dev *dev = psmouse->dev; in fsp_process_byte()
709 struct fsp_data *ad = psmouse->private; in fsp_process_byte()
710 unsigned char *packet = psmouse->packet; in fsp_process_byte()
715 if (psmouse->pktcnt < 4) in fsp_process_byte()
722 fsp_packet_debug(psmouse, packet); in fsp_process_byte()
724 switch (psmouse->packet[0] >> FSP_PKT_TYPE_SHIFT) { in fsp_process_byte()
860 static int fsp_activate_protocol(struct psmouse *psmouse) in fsp_activate_protocol() argument
862 struct fsp_data *pad = psmouse->private; in fsp_activate_protocol()
863 struct ps2dev *ps2dev = &psmouse->ps2dev; in fsp_activate_protocol()
880 psmouse_err(psmouse, in fsp_activate_protocol()
887 if (fsp_reg_read(psmouse, FSP_REG_SYSCTL5, &val)) { in fsp_activate_protocol()
888 psmouse_err(psmouse, in fsp_activate_protocol()
893 if (fsp_get_buttons(psmouse, &pad->buttons)) { in fsp_activate_protocol()
894 psmouse_err(psmouse, in fsp_activate_protocol()
907 if (fsp_reg_write(psmouse, FSP_REG_SYSCTL5, val)) { in fsp_activate_protocol()
908 psmouse_err(psmouse, in fsp_activate_protocol()
917 if (fsp_opc_tag_enable(psmouse, true)) in fsp_activate_protocol()
918 psmouse_warn(psmouse, in fsp_activate_protocol()
924 fsp_onpad_vscr(psmouse, true); in fsp_activate_protocol()
925 fsp_onpad_hscr(psmouse, true); in fsp_activate_protocol()
928 if (fsp_reg_write(psmouse, FSP_REG_SWC1, in fsp_activate_protocol()
933 psmouse_err(psmouse, in fsp_activate_protocol()
942 static int fsp_set_input_params(struct psmouse *psmouse) in fsp_set_input_params() argument
944 struct input_dev *dev = psmouse->dev; in fsp_set_input_params()
945 struct fsp_data *pad = psmouse->private; in fsp_set_input_params()
984 int fsp_detect(struct psmouse *psmouse, bool set_properties) in fsp_detect() argument
988 if (fsp_reg_read(psmouse, FSP_REG_DEVICE_ID, &id)) in fsp_detect()
995 psmouse->vendor = "Sentelic"; in fsp_detect()
996 psmouse->name = "FingerSensingPad"; in fsp_detect()
1002 static void fsp_reset(struct psmouse *psmouse) in fsp_reset() argument
1004 fsp_opc_tag_enable(psmouse, false); in fsp_reset()
1005 fsp_onpad_vscr(psmouse, false); in fsp_reset()
1006 fsp_onpad_hscr(psmouse, false); in fsp_reset()
1009 static void fsp_disconnect(struct psmouse *psmouse) in fsp_disconnect() argument
1011 sysfs_remove_group(&psmouse->ps2dev.serio->dev.kobj, in fsp_disconnect()
1014 fsp_reset(psmouse); in fsp_disconnect()
1015 kfree(psmouse->private); in fsp_disconnect()
1018 static int fsp_reconnect(struct psmouse *psmouse) in fsp_reconnect() argument
1022 if (fsp_detect(psmouse, 0)) in fsp_reconnect()
1025 if (fsp_get_version(psmouse, &version)) in fsp_reconnect()
1028 if (fsp_activate_protocol(psmouse)) in fsp_reconnect()
1034 int fsp_init(struct psmouse *psmouse) in fsp_init() argument
1040 if (fsp_get_version(psmouse, &ver) || in fsp_init()
1041 fsp_get_revision(psmouse, &rev)) { in fsp_init()
1046 fsp_get_sn(psmouse, &sn); in fsp_init()
1049 psmouse_info(psmouse, in fsp_init()
1053 psmouse->private = priv = kzalloc(sizeof(struct fsp_data), GFP_KERNEL); in fsp_init()
1060 psmouse->protocol_handler = fsp_process_byte; in fsp_init()
1061 psmouse->disconnect = fsp_disconnect; in fsp_init()
1062 psmouse->reconnect = fsp_reconnect; in fsp_init()
1063 psmouse->cleanup = fsp_reset; in fsp_init()
1064 psmouse->pktsize = 4; in fsp_init()
1066 error = fsp_activate_protocol(psmouse); in fsp_init()
1071 error = fsp_set_input_params(psmouse); in fsp_init()
1075 error = sysfs_create_group(&psmouse->ps2dev.serio->dev.kobj, in fsp_init()
1078 psmouse_err(psmouse, in fsp_init()
1086 kfree(psmouse->private); in fsp_init()
1087 psmouse->private = NULL; in fsp_init()