Lines Matching refs:psmouse
19 #include "psmouse.h"
35 int focaltech_detect(struct psmouse *psmouse, bool set_properties)
37 if (!psmouse_matches_pnp_id(psmouse, focaltech_pnp_ids))
41 psmouse->vendor = "FocalTech";
42 psmouse->name = "Touchpad";
115 static void focaltech_report_state(struct psmouse *psmouse)
117 struct focaltech_data *priv = psmouse->private;
119 struct input_dev *dev = psmouse->dev;
149 static void focaltech_process_touch_packet(struct psmouse *psmouse,
152 struct focaltech_data *priv = psmouse->private;
173 static void focaltech_process_abs_packet(struct psmouse *psmouse,
176 struct focaltech_data *priv = psmouse->private;
182 psmouse_err(psmouse, "Invalid finger in abs packet: %d\n",
195 static void focaltech_process_rel_packet(struct psmouse *psmouse,
198 struct focaltech_data *priv = psmouse->private;
208 psmouse_err(psmouse, "First finger in rel packet invalid: %d\n",
226 static void focaltech_process_packet(struct psmouse *psmouse)
228 unsigned char *packet = psmouse->packet;
232 focaltech_process_touch_packet(psmouse, packet);
236 focaltech_process_abs_packet(psmouse, packet);
240 focaltech_process_rel_packet(psmouse, packet);
244 psmouse_err(psmouse, "Unknown packet type: %02x\n", packet[0]);
248 focaltech_report_state(psmouse);
251 static psmouse_ret_t focaltech_process_byte(struct psmouse *psmouse)
253 if (psmouse->pktcnt >= 6) { /* Full packet received */
254 focaltech_process_packet(psmouse);
265 static int focaltech_switch_protocol(struct psmouse *psmouse)
267 struct ps2dev *ps2dev = &psmouse->ps2dev;
293 static void focaltech_reset(struct psmouse *psmouse)
295 ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_RESET_DIS);
296 psmouse_reset(psmouse);
299 static void focaltech_disconnect(struct psmouse *psmouse)
301 focaltech_reset(psmouse);
302 kfree(psmouse->private);
303 psmouse->private = NULL;
306 static int focaltech_reconnect(struct psmouse *psmouse)
310 focaltech_reset(psmouse);
312 error = focaltech_switch_protocol(psmouse);
314 psmouse_err(psmouse, "Unable to initialize the device\n");
321 static void focaltech_set_input_params(struct psmouse *psmouse)
323 struct input_dev *dev = psmouse->dev;
324 struct focaltech_data *priv = psmouse->private;
327 * Undo part of setup done for us by psmouse core since touchpad
373 static int focaltech_read_size(struct psmouse *psmouse)
375 struct ps2dev *ps2dev = &psmouse->ps2dev;
376 struct focaltech_data *priv = psmouse->private;
389 static void focaltech_set_resolution(struct psmouse *psmouse,
395 static void focaltech_set_rate(struct psmouse *psmouse, unsigned int rate)
400 static void focaltech_set_scale(struct psmouse *psmouse,
406 int focaltech_init(struct psmouse *psmouse)
411 psmouse->private = priv = kzalloc(sizeof(struct focaltech_data),
416 focaltech_reset(psmouse);
418 error = focaltech_read_size(psmouse);
420 psmouse_err(psmouse,
425 error = focaltech_switch_protocol(psmouse);
427 psmouse_err(psmouse, "Unable to initialize the device\n");
431 focaltech_set_input_params(psmouse);
433 psmouse->protocol_handler = focaltech_process_byte;
434 psmouse->pktsize = 6;
435 psmouse->disconnect = focaltech_disconnect;
436 psmouse->reconnect = focaltech_reconnect;
437 psmouse->cleanup = focaltech_reset;
439 psmouse->resync_time = 0;
445 psmouse->set_resolution = focaltech_set_resolution;
446 psmouse->set_rate = focaltech_set_rate;
447 psmouse->set_scale = focaltech_set_scale;
452 focaltech_reset(psmouse);