Lines Matching refs:psmouse

18 #include "psmouse.h"
71 static int fsp_reg_read(struct psmouse *psmouse, int reg_addr, int *reg_val)
73 struct ps2dev *ps2dev = &psmouse->ps2dev;
84 psmouse_deactivate(psmouse);
121 psmouse_activate(psmouse);
122 psmouse_dbg(psmouse,
128 static int fsp_reg_write(struct psmouse *psmouse, int reg_addr, int reg_val)
130 struct ps2dev *ps2dev = &psmouse->ps2dev;
174 psmouse_dbg(psmouse,
181 static int fsp_reg_write_enable(struct psmouse *psmouse, bool enable)
185 if (fsp_reg_read(psmouse, FSP_REG_SYSCTL1, &v) == -1)
195 if (fsp_reg_write(psmouse, FSP_REG_SYSCTL1, nv) == -1)
201 static int fsp_page_reg_read(struct psmouse *psmouse, int *reg_val)
203 struct ps2dev *ps2dev = &psmouse->ps2dev;
207 psmouse_deactivate(psmouse);
232 psmouse_activate(psmouse);
233 psmouse_dbg(psmouse,
239 static int fsp_page_reg_write(struct psmouse *psmouse, int reg_val)
241 struct ps2dev *ps2dev = &psmouse->ps2dev;
271 psmouse_dbg(psmouse,
277 static int fsp_get_version(struct psmouse *psmouse, int *version)
279 if (fsp_reg_read(psmouse, FSP_REG_VERSION, version))
285 static int fsp_get_revision(struct psmouse *psmouse, int *rev)
287 if (fsp_reg_read(psmouse, FSP_REG_REVISION, rev))
293 static int fsp_get_sn(struct psmouse *psmouse, int *sn)
299 if (fsp_page_reg_write(psmouse, FSP_PAGE_0B))
301 if (fsp_reg_read(psmouse, FSP_REG_SN0, &v0))
303 if (fsp_reg_read(psmouse, FSP_REG_SN1, &v1))
305 if (fsp_reg_read(psmouse, FSP_REG_SN2, &v2))
310 fsp_page_reg_write(psmouse, FSP_PAGE_DEFAULT);
314 static int fsp_get_buttons(struct psmouse *psmouse, int *btn)
324 if (fsp_reg_read(psmouse, FSP_REG_TMOD_STATUS, &val) == -1)
332 static int fsp_opc_tag_enable(struct psmouse *psmouse, bool enable)
337 if (fsp_reg_read(psmouse, FSP_REG_OPC_QDOWN, &v) == -1) {
338 psmouse_err(psmouse, "Unable get OPC state.\n");
349 fsp_reg_write_enable(psmouse, true);
350 res = fsp_reg_write(psmouse, FSP_REG_OPC_QDOWN, nv);
351 fsp_reg_write_enable(psmouse, false);
355 psmouse_err(psmouse, "Unable to enable OPC tag.\n");
362 static int fsp_onpad_vscr(struct psmouse *psmouse, bool enable)
364 struct fsp_data *pad = psmouse->private;
367 if (fsp_reg_read(psmouse, FSP_REG_ONPAD_CTL, &val))
377 if (fsp_reg_write(psmouse, FSP_REG_ONPAD_CTL, val))
383 static int fsp_onpad_hscr(struct psmouse *psmouse, bool enable)
385 struct fsp_data *pad = psmouse->private;
388 if (fsp_reg_read(psmouse, FSP_REG_ONPAD_CTL, &val))
391 if (fsp_reg_read(psmouse, FSP_REG_SYSCTL5, &v2))
404 if (fsp_reg_write(psmouse, FSP_REG_ONPAD_CTL, val))
408 if (fsp_reg_write(psmouse, FSP_REG_SYSCTL5, v2))
419 static ssize_t fsp_attr_set_setreg(struct psmouse *psmouse, void *data,
437 if (fsp_reg_write_enable(psmouse, true))
440 retval = fsp_reg_write(psmouse, reg, val) < 0 ? -EIO : count;
442 fsp_reg_write_enable(psmouse, false);
449 static ssize_t fsp_attr_show_getreg(struct psmouse *psmouse,
452 struct fsp_data *pad = psmouse->private;
462 static ssize_t fsp_attr_set_getreg(struct psmouse *psmouse, void *data,
465 struct fsp_data *pad = psmouse->private;
476 if (fsp_reg_read(psmouse, reg, &val))
488 static ssize_t fsp_attr_show_pagereg(struct psmouse *psmouse,
493 if (fsp_page_reg_read(psmouse, &val))
499 static ssize_t fsp_attr_set_pagereg(struct psmouse *psmouse, void *data,
512 if (fsp_page_reg_write(psmouse, val))
521 static ssize_t fsp_attr_show_vscroll(struct psmouse *psmouse,
524 struct fsp_data *pad = psmouse->private;
529 static ssize_t fsp_attr_set_vscroll(struct psmouse *psmouse, void *data,
542 fsp_onpad_vscr(psmouse, val);
550 static ssize_t fsp_attr_show_hscroll(struct psmouse *psmouse,
553 struct fsp_data *pad = psmouse->private;
558 static ssize_t fsp_attr_set_hscroll(struct psmouse *psmouse, void *data,
571 fsp_onpad_hscr(psmouse, val);
579 static ssize_t fsp_attr_show_flags(struct psmouse *psmouse,
582 struct fsp_data *pad = psmouse->private;
588 static ssize_t fsp_attr_set_flags(struct psmouse *psmouse, void *data,
591 struct fsp_data *pad = psmouse->private;
612 static ssize_t fsp_attr_show_ver(struct psmouse *psmouse,
636 static void fsp_packet_debug(struct psmouse *psmouse, unsigned char packet[])
664 psmouse_dbg(psmouse,
671 psmouse_dbg(psmouse, "PS/2 packets/sec = %d\n", ps2_packet_cnt);
677 static void fsp_packet_debug(struct psmouse *psmouse, unsigned char packet[])
693 static psmouse_ret_t fsp_process_byte(struct psmouse *psmouse)
695 struct input_dev *dev = psmouse->dev;
696 struct fsp_data *ad = psmouse->private;
697 unsigned char *packet = psmouse->packet;
701 if (psmouse->pktcnt < 4)
708 fsp_packet_debug(psmouse, packet);
710 switch (psmouse->packet[0] >> FSP_PKT_TYPE_SHIFT) {
838 static int fsp_activate_protocol(struct psmouse *psmouse)
840 struct fsp_data *pad = psmouse->private;
841 struct ps2dev *ps2dev = &psmouse->ps2dev;
858 psmouse_err(psmouse,
865 if (fsp_reg_read(psmouse, FSP_REG_SYSCTL5, &val)) {
866 psmouse_err(psmouse,
871 if (fsp_get_buttons(psmouse, &pad->buttons)) {
872 psmouse_err(psmouse,
885 if (fsp_reg_write(psmouse, FSP_REG_SYSCTL5, val)) {
886 psmouse_err(psmouse,
895 if (fsp_opc_tag_enable(psmouse, true))
896 psmouse_warn(psmouse,
902 fsp_onpad_vscr(psmouse, true);
903 fsp_onpad_hscr(psmouse, true);
906 if (fsp_reg_write(psmouse, FSP_REG_SWC1,
911 psmouse_err(psmouse,
920 static int fsp_set_input_params(struct psmouse *psmouse)
922 struct input_dev *dev = psmouse->dev;
923 struct fsp_data *pad = psmouse->private;
962 int fsp_detect(struct psmouse *psmouse, bool set_properties)
966 if (fsp_reg_read(psmouse, FSP_REG_DEVICE_ID, &id))
973 psmouse->vendor = "Sentelic";
974 psmouse->name = "FingerSensingPad";
980 static void fsp_reset(struct psmouse *psmouse)
982 fsp_opc_tag_enable(psmouse, false);
983 fsp_onpad_vscr(psmouse, false);
984 fsp_onpad_hscr(psmouse, false);
987 static void fsp_disconnect(struct psmouse *psmouse)
989 sysfs_remove_group(&psmouse->ps2dev.serio->dev.kobj,
992 fsp_reset(psmouse);
993 kfree(psmouse->private);
996 static int fsp_reconnect(struct psmouse *psmouse)
1000 if (fsp_detect(psmouse, 0))
1003 if (fsp_get_version(psmouse, &version))
1006 if (fsp_activate_protocol(psmouse))
1012 int fsp_init(struct psmouse *psmouse)
1018 if (fsp_get_version(psmouse, &ver) ||
1019 fsp_get_revision(psmouse, &rev)) {
1024 fsp_get_sn(psmouse, &sn);
1027 psmouse_info(psmouse,
1031 psmouse->private = priv = kzalloc(sizeof(struct fsp_data), GFP_KERNEL);
1038 psmouse->protocol_handler = fsp_process_byte;
1039 psmouse->disconnect = fsp_disconnect;
1040 psmouse->reconnect = fsp_reconnect;
1041 psmouse->cleanup = fsp_reset;
1042 psmouse->pktsize = 4;
1044 error = fsp_activate_protocol(psmouse);
1049 error = fsp_set_input_params(psmouse);
1053 error = sysfs_create_group(&psmouse->ps2dev.serio->dev.kobj,
1056 psmouse_err(psmouse,
1064 kfree(psmouse->private);
1065 psmouse->private = NULL;