Lines Matching refs:psmouse

82 			(void *) offsetof(struct psmouse, rate),
85 (void *) offsetof(struct psmouse, resolution),
88 (void *) offsetof(struct psmouse, resetafter),
91 (void *) offsetof(struct psmouse, resync_time),
124 int (*detect)(struct psmouse *, bool);
125 int (*init)(struct psmouse *);
133 psmouse_ret_t psmouse_process_byte(struct psmouse *psmouse) in psmouse_process_byte() argument
135 struct input_dev *dev = psmouse->dev; in psmouse_process_byte()
136 unsigned char *packet = psmouse->packet; in psmouse_process_byte()
138 if (psmouse->pktcnt < psmouse->pktsize) in psmouse_process_byte()
149 if (psmouse->type == PSMOUSE_IMPS || psmouse->type == PSMOUSE_GENPS) in psmouse_process_byte()
156 if (psmouse->type == PSMOUSE_IMEX) { in psmouse_process_byte()
177 if (psmouse->type == PSMOUSE_GENPS) { in psmouse_process_byte()
185 if (psmouse->type == PSMOUSE_THINKPS) { in psmouse_process_byte()
195 if (psmouse->type == PSMOUSE_CORTRON) { in psmouse_process_byte()
216 void psmouse_queue_work(struct psmouse *psmouse, struct delayed_work *work, in psmouse_queue_work() argument
226 static inline void __psmouse_set_state(struct psmouse *psmouse, enum psmouse_state new_state) in __psmouse_set_state() argument
228 psmouse->state = new_state; in __psmouse_set_state()
229 psmouse->pktcnt = psmouse->out_of_sync_cnt = 0; in __psmouse_set_state()
230 psmouse->ps2dev.flags = 0; in __psmouse_set_state()
231 psmouse->last = jiffies; in __psmouse_set_state()
241 void psmouse_set_state(struct psmouse *psmouse, enum psmouse_state new_state) in psmouse_set_state() argument
243 serio_pause_rx(psmouse->ps2dev.serio); in psmouse_set_state()
244 __psmouse_set_state(psmouse, new_state); in psmouse_set_state()
245 serio_continue_rx(psmouse->ps2dev.serio); in psmouse_set_state()
253 static int psmouse_handle_byte(struct psmouse *psmouse) in psmouse_handle_byte() argument
255 psmouse_ret_t rc = psmouse->protocol_handler(psmouse); in psmouse_handle_byte()
259 if (psmouse->state == PSMOUSE_ACTIVATED) { in psmouse_handle_byte()
260 psmouse_warn(psmouse, in psmouse_handle_byte()
262 psmouse->name, psmouse->phys, in psmouse_handle_byte()
263 psmouse->pktcnt); in psmouse_handle_byte()
264 if (++psmouse->out_of_sync_cnt == psmouse->resetafter) { in psmouse_handle_byte()
265 __psmouse_set_state(psmouse, PSMOUSE_IGNORE); in psmouse_handle_byte()
266 psmouse_notice(psmouse, in psmouse_handle_byte()
268 serio_reconnect(psmouse->ps2dev.serio); in psmouse_handle_byte()
272 psmouse->pktcnt = 0; in psmouse_handle_byte()
276 psmouse->pktcnt = 0; in psmouse_handle_byte()
277 if (psmouse->out_of_sync_cnt) { in psmouse_handle_byte()
278 psmouse->out_of_sync_cnt = 0; in psmouse_handle_byte()
279 psmouse_notice(psmouse, in psmouse_handle_byte()
281 psmouse->name, psmouse->phys); in psmouse_handle_byte()
299 struct psmouse *psmouse = serio_get_drvdata(serio); in psmouse_interrupt() local
301 if (psmouse->state == PSMOUSE_IGNORE) in psmouse_interrupt()
305 ((flags & SERIO_PARITY) && !psmouse->ignore_parity))) { in psmouse_interrupt()
307 if (psmouse->state == PSMOUSE_ACTIVATED) in psmouse_interrupt()
308 psmouse_warn(psmouse, in psmouse_interrupt()
312 ps2_cmd_aborted(&psmouse->ps2dev); in psmouse_interrupt()
316 if (unlikely(psmouse->ps2dev.flags & PS2_FLAG_ACK)) in psmouse_interrupt()
317 if (ps2_handle_ack(&psmouse->ps2dev, data)) in psmouse_interrupt()
320 if (unlikely(psmouse->ps2dev.flags & PS2_FLAG_CMD)) in psmouse_interrupt()
321 if (ps2_handle_response(&psmouse->ps2dev, data)) in psmouse_interrupt()
324 if (psmouse->state <= PSMOUSE_RESYNCING) in psmouse_interrupt()
327 if (psmouse->state == PSMOUSE_ACTIVATED && in psmouse_interrupt()
328 psmouse->pktcnt && time_after(jiffies, psmouse->last + HZ/2)) { in psmouse_interrupt()
329 psmouse_info(psmouse, "%s at %s lost synchronization, throwing %d bytes away.\n", in psmouse_interrupt()
330 psmouse->name, psmouse->phys, psmouse->pktcnt); in psmouse_interrupt()
331 psmouse->badbyte = psmouse->packet[0]; in psmouse_interrupt()
332 __psmouse_set_state(psmouse, PSMOUSE_RESYNCING); in psmouse_interrupt()
333 psmouse_queue_work(psmouse, &psmouse->resync_work, 0); in psmouse_interrupt()
337 psmouse->packet[psmouse->pktcnt++] = data; in psmouse_interrupt()
341 if (unlikely(psmouse->packet[0] == PSMOUSE_RET_BAT && psmouse->pktcnt <= 2)) { in psmouse_interrupt()
342 if (psmouse->pktcnt == 1) { in psmouse_interrupt()
343 psmouse->last = jiffies; in psmouse_interrupt()
347 if (psmouse->packet[1] == PSMOUSE_RET_ID || in psmouse_interrupt()
348 (psmouse->type == PSMOUSE_HGPK && in psmouse_interrupt()
349 psmouse->packet[1] == PSMOUSE_RET_BAT)) { in psmouse_interrupt()
350 __psmouse_set_state(psmouse, PSMOUSE_IGNORE); in psmouse_interrupt()
357 psmouse->pktcnt = 1; in psmouse_interrupt()
358 if (psmouse_handle_byte(psmouse)) in psmouse_interrupt()
361 psmouse->packet[psmouse->pktcnt++] = data; in psmouse_interrupt()
367 if (psmouse->state == PSMOUSE_ACTIVATED && in psmouse_interrupt()
368 psmouse->pktcnt == 1 && psmouse->resync_time && in psmouse_interrupt()
369 time_after(jiffies, psmouse->last + psmouse->resync_time * HZ)) { in psmouse_interrupt()
370 psmouse->badbyte = psmouse->packet[0]; in psmouse_interrupt()
371 __psmouse_set_state(psmouse, PSMOUSE_RESYNCING); in psmouse_interrupt()
372 psmouse_queue_work(psmouse, &psmouse->resync_work, 0); in psmouse_interrupt()
376 psmouse->last = jiffies; in psmouse_interrupt()
377 psmouse_handle_byte(psmouse); in psmouse_interrupt()
391 int psmouse_sliced_command(struct psmouse *psmouse, unsigned char command) in psmouse_sliced_command() argument
395 if (ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_SETSCALE11)) in psmouse_sliced_command()
400 if (ps2_command(&psmouse->ps2dev, &d, PSMOUSE_CMD_SETRES)) in psmouse_sliced_command()
411 int psmouse_reset(struct psmouse *psmouse) in psmouse_reset() argument
415 if (ps2_command(&psmouse->ps2dev, param, PSMOUSE_CMD_RESET_BAT)) in psmouse_reset()
428 void psmouse_set_resolution(struct psmouse *psmouse, unsigned int resolution) in psmouse_set_resolution() argument
437 ps2_command(&psmouse->ps2dev, &p, PSMOUSE_CMD_SETRES); in psmouse_set_resolution()
438 psmouse->resolution = 25 << p; in psmouse_set_resolution()
445 static void psmouse_set_rate(struct psmouse *psmouse, unsigned int rate) in psmouse_set_rate() argument
453 ps2_command(&psmouse->ps2dev, &r, PSMOUSE_CMD_SETRATE); in psmouse_set_rate()
454 psmouse->rate = r; in psmouse_set_rate()
461 static void psmouse_set_scale(struct psmouse *psmouse, enum psmouse_scale scale) in psmouse_set_scale() argument
463 ps2_command(&psmouse->ps2dev, NULL, in psmouse_set_scale()
472 static int psmouse_poll(struct psmouse *psmouse) in psmouse_poll() argument
474 return ps2_command(&psmouse->ps2dev, psmouse->packet, in psmouse_poll()
475 PSMOUSE_CMD_POLL | (psmouse->pktsize << 8)); in psmouse_poll()
492 bool psmouse_matches_pnp_id(struct psmouse *psmouse, const char * const ids[]) in psmouse_matches_pnp_id() argument
494 struct serio *serio = psmouse->ps2dev.serio; in psmouse_matches_pnp_id()
522 static int genius_detect(struct psmouse *psmouse, bool set_properties) in genius_detect() argument
524 struct ps2dev *ps2dev = &psmouse->ps2dev; in genius_detect()
538 __set_bit(BTN_MIDDLE, psmouse->dev->keybit); in genius_detect()
539 __set_bit(BTN_EXTRA, psmouse->dev->keybit); in genius_detect()
540 __set_bit(BTN_SIDE, psmouse->dev->keybit); in genius_detect()
541 __set_bit(REL_WHEEL, psmouse->dev->relbit); in genius_detect()
543 psmouse->vendor = "Genius"; in genius_detect()
544 psmouse->name = "Mouse"; in genius_detect()
545 psmouse->pktsize = 4; in genius_detect()
554 static int intellimouse_detect(struct psmouse *psmouse, bool set_properties) in intellimouse_detect() argument
556 struct ps2dev *ps2dev = &psmouse->ps2dev; in intellimouse_detect()
571 __set_bit(BTN_MIDDLE, psmouse->dev->keybit); in intellimouse_detect()
572 __set_bit(REL_WHEEL, psmouse->dev->relbit); in intellimouse_detect()
574 if (!psmouse->vendor) in intellimouse_detect()
575 psmouse->vendor = "Generic"; in intellimouse_detect()
576 if (!psmouse->name) in intellimouse_detect()
577 psmouse->name = "Wheel Mouse"; in intellimouse_detect()
578 psmouse->pktsize = 4; in intellimouse_detect()
587 static int im_explorer_detect(struct psmouse *psmouse, bool set_properties) in im_explorer_detect() argument
589 struct ps2dev *ps2dev = &psmouse->ps2dev; in im_explorer_detect()
592 intellimouse_detect(psmouse, 0); in im_explorer_detect()
614 __set_bit(BTN_MIDDLE, psmouse->dev->keybit); in im_explorer_detect()
615 __set_bit(REL_WHEEL, psmouse->dev->relbit); in im_explorer_detect()
616 __set_bit(REL_HWHEEL, psmouse->dev->relbit); in im_explorer_detect()
617 __set_bit(BTN_SIDE, psmouse->dev->keybit); in im_explorer_detect()
618 __set_bit(BTN_EXTRA, psmouse->dev->keybit); in im_explorer_detect()
620 if (!psmouse->vendor) in im_explorer_detect()
621 psmouse->vendor = "Generic"; in im_explorer_detect()
622 if (!psmouse->name) in im_explorer_detect()
623 psmouse->name = "Explorer Mouse"; in im_explorer_detect()
624 psmouse->pktsize = 4; in im_explorer_detect()
633 static int thinking_detect(struct psmouse *psmouse, bool set_properties) in thinking_detect() argument
635 struct ps2dev *ps2dev = &psmouse->ps2dev; in thinking_detect()
654 __set_bit(BTN_MIDDLE, psmouse->dev->keybit); in thinking_detect()
655 __set_bit(BTN_EXTRA, psmouse->dev->keybit); in thinking_detect()
657 psmouse->vendor = "Kensington"; in thinking_detect()
658 psmouse->name = "ThinkingMouse"; in thinking_detect()
667 static int ps2bare_detect(struct psmouse *psmouse, bool set_properties) in ps2bare_detect() argument
670 if (!psmouse->vendor) in ps2bare_detect()
671 psmouse->vendor = "Generic"; in ps2bare_detect()
672 if (!psmouse->name) in ps2bare_detect()
673 psmouse->name = "Mouse"; in ps2bare_detect()
679 __set_bit(BTN_MIDDLE, psmouse->dev->keybit); in ps2bare_detect()
689 static int cortron_detect(struct psmouse *psmouse, bool set_properties) in cortron_detect() argument
692 psmouse->vendor = "Cortron"; in cortron_detect()
693 psmouse->name = "PS/2 Trackball"; in cortron_detect()
695 __set_bit(BTN_MIDDLE, psmouse->dev->keybit); in cortron_detect()
696 __set_bit(BTN_SIDE, psmouse->dev->keybit); in cortron_detect()
707 static void psmouse_apply_defaults(struct psmouse *psmouse) in psmouse_apply_defaults() argument
709 struct input_dev *input_dev = psmouse->dev; in psmouse_apply_defaults()
728 psmouse->set_rate = psmouse_set_rate; in psmouse_apply_defaults()
729 psmouse->set_resolution = psmouse_set_resolution; in psmouse_apply_defaults()
730 psmouse->set_scale = psmouse_set_scale; in psmouse_apply_defaults()
731 psmouse->poll = psmouse_poll; in psmouse_apply_defaults()
732 psmouse->protocol_handler = psmouse_process_byte; in psmouse_apply_defaults()
733 psmouse->pktsize = 3; in psmouse_apply_defaults()
734 psmouse->reconnect = NULL; in psmouse_apply_defaults()
735 psmouse->disconnect = NULL; in psmouse_apply_defaults()
736 psmouse->cleanup = NULL; in psmouse_apply_defaults()
737 psmouse->pt_activate = NULL; in psmouse_apply_defaults()
738 psmouse->pt_deactivate = NULL; in psmouse_apply_defaults()
745 static int psmouse_do_detect(int (*detect)(struct psmouse *psmouse, in psmouse_do_detect() argument
747 struct psmouse *psmouse, bool set_properties) in psmouse_do_detect()
750 psmouse_apply_defaults(psmouse); in psmouse_do_detect()
752 return detect(psmouse, set_properties); in psmouse_do_detect()
760 static int psmouse_extensions(struct psmouse *psmouse, in psmouse_extensions() argument
766 if (psmouse_do_detect(focaltech_detect, psmouse, set_properties) == 0) { in psmouse_extensions()
768 if (!set_properties || focaltech_init(psmouse) == 0) { in psmouse_extensions()
787 if (psmouse_do_detect(lifebook_detect, psmouse, set_properties) == 0) { in psmouse_extensions()
789 if (!set_properties || lifebook_init(psmouse) == 0) in psmouse_extensions()
794 if (psmouse_do_detect(vmmouse_detect, psmouse, set_properties) == 0) { in psmouse_extensions()
796 if (!set_properties || vmmouse_init(psmouse) == 0) in psmouse_extensions()
807 psmouse_do_detect(thinking_detect, psmouse, set_properties) == 0) { in psmouse_extensions()
817 psmouse_do_detect(synaptics_detect, psmouse, set_properties) == 0) { in psmouse_extensions()
826 (!set_properties || synaptics_init(psmouse) == 0)) { in psmouse_extensions()
840 synaptics_reset(psmouse); in psmouse_extensions()
849 cypress_detect(psmouse, set_properties) == 0) { in psmouse_extensions()
851 if (cypress_init(psmouse) == 0) in psmouse_extensions()
869 ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_RESET_DIS); in psmouse_extensions()
871 psmouse, set_properties) == 0) { in psmouse_extensions()
872 if (!set_properties || alps_init(psmouse) == 0) in psmouse_extensions()
885 psmouse_do_detect(hgpk_detect, psmouse, set_properties) == 0) { in psmouse_extensions()
886 if (!set_properties || hgpk_init(psmouse) == 0) in psmouse_extensions()
898 psmouse_do_detect(elantech_detect, psmouse, set_properties) == 0) { in psmouse_extensions()
899 if (!set_properties || elantech_init(psmouse) == 0) in psmouse_extensions()
909 psmouse, set_properties) == 0) in psmouse_extensions()
913 psmouse, set_properties) == 0) in psmouse_extensions()
917 psmouse, set_properties) == 0) in psmouse_extensions()
921 psmouse, set_properties) == 0) in psmouse_extensions()
931 psmouse, set_properties) == 0) { in psmouse_extensions()
932 if (!set_properties || fsp_init(psmouse) == 0) in psmouse_extensions()
946 ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_RESET_DIS); in psmouse_extensions()
947 psmouse_reset(psmouse); in psmouse_extensions()
951 psmouse, set_properties) == 0) { in psmouse_extensions()
957 psmouse, set_properties) == 0) { in psmouse_extensions()
965 psmouse_do_detect(ps2bare_detect, psmouse, set_properties); in psmouse_extensions()
974 psmouse_reset(psmouse); in psmouse_extensions()
1174 static int psmouse_probe(struct psmouse *psmouse) in psmouse_probe() argument
1176 struct ps2dev *ps2dev = &psmouse->ps2dev; in psmouse_probe()
1199 psmouse_warn(psmouse, "Failed to reset mouse on %s\n", in psmouse_probe()
1209 static void psmouse_initialize(struct psmouse *psmouse) in psmouse_initialize() argument
1216 psmouse->set_rate(psmouse, psmouse->rate); in psmouse_initialize()
1217 psmouse->set_resolution(psmouse, psmouse->resolution); in psmouse_initialize()
1218 psmouse->set_scale(psmouse, PSMOUSE_SCALE11); in psmouse_initialize()
1226 int psmouse_activate(struct psmouse *psmouse) in psmouse_activate() argument
1228 if (ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_ENABLE)) { in psmouse_activate()
1229 psmouse_warn(psmouse, "Failed to enable mouse on %s\n", in psmouse_activate()
1230 psmouse->ps2dev.serio->phys); in psmouse_activate()
1234 psmouse_set_state(psmouse, PSMOUSE_ACTIVATED); in psmouse_activate()
1243 int psmouse_deactivate(struct psmouse *psmouse) in psmouse_deactivate() argument
1245 if (ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_DISABLE)) { in psmouse_deactivate()
1246 psmouse_warn(psmouse, "Failed to deactivate mouse on %s\n", in psmouse_deactivate()
1247 psmouse->ps2dev.serio->phys); in psmouse_deactivate()
1251 psmouse_set_state(psmouse, PSMOUSE_CMD_MODE); in psmouse_deactivate()
1262 struct psmouse *parent = NULL, *psmouse = in psmouse_resync() local
1263 container_of(work, struct psmouse, resync_work.work); in psmouse_resync()
1264 struct serio *serio = psmouse->ps2dev.serio; in psmouse_resync()
1271 if (psmouse->state != PSMOUSE_RESYNCING) in psmouse_resync()
1289 psmouse->num_resyncs++; in psmouse_resync()
1291 if (ps2_sendbyte(&psmouse->ps2dev, PSMOUSE_CMD_DISABLE, 20)) { in psmouse_resync()
1292 if (psmouse->num_resyncs < 3 || psmouse->acks_disable_command) in psmouse_resync()
1295 psmouse->acks_disable_command = true; in psmouse_resync()
1305 if (psmouse->poll(psmouse)) in psmouse_resync()
1308 psmouse_set_state(psmouse, PSMOUSE_CMD_MODE); in psmouse_resync()
1309 for (i = 0; i < psmouse->pktsize; i++) { in psmouse_resync()
1310 psmouse->pktcnt++; in psmouse_resync()
1311 rc = psmouse->protocol_handler(psmouse); in psmouse_resync()
1317 psmouse_set_state(psmouse, PSMOUSE_RESYNCING); in psmouse_resync()
1326 if (!ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_ENABLE)) { in psmouse_resync()
1334 psmouse_warn(psmouse, "failed to re-enable mouse on %s\n", in psmouse_resync()
1335 psmouse->ps2dev.serio->phys); in psmouse_resync()
1340 psmouse_set_state(psmouse, PSMOUSE_IGNORE); in psmouse_resync()
1341 psmouse_info(psmouse, in psmouse_resync()
1345 psmouse_set_state(psmouse, PSMOUSE_ACTIVATED); in psmouse_resync()
1359 struct psmouse *psmouse = serio_get_drvdata(serio); in psmouse_cleanup() local
1360 struct psmouse *parent = NULL; in psmouse_cleanup()
1369 psmouse_set_state(psmouse, PSMOUSE_INITIALIZING); in psmouse_cleanup()
1374 if (ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_DISABLE)) in psmouse_cleanup()
1375 psmouse_warn(psmouse, "Failed to disable mouse on %s\n", in psmouse_cleanup()
1376 psmouse->ps2dev.serio->phys); in psmouse_cleanup()
1378 if (psmouse->cleanup) in psmouse_cleanup()
1379 psmouse->cleanup(psmouse); in psmouse_cleanup()
1384 ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_RESET_DIS); in psmouse_cleanup()
1390 ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_ENABLE); in psmouse_cleanup()
1408 struct psmouse *psmouse, *parent = NULL; in psmouse_disconnect() local
1410 psmouse = serio_get_drvdata(serio); in psmouse_disconnect()
1416 psmouse_set_state(psmouse, PSMOUSE_CMD_MODE); in psmouse_disconnect()
1428 if (psmouse->disconnect) in psmouse_disconnect()
1429 psmouse->disconnect(psmouse); in psmouse_disconnect()
1434 psmouse_set_state(psmouse, PSMOUSE_IGNORE); in psmouse_disconnect()
1438 input_unregister_device(psmouse->dev); in psmouse_disconnect()
1439 kfree(psmouse); in psmouse_disconnect()
1447 static int psmouse_switch_protocol(struct psmouse *psmouse, in psmouse_switch_protocol() argument
1451 struct input_dev *input_dev = psmouse->dev; in psmouse_switch_protocol()
1453 input_dev->dev.parent = &psmouse->ps2dev.serio->dev; in psmouse_switch_protocol()
1456 psmouse_apply_defaults(psmouse); in psmouse_switch_protocol()
1458 if (proto->detect && proto->detect(psmouse, true) < 0) in psmouse_switch_protocol()
1461 if (proto->init && proto->init(psmouse) < 0) in psmouse_switch_protocol()
1464 psmouse->type = proto->type; in psmouse_switch_protocol()
1467 psmouse->type = psmouse_extensions(psmouse, in psmouse_switch_protocol()
1469 selected_proto = psmouse_protocol_by_type(psmouse->type); in psmouse_switch_protocol()
1472 psmouse->ignore_parity = selected_proto->ignore_parity; in psmouse_switch_protocol()
1479 if (psmouse->pktsize == 3) in psmouse_switch_protocol()
1480 psmouse->resync_time = 0; in psmouse_switch_protocol()
1488 if (psmouse->resync_time && psmouse->poll(psmouse)) in psmouse_switch_protocol()
1489 psmouse->resync_time = 0; in psmouse_switch_protocol()
1491 snprintf(psmouse->devname, sizeof(psmouse->devname), "%s %s %s", in psmouse_switch_protocol()
1492 selected_proto->name, psmouse->vendor, psmouse->name); in psmouse_switch_protocol()
1494 input_dev->name = psmouse->devname; in psmouse_switch_protocol()
1495 input_dev->phys = psmouse->phys; in psmouse_switch_protocol()
1498 input_dev->id.product = psmouse->type; in psmouse_switch_protocol()
1499 input_dev->id.version = psmouse->model; in psmouse_switch_protocol()
1510 struct psmouse *psmouse, *parent = NULL; in psmouse_connect() local
1525 psmouse = kzalloc(sizeof(struct psmouse), GFP_KERNEL); in psmouse_connect()
1527 if (!psmouse || !input_dev) in psmouse_connect()
1530 ps2_init(&psmouse->ps2dev, serio); in psmouse_connect()
1531 INIT_DELAYED_WORK(&psmouse->resync_work, psmouse_resync); in psmouse_connect()
1532 psmouse->dev = input_dev; in psmouse_connect()
1533 snprintf(psmouse->phys, sizeof(psmouse->phys), "%s/input0", serio->phys); in psmouse_connect()
1535 psmouse_set_state(psmouse, PSMOUSE_INITIALIZING); in psmouse_connect()
1537 serio_set_drvdata(serio, psmouse); in psmouse_connect()
1547 if (psmouse_probe(psmouse) < 0) { in psmouse_connect()
1552 psmouse->rate = psmouse_rate; in psmouse_connect()
1553 psmouse->resolution = psmouse_resolution; in psmouse_connect()
1554 psmouse->resetafter = psmouse_resetafter; in psmouse_connect()
1555 psmouse->resync_time = parent ? 0 : psmouse_resync_time; in psmouse_connect()
1556 psmouse->smartscroll = psmouse_smartscroll; in psmouse_connect()
1558 psmouse_switch_protocol(psmouse, NULL); in psmouse_connect()
1560 psmouse_set_state(psmouse, PSMOUSE_CMD_MODE); in psmouse_connect()
1561 psmouse_initialize(psmouse); in psmouse_connect()
1563 error = input_register_device(psmouse->dev); in psmouse_connect()
1574 psmouse_activate(psmouse); in psmouse_connect()
1587 input_unregister_device(psmouse->dev); in psmouse_connect()
1590 if (psmouse->disconnect) in psmouse_connect()
1591 psmouse->disconnect(psmouse); in psmouse_connect()
1592 psmouse_set_state(psmouse, PSMOUSE_IGNORE); in psmouse_connect()
1599 kfree(psmouse); in psmouse_connect()
1608 struct psmouse *psmouse = serio_get_drvdata(serio); in psmouse_reconnect() local
1609 struct psmouse *parent = NULL; in psmouse_reconnect()
1620 psmouse_set_state(psmouse, PSMOUSE_INITIALIZING); in psmouse_reconnect()
1622 if (psmouse->reconnect) { in psmouse_reconnect()
1623 if (psmouse->reconnect(psmouse)) in psmouse_reconnect()
1626 psmouse_reset(psmouse); in psmouse_reconnect()
1628 if (psmouse_probe(psmouse) < 0) in psmouse_reconnect()
1631 type = psmouse_extensions(psmouse, psmouse_max_proto, false); in psmouse_reconnect()
1632 if (psmouse->type != type) in psmouse_reconnect()
1640 psmouse_set_state(psmouse, PSMOUSE_CMD_MODE); in psmouse_reconnect()
1642 psmouse_initialize(psmouse); in psmouse_reconnect()
1647 psmouse_activate(psmouse); in psmouse_reconnect()
1695 struct psmouse *psmouse; in psmouse_attr_show_helper() local
1697 psmouse = serio_get_drvdata(serio); in psmouse_attr_show_helper()
1699 return attr->show(psmouse, attr->data, buf); in psmouse_attr_show_helper()
1707 struct psmouse *psmouse, *parent = NULL; in psmouse_attr_set_helper() local
1714 psmouse = serio_get_drvdata(serio); in psmouse_attr_set_helper()
1717 if (psmouse->state == PSMOUSE_IGNORE) { in psmouse_attr_set_helper()
1727 psmouse_deactivate(psmouse); in psmouse_attr_set_helper()
1730 retval = attr->set(psmouse, attr->data, buf, count); in psmouse_attr_set_helper()
1734 psmouse_activate(psmouse); in psmouse_attr_set_helper()
1746 static ssize_t psmouse_show_int_attr(struct psmouse *psmouse, void *offset, char *buf) in psmouse_show_int_attr() argument
1748 unsigned int *field = (unsigned int *)((char *)psmouse + (size_t)offset); in psmouse_show_int_attr()
1753 static ssize_t psmouse_set_int_attr(struct psmouse *psmouse, void *offset, const char *buf, size_t … in psmouse_set_int_attr() argument
1755 unsigned int *field = (unsigned int *)((char *)psmouse + (size_t)offset); in psmouse_set_int_attr()
1768 static ssize_t psmouse_attr_show_protocol(struct psmouse *psmouse, void *data, char *buf) in psmouse_attr_show_protocol() argument
1770 return sprintf(buf, "%s\n", psmouse_protocol_by_type(psmouse->type)->name); in psmouse_attr_show_protocol()
1773 static ssize_t psmouse_attr_set_protocol(struct psmouse *psmouse, void *data, const char *buf, size… in psmouse_attr_set_protocol() argument
1775 struct serio *serio = psmouse->ps2dev.serio; in psmouse_attr_set_protocol()
1776 struct psmouse *parent = NULL; in psmouse_attr_set_protocol()
1786 if (psmouse->type == proto->type) in psmouse_attr_set_protocol()
1795 psmouse_warn(psmouse, in psmouse_attr_set_protocol()
1810 if (psmouse->type == proto->type) { in psmouse_attr_set_protocol()
1822 old_dev = psmouse->dev; in psmouse_attr_set_protocol()
1823 old_proto = psmouse_protocol_by_type(psmouse->type); in psmouse_attr_set_protocol()
1825 if (psmouse->disconnect) in psmouse_attr_set_protocol()
1826 psmouse->disconnect(psmouse); in psmouse_attr_set_protocol()
1828 psmouse_set_state(psmouse, PSMOUSE_IGNORE); in psmouse_attr_set_protocol()
1830 psmouse->dev = new_dev; in psmouse_attr_set_protocol()
1831 psmouse_set_state(psmouse, PSMOUSE_INITIALIZING); in psmouse_attr_set_protocol()
1833 if (psmouse_switch_protocol(psmouse, proto) < 0) { in psmouse_attr_set_protocol()
1834 psmouse_reset(psmouse); in psmouse_attr_set_protocol()
1836 psmouse_switch_protocol(psmouse, &psmouse_protocols[0]); in psmouse_attr_set_protocol()
1839 psmouse_initialize(psmouse); in psmouse_attr_set_protocol()
1840 psmouse_set_state(psmouse, PSMOUSE_CMD_MODE); in psmouse_attr_set_protocol()
1842 error = input_register_device(psmouse->dev); in psmouse_attr_set_protocol()
1844 if (psmouse->disconnect) in psmouse_attr_set_protocol()
1845 psmouse->disconnect(psmouse); in psmouse_attr_set_protocol()
1847 psmouse_set_state(psmouse, PSMOUSE_IGNORE); in psmouse_attr_set_protocol()
1849 psmouse->dev = old_dev; in psmouse_attr_set_protocol()
1850 psmouse_set_state(psmouse, PSMOUSE_INITIALIZING); in psmouse_attr_set_protocol()
1851 psmouse_switch_protocol(psmouse, old_proto); in psmouse_attr_set_protocol()
1852 psmouse_initialize(psmouse); in psmouse_attr_set_protocol()
1853 psmouse_set_state(psmouse, PSMOUSE_CMD_MODE); in psmouse_attr_set_protocol()
1866 static ssize_t psmouse_attr_set_rate(struct psmouse *psmouse, void *data, const char *buf, size_t c… in psmouse_attr_set_rate() argument
1875 psmouse->set_rate(psmouse, value); in psmouse_attr_set_rate()
1879 static ssize_t psmouse_attr_set_resolution(struct psmouse *psmouse, void *data, const char *buf, si… in psmouse_attr_set_resolution() argument
1888 psmouse->set_resolution(psmouse, value); in psmouse_attr_set_resolution()