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()
488 if (fsp_reg_read(psmouse, reg, &val)) in fsp_attr_set_getreg()
500 static ssize_t fsp_attr_show_pagereg(struct psmouse *psmouse, in fsp_attr_show_pagereg() argument
505 if (fsp_page_reg_read(psmouse, &val)) in fsp_attr_show_pagereg()
511 static ssize_t fsp_attr_set_pagereg(struct psmouse *psmouse, void *data, in fsp_attr_set_pagereg() argument
523 if (fsp_page_reg_write(psmouse, val)) in fsp_attr_set_pagereg()
532 static ssize_t fsp_attr_show_vscroll(struct psmouse *psmouse, in fsp_attr_show_vscroll() argument
535 struct fsp_data *pad = psmouse->private; in fsp_attr_show_vscroll()
540 static ssize_t fsp_attr_set_vscroll(struct psmouse *psmouse, void *data, in fsp_attr_set_vscroll() argument
553 fsp_onpad_vscr(psmouse, val); in fsp_attr_set_vscroll()
561 static ssize_t fsp_attr_show_hscroll(struct psmouse *psmouse, in fsp_attr_show_hscroll() argument
564 struct fsp_data *pad = psmouse->private; in fsp_attr_show_hscroll()
569 static ssize_t fsp_attr_set_hscroll(struct psmouse *psmouse, void *data, in fsp_attr_set_hscroll() argument
582 fsp_onpad_hscr(psmouse, val); in fsp_attr_set_hscroll()
590 static ssize_t fsp_attr_show_flags(struct psmouse *psmouse, in fsp_attr_show_flags() argument
593 struct fsp_data *pad = psmouse->private; in fsp_attr_show_flags()
599 static ssize_t fsp_attr_set_flags(struct psmouse *psmouse, void *data, in fsp_attr_set_flags() argument
602 struct fsp_data *pad = psmouse->private; in fsp_attr_set_flags()
623 static ssize_t fsp_attr_show_ver(struct psmouse *psmouse, in fsp_attr_show_ver() argument
647 static void fsp_packet_debug(struct psmouse *psmouse, unsigned char packet[]) in fsp_packet_debug() argument
675 psmouse_dbg(psmouse, in fsp_packet_debug()
682 psmouse_dbg(psmouse, "PS/2 packets/sec = %d\n", ps2_packet_cnt); in fsp_packet_debug()
688 static void fsp_packet_debug(struct psmouse *psmouse, unsigned char packet[]) in fsp_packet_debug() argument
704 static psmouse_ret_t fsp_process_byte(struct psmouse *psmouse) in fsp_process_byte() argument
706 struct input_dev *dev = psmouse->dev; in fsp_process_byte()
707 struct fsp_data *ad = psmouse->private; in fsp_process_byte()
708 unsigned char *packet = psmouse->packet; in fsp_process_byte()
713 if (psmouse->pktcnt < 4) in fsp_process_byte()
720 fsp_packet_debug(psmouse, packet); in fsp_process_byte()
722 switch (psmouse->packet[0] >> FSP_PKT_TYPE_SHIFT) { in fsp_process_byte()
858 static int fsp_activate_protocol(struct psmouse *psmouse) in fsp_activate_protocol() argument
860 struct fsp_data *pad = psmouse->private; in fsp_activate_protocol()
861 struct ps2dev *ps2dev = &psmouse->ps2dev; in fsp_activate_protocol()
878 psmouse_err(psmouse, in fsp_activate_protocol()
885 if (fsp_reg_read(psmouse, FSP_REG_SYSCTL5, &val)) { in fsp_activate_protocol()
886 psmouse_err(psmouse, in fsp_activate_protocol()
891 if (fsp_get_buttons(psmouse, &pad->buttons)) { in fsp_activate_protocol()
892 psmouse_err(psmouse, in fsp_activate_protocol()
905 if (fsp_reg_write(psmouse, FSP_REG_SYSCTL5, val)) { in fsp_activate_protocol()
906 psmouse_err(psmouse, in fsp_activate_protocol()
915 if (fsp_opc_tag_enable(psmouse, true)) in fsp_activate_protocol()
916 psmouse_warn(psmouse, in fsp_activate_protocol()
922 fsp_onpad_vscr(psmouse, true); in fsp_activate_protocol()
923 fsp_onpad_hscr(psmouse, true); in fsp_activate_protocol()
926 if (fsp_reg_write(psmouse, FSP_REG_SWC1, in fsp_activate_protocol()
931 psmouse_err(psmouse, in fsp_activate_protocol()
940 static int fsp_set_input_params(struct psmouse *psmouse) in fsp_set_input_params() argument
942 struct input_dev *dev = psmouse->dev; in fsp_set_input_params()
943 struct fsp_data *pad = psmouse->private; in fsp_set_input_params()
982 int fsp_detect(struct psmouse *psmouse, bool set_properties) in fsp_detect() argument
986 if (fsp_reg_read(psmouse, FSP_REG_DEVICE_ID, &id)) in fsp_detect()
993 psmouse->vendor = "Sentelic"; in fsp_detect()
994 psmouse->name = "FingerSensingPad"; in fsp_detect()
1000 static void fsp_reset(struct psmouse *psmouse) in fsp_reset() argument
1002 fsp_opc_tag_enable(psmouse, false); in fsp_reset()
1003 fsp_onpad_vscr(psmouse, false); in fsp_reset()
1004 fsp_onpad_hscr(psmouse, false); in fsp_reset()
1007 static void fsp_disconnect(struct psmouse *psmouse) in fsp_disconnect() argument
1009 sysfs_remove_group(&psmouse->ps2dev.serio->dev.kobj, in fsp_disconnect()
1012 fsp_reset(psmouse); in fsp_disconnect()
1013 kfree(psmouse->private); in fsp_disconnect()
1016 static int fsp_reconnect(struct psmouse *psmouse) in fsp_reconnect() argument
1020 if (fsp_detect(psmouse, 0)) in fsp_reconnect()
1023 if (fsp_get_version(psmouse, &version)) in fsp_reconnect()
1026 if (fsp_activate_protocol(psmouse)) in fsp_reconnect()
1032 int fsp_init(struct psmouse *psmouse) in fsp_init() argument
1038 if (fsp_get_version(psmouse, &ver) || in fsp_init()
1039 fsp_get_revision(psmouse, &rev)) { in fsp_init()
1044 fsp_get_sn(psmouse, &sn); in fsp_init()
1047 psmouse_info(psmouse, in fsp_init()
1051 psmouse->private = priv = kzalloc(sizeof(struct fsp_data), GFP_KERNEL); in fsp_init()
1058 psmouse->protocol_handler = fsp_process_byte; in fsp_init()
1059 psmouse->disconnect = fsp_disconnect; in fsp_init()
1060 psmouse->reconnect = fsp_reconnect; in fsp_init()
1061 psmouse->cleanup = fsp_reset; in fsp_init()
1062 psmouse->pktsize = 4; in fsp_init()
1064 error = fsp_activate_protocol(psmouse); in fsp_init()
1069 error = fsp_set_input_params(psmouse); in fsp_init()
1073 error = sysfs_create_group(&psmouse->ps2dev.serio->dev.kobj, in fsp_init()
1076 psmouse_err(psmouse, in fsp_init()
1084 kfree(psmouse->private); in fsp_init()
1085 psmouse->private = NULL; in fsp_init()