• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/input/mouse/

Lines Matching defs:psmouse

23 #include "psmouse.h"
115 static void alps_report_buttons(struct psmouse *psmouse,
142 static void alps_process_packet(struct psmouse *psmouse)
144 struct alps_data *priv = psmouse->private;
146 unsigned char *packet = psmouse->packet;
147 struct input_dev *dev = psmouse->dev;
187 alps_report_buttons(psmouse, dev2, dev, left, right, middle);
193 alps_report_buttons(psmouse, dev, dev2, left, right, middle);
244 static void alps_report_bare_ps2_packet(struct psmouse *psmouse,
248 struct alps_data *priv = psmouse->private;
252 alps_report_buttons(psmouse, dev2, psmouse->dev,
263 static psmouse_ret_t alps_handle_interleaved_ps2(struct psmouse *psmouse)
265 struct alps_data *priv = psmouse->private;
267 if (psmouse->pktcnt < 6)
270 if (psmouse->pktcnt == 6) {
274 * psmouse core times out itself. 20 ms should be enough
283 if (psmouse->packet[6] & 0x80) {
291 if (((psmouse->packet[3] |
292 psmouse->packet[4] |
293 psmouse->packet[5]) & 0x80) ||
294 (!alps_is_valid_first_byte(priv->i, psmouse->packet[6]))) {
297 psmouse->packet[3], psmouse->packet[4],
298 psmouse->packet[5], psmouse->packet[6]);
302 alps_process_packet(psmouse);
305 psmouse->packet[0] = psmouse->packet[6];
306 psmouse->pktcnt = 1;
326 alps_report_bare_ps2_packet(psmouse, &psmouse->packet[3],
336 psmouse->packet[3] = psmouse->packet[6] & 0xf7;
337 psmouse->pktcnt = 4;
345 struct psmouse *psmouse = (struct psmouse *)data;
347 serio_pause_rx(psmouse->ps2dev.serio);
349 if (psmouse->pktcnt == 6) {
356 if ((psmouse->packet[3] |
357 psmouse->packet[4] |
358 psmouse->packet[5]) & 0x80) {
361 psmouse->packet[3], psmouse->packet[4],
362 psmouse->packet[5]);
364 alps_process_packet(psmouse);
366 psmouse->pktcnt = 0;
369 serio_continue_rx(psmouse->ps2dev.serio);
372 static psmouse_ret_t alps_process_byte(struct psmouse *psmouse)
374 struct alps_data *priv = psmouse->private;
377 if ((psmouse->packet[0] & 0xc8) == 0x08) { /* PS/2 packet */
378 if (psmouse->pktcnt == 3) {
379 alps_report_bare_ps2_packet(psmouse, psmouse->packet,
389 psmouse->pktcnt >= 4 && (psmouse->packet[3] & 0x0f) == 0x0f) {
390 return alps_handle_interleaved_ps2(psmouse);
393 if (!alps_is_valid_first_byte(model, psmouse->packet[0])) {
395 psmouse->packet[0], model->mask0, model->byte0);
400 if (psmouse->pktcnt >= 2 && psmouse->pktcnt <= 6 &&
401 (psmouse->packet[psmouse->pktcnt - 1] & 0x80)) {
403 psmouse->pktcnt - 1, psmouse->packet[psmouse->pktcnt - 1]);
407 if (psmouse->pktcnt == 6) {
408 alps_process_packet(psmouse);
415 static const struct alps_model_info *alps_get_model(struct psmouse *psmouse, int *version)
417 struct ps2dev *ps2dev = &psmouse->ps2dev;
478 static int alps_passthrough_mode(struct psmouse *psmouse, bool enable)
480 struct ps2dev *ps2dev = &psmouse->ps2dev;
495 static int alps_absolute_mode(struct psmouse *psmouse)
497 struct ps2dev *ps2dev = &psmouse->ps2dev;
511 return ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_SETPOLL);
514 static int alps_get_status(struct psmouse *psmouse, char *param)
516 struct ps2dev *ps2dev = &psmouse->ps2dev;
539 static int alps_tap_mode(struct psmouse *psmouse, int enable)
541 struct ps2dev *ps2dev = &psmouse->ps2dev;
552 if (alps_get_status(psmouse, param))
562 static int alps_poll(struct psmouse *psmouse)
564 struct alps_data *priv = psmouse->private;
569 alps_passthrough_mode(psmouse, true);
571 poll_failed = ps2_command(&psmouse->ps2dev, buf,
572 PSMOUSE_CMD_POLL | (psmouse->pktsize << 8)) < 0;
575 alps_passthrough_mode(psmouse, false);
580 if ((psmouse->badbyte & 0xc8) == 0x08) {
584 if (ps2_command(&psmouse->ps2dev, buf, PSMOUSE_CMD_POLL | (3 << 8)))
588 memcpy(psmouse->packet, buf, sizeof(buf));
592 static int alps_hw_init(struct psmouse *psmouse)
594 struct alps_data *priv = psmouse->private;
598 alps_passthrough_mode(psmouse, true)) {
602 if (alps_tap_mode(psmouse, true)) {
607 if (alps_absolute_mode(psmouse)) {
613 alps_passthrough_mode(psmouse, false)) {
618 if (ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_SETSTREAM)) {
626 static int alps_reconnect(struct psmouse *psmouse)
630 psmouse_reset(psmouse);
632 model = alps_get_model(psmouse, NULL);
636 return alps_hw_init(psmouse);
639 static void alps_disconnect(struct psmouse *psmouse)
641 struct alps_data *priv = psmouse->private;
643 psmouse_reset(psmouse);
649 int alps_init(struct psmouse *psmouse)
653 struct input_dev *dev1 = psmouse->dev, *dev2;
662 setup_timer(&priv->timer, alps_flush_packet, (unsigned long)psmouse);
664 psmouse->private = priv;
666 model = alps_get_model(psmouse, &version);
672 if (alps_hw_init(psmouse))
676 * Undo part of setup done for us by psmouse core since touchpad
716 snprintf(priv->phys, sizeof(priv->phys), "%s/input1", psmouse->ps2dev.serio->phys);
723 dev2->dev.parent = &psmouse->ps2dev.serio->dev;
733 psmouse->protocol_handler = alps_process_byte;
734 psmouse->poll = alps_poll;
735 psmouse->disconnect = alps_disconnect;
736 psmouse->reconnect = alps_reconnect;
737 psmouse->pktsize = 6;
740 psmouse->resync_time = 0;
745 psmouse_reset(psmouse);
748 psmouse->private = NULL;
752 int alps_detect(struct psmouse *psmouse, bool set_properties)
757 model = alps_get_model(psmouse, &version);
762 psmouse->vendor = "ALPS";
763 psmouse->name = model->flags & ALPS_DUALPOINT ?
765 psmouse->model = version;