Lines Matching refs:psmouse
85 (void *) offsetof(struct psmouse, rate),
88 (void *) offsetof(struct psmouse, resolution),
91 (void *) offsetof(struct psmouse, resetafter),
94 (void *) offsetof(struct psmouse, resync_time),
119 struct psmouse *psmouse_from_serio(struct serio *serio) in psmouse_from_serio()
123 return container_of(ps2dev, struct psmouse, ps2dev); in psmouse_from_serio()
154 psmouse_ret_t psmouse_process_byte(struct psmouse *psmouse) in psmouse_process_byte() argument
156 struct input_dev *dev = psmouse->dev; in psmouse_process_byte()
157 u8 *packet = psmouse->packet; in psmouse_process_byte()
160 if (psmouse->pktcnt < psmouse->pktsize) in psmouse_process_byte()
165 switch (psmouse->protocol->type) { in psmouse_process_byte()
236 packet[0] |= psmouse->extra_buttons; in psmouse_process_byte()
244 void psmouse_queue_work(struct psmouse *psmouse, struct delayed_work *work, in psmouse_queue_work() argument
253 static inline void __psmouse_set_state(struct psmouse *psmouse, enum psmouse_state new_state) in __psmouse_set_state() argument
255 psmouse->state = new_state; in __psmouse_set_state()
256 psmouse->pktcnt = psmouse->out_of_sync_cnt = 0; in __psmouse_set_state()
257 psmouse->ps2dev.flags = 0; in __psmouse_set_state()
258 psmouse->last = jiffies; in __psmouse_set_state()
266 void psmouse_set_state(struct psmouse *psmouse, enum psmouse_state new_state) in psmouse_set_state() argument
268 serio_pause_rx(psmouse->ps2dev.serio); in psmouse_set_state()
269 __psmouse_set_state(psmouse, new_state); in psmouse_set_state()
270 serio_continue_rx(psmouse->ps2dev.serio); in psmouse_set_state()
277 static int psmouse_handle_byte(struct psmouse *psmouse) in psmouse_handle_byte() argument
279 psmouse_ret_t rc = psmouse->protocol_handler(psmouse); in psmouse_handle_byte()
283 if (psmouse->state == PSMOUSE_ACTIVATED) { in psmouse_handle_byte()
284 psmouse_warn(psmouse, in psmouse_handle_byte()
286 psmouse->name, psmouse->phys, in psmouse_handle_byte()
287 psmouse->pktcnt); in psmouse_handle_byte()
288 if (++psmouse->out_of_sync_cnt == psmouse->resetafter) { in psmouse_handle_byte()
289 __psmouse_set_state(psmouse, PSMOUSE_IGNORE); in psmouse_handle_byte()
290 psmouse_notice(psmouse, in psmouse_handle_byte()
292 serio_reconnect(psmouse->ps2dev.serio); in psmouse_handle_byte()
296 psmouse->pktcnt = 0; in psmouse_handle_byte()
300 psmouse->pktcnt = 0; in psmouse_handle_byte()
301 if (psmouse->out_of_sync_cnt) { in psmouse_handle_byte()
302 psmouse->out_of_sync_cnt = 0; in psmouse_handle_byte()
303 psmouse_notice(psmouse, in psmouse_handle_byte()
305 psmouse->name, psmouse->phys); in psmouse_handle_byte()
315 static void psmouse_handle_oob_data(struct psmouse *psmouse, u8 data) in psmouse_handle_oob_data() argument
317 switch (psmouse->oob_data_type) { in psmouse_handle_oob_data()
319 psmouse->oob_data_type = data; in psmouse_handle_oob_data()
323 psmouse_report_standard_buttons(psmouse->dev, data); in psmouse_handle_oob_data()
324 input_sync(psmouse->dev); in psmouse_handle_oob_data()
326 psmouse->extra_buttons = data; in psmouse_handle_oob_data()
327 psmouse->oob_data_type = PSMOUSE_OOB_NONE; in psmouse_handle_oob_data()
331 psmouse_warn(psmouse, in psmouse_handle_oob_data()
333 psmouse->oob_data_type); in psmouse_handle_oob_data()
334 psmouse->oob_data_type = PSMOUSE_OOB_NONE; in psmouse_handle_oob_data()
343 struct psmouse *psmouse = container_of(ps2dev, struct psmouse, ps2dev); in psmouse_pre_receive_byte() local
345 if (psmouse->state == PSMOUSE_IGNORE) in psmouse_pre_receive_byte()
350 !psmouse->protocol->ignore_parity))) { in psmouse_pre_receive_byte()
352 if (psmouse->state == PSMOUSE_ACTIVATED) in psmouse_pre_receive_byte()
353 psmouse_warn(psmouse, in psmouse_pre_receive_byte()
361 psmouse_handle_oob_data(psmouse, data); in psmouse_pre_receive_byte()
370 struct psmouse *psmouse = container_of(ps2dev, struct psmouse, ps2dev); in psmouse_receive_byte() local
374 if (psmouse->state <= PSMOUSE_RESYNCING) in psmouse_receive_byte()
377 if (psmouse->state == PSMOUSE_ACTIVATED && in psmouse_receive_byte()
378 psmouse->pktcnt && time_after(jiffies, psmouse->last + HZ/2)) { in psmouse_receive_byte()
379 psmouse_info(psmouse, "%s at %s lost synchronization, throwing %d bytes away.\n", in psmouse_receive_byte()
380 psmouse->name, psmouse->phys, psmouse->pktcnt); in psmouse_receive_byte()
381 psmouse->badbyte = psmouse->packet[0]; in psmouse_receive_byte()
382 __psmouse_set_state(psmouse, PSMOUSE_RESYNCING); in psmouse_receive_byte()
383 psmouse_queue_work(psmouse, &psmouse->resync_work, 0); in psmouse_receive_byte()
387 psmouse->packet[psmouse->pktcnt++] = data; in psmouse_receive_byte()
390 if (unlikely(psmouse->packet[0] == PSMOUSE_RET_BAT && psmouse->pktcnt <= 2)) { in psmouse_receive_byte()
391 if (psmouse->pktcnt == 1) { in psmouse_receive_byte()
392 psmouse->last = jiffies; in psmouse_receive_byte()
396 if (psmouse->packet[1] == PSMOUSE_RET_ID || in psmouse_receive_byte()
397 (psmouse->protocol->type == PSMOUSE_HGPK && in psmouse_receive_byte()
398 psmouse->packet[1] == PSMOUSE_RET_BAT)) { in psmouse_receive_byte()
399 __psmouse_set_state(psmouse, PSMOUSE_IGNORE); in psmouse_receive_byte()
405 psmouse->pktcnt = 1; in psmouse_receive_byte()
406 if (psmouse_handle_byte(psmouse)) in psmouse_receive_byte()
409 psmouse->packet[psmouse->pktcnt++] = data; in psmouse_receive_byte()
416 if (psmouse->state == PSMOUSE_ACTIVATED && in psmouse_receive_byte()
417 psmouse->pktcnt == 1 && psmouse->resync_time && in psmouse_receive_byte()
418 time_after(jiffies, psmouse->last + psmouse->resync_time * HZ)) { in psmouse_receive_byte()
419 psmouse->badbyte = psmouse->packet[0]; in psmouse_receive_byte()
420 __psmouse_set_state(psmouse, PSMOUSE_RESYNCING); in psmouse_receive_byte()
421 psmouse_queue_work(psmouse, &psmouse->resync_work, 0); in psmouse_receive_byte()
425 psmouse->last = jiffies; in psmouse_receive_byte()
426 psmouse_handle_byte(psmouse); in psmouse_receive_byte()
432 int psmouse_reset(struct psmouse *psmouse) in psmouse_reset() argument
437 error = ps2_command(&psmouse->ps2dev, param, PSMOUSE_CMD_RESET_BAT); in psmouse_reset()
450 void psmouse_set_resolution(struct psmouse *psmouse, unsigned int resolution) in psmouse_set_resolution() argument
459 ps2_command(&psmouse->ps2dev, &p, PSMOUSE_CMD_SETRES); in psmouse_set_resolution()
460 psmouse->resolution = 25 << p; in psmouse_set_resolution()
466 static void psmouse_set_rate(struct psmouse *psmouse, unsigned int rate) in psmouse_set_rate() argument
475 ps2_command(&psmouse->ps2dev, &r, PSMOUSE_CMD_SETRATE); in psmouse_set_rate()
476 psmouse->rate = r; in psmouse_set_rate()
482 static void psmouse_set_scale(struct psmouse *psmouse, enum psmouse_scale scale) in psmouse_set_scale() argument
484 ps2_command(&psmouse->ps2dev, NULL, in psmouse_set_scale()
492 static int psmouse_poll(struct psmouse *psmouse) in psmouse_poll() argument
494 return ps2_command(&psmouse->ps2dev, psmouse->packet, in psmouse_poll()
495 PSMOUSE_CMD_POLL | (psmouse->pktsize << 8)); in psmouse_poll()
512 bool psmouse_matches_pnp_id(struct psmouse *psmouse, const char * const ids[]) in psmouse_matches_pnp_id() argument
514 struct serio *serio = psmouse->ps2dev.serio; in psmouse_matches_pnp_id()
542 static int genius_detect(struct psmouse *psmouse, bool set_properties) in genius_detect() argument
544 struct ps2dev *ps2dev = &psmouse->ps2dev; in genius_detect()
558 __set_bit(BTN_MIDDLE, psmouse->dev->keybit); in genius_detect()
559 __set_bit(BTN_EXTRA, psmouse->dev->keybit); in genius_detect()
560 __set_bit(BTN_SIDE, psmouse->dev->keybit); in genius_detect()
561 __set_bit(REL_WHEEL, psmouse->dev->relbit); in genius_detect()
563 psmouse->vendor = "Genius"; in genius_detect()
564 psmouse->name = "Mouse"; in genius_detect()
565 psmouse->pktsize = 4; in genius_detect()
574 static int intellimouse_detect(struct psmouse *psmouse, bool set_properties) in intellimouse_detect() argument
576 struct ps2dev *ps2dev = &psmouse->ps2dev; in intellimouse_detect()
591 __set_bit(BTN_MIDDLE, psmouse->dev->keybit); in intellimouse_detect()
592 __set_bit(REL_WHEEL, psmouse->dev->relbit); in intellimouse_detect()
594 if (!psmouse->vendor) in intellimouse_detect()
595 psmouse->vendor = "Generic"; in intellimouse_detect()
596 if (!psmouse->name) in intellimouse_detect()
597 psmouse->name = "Wheel Mouse"; in intellimouse_detect()
598 psmouse->pktsize = 4; in intellimouse_detect()
607 static int im_explorer_detect(struct psmouse *psmouse, bool set_properties) in im_explorer_detect() argument
609 struct ps2dev *ps2dev = &psmouse->ps2dev; in im_explorer_detect()
612 intellimouse_detect(psmouse, 0); in im_explorer_detect()
634 __set_bit(BTN_MIDDLE, psmouse->dev->keybit); in im_explorer_detect()
635 __set_bit(REL_WHEEL, psmouse->dev->relbit); in im_explorer_detect()
636 __set_bit(REL_HWHEEL, psmouse->dev->relbit); in im_explorer_detect()
637 __set_bit(BTN_SIDE, psmouse->dev->keybit); in im_explorer_detect()
638 __set_bit(BTN_EXTRA, psmouse->dev->keybit); in im_explorer_detect()
640 if (!psmouse->vendor) in im_explorer_detect()
641 psmouse->vendor = "Generic"; in im_explorer_detect()
642 if (!psmouse->name) in im_explorer_detect()
643 psmouse->name = "Explorer Mouse"; in im_explorer_detect()
644 psmouse->pktsize = 4; in im_explorer_detect()
653 static int thinking_detect(struct psmouse *psmouse, bool set_properties) in thinking_detect() argument
655 struct ps2dev *ps2dev = &psmouse->ps2dev; in thinking_detect()
674 __set_bit(BTN_MIDDLE, psmouse->dev->keybit); in thinking_detect()
675 __set_bit(BTN_EXTRA, psmouse->dev->keybit); in thinking_detect()
677 psmouse->vendor = "Kensington"; in thinking_detect()
678 psmouse->name = "ThinkingMouse"; in thinking_detect()
687 static int ps2bare_detect(struct psmouse *psmouse, bool set_properties) in ps2bare_detect() argument
690 if (!psmouse->vendor) in ps2bare_detect()
691 psmouse->vendor = "Generic"; in ps2bare_detect()
692 if (!psmouse->name) in ps2bare_detect()
693 psmouse->name = "Mouse"; in ps2bare_detect()
699 input_set_capability(psmouse->dev, EV_KEY, BTN_MIDDLE); in ps2bare_detect()
709 static int cortron_detect(struct psmouse *psmouse, bool set_properties) in cortron_detect() argument
712 psmouse->vendor = "Cortron"; in cortron_detect()
713 psmouse->name = "PS/2 Trackball"; in cortron_detect()
715 __set_bit(BTN_MIDDLE, psmouse->dev->keybit); in cortron_detect()
716 __set_bit(BTN_SIDE, psmouse->dev->keybit); in cortron_detect()
960 static void psmouse_apply_defaults(struct psmouse *psmouse) in psmouse_apply_defaults() argument
962 struct input_dev *input_dev = psmouse->dev; in psmouse_apply_defaults()
978 psmouse->protocol = &psmouse_protocols[0]; in psmouse_apply_defaults()
980 psmouse->set_rate = psmouse_set_rate; in psmouse_apply_defaults()
981 psmouse->set_resolution = psmouse_set_resolution; in psmouse_apply_defaults()
982 psmouse->set_scale = psmouse_set_scale; in psmouse_apply_defaults()
983 psmouse->poll = psmouse_poll; in psmouse_apply_defaults()
984 psmouse->protocol_handler = psmouse_process_byte; in psmouse_apply_defaults()
985 psmouse->pktsize = 3; in psmouse_apply_defaults()
986 psmouse->reconnect = NULL; in psmouse_apply_defaults()
987 psmouse->fast_reconnect = NULL; in psmouse_apply_defaults()
988 psmouse->disconnect = NULL; in psmouse_apply_defaults()
989 psmouse->cleanup = NULL; in psmouse_apply_defaults()
990 psmouse->pt_activate = NULL; in psmouse_apply_defaults()
991 psmouse->pt_deactivate = NULL; in psmouse_apply_defaults()
994 static bool psmouse_do_detect(int (*detect)(struct psmouse *, bool), in psmouse_do_detect() argument
995 struct psmouse *psmouse, bool allow_passthrough, in psmouse_do_detect() argument
998 if (psmouse->ps2dev.serio->id.type == SERIO_PS_PSTHRU && in psmouse_do_detect()
1004 psmouse_apply_defaults(psmouse); in psmouse_do_detect()
1006 return detect(psmouse, set_properties) == 0; in psmouse_do_detect()
1009 static bool psmouse_try_protocol(struct psmouse *psmouse, in psmouse_try_protocol() argument
1020 if (!psmouse_do_detect(proto->detect, psmouse, proto->try_passthru, in psmouse_try_protocol()
1025 if (proto->init(psmouse) != 0) { in psmouse_try_protocol()
1044 static int psmouse_extensions(struct psmouse *psmouse, in psmouse_extensions() argument
1055 psmouse, false, set_properties)) { in psmouse_extensions()
1058 (!set_properties || focaltech_init(psmouse) == 0)) { in psmouse_extensions()
1076 if (psmouse_try_protocol(psmouse, PSMOUSE_LIFEBOOK, &max_proto, in psmouse_extensions()
1080 if (psmouse_try_protocol(psmouse, PSMOUSE_VMMOUSE, &max_proto, in psmouse_extensions()
1089 psmouse_try_protocol(psmouse, PSMOUSE_THINKPS, &max_proto, in psmouse_extensions()
1102 psmouse, false, set_properties)) { in psmouse_extensions()
1116 ret = synaptics_init(psmouse); in psmouse_extensions()
1134 synaptics_reset(psmouse); in psmouse_extensions()
1143 psmouse_try_protocol(psmouse, PSMOUSE_CYPRESS, &max_proto, in psmouse_extensions()
1150 ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_RESET_DIS); in psmouse_extensions()
1151 if (psmouse_try_protocol(psmouse, PSMOUSE_ALPS, in psmouse_extensions()
1158 psmouse_try_protocol(psmouse, PSMOUSE_HGPK, &max_proto, in psmouse_extensions()
1165 psmouse_try_protocol(psmouse, PSMOUSE_ELANTECH, in psmouse_extensions()
1170 ret = elantech_init(psmouse); in psmouse_extensions()
1176 if (psmouse_try_protocol(psmouse, PSMOUSE_GENPS, in psmouse_extensions()
1180 if (psmouse_try_protocol(psmouse, PSMOUSE_PS2PP, in psmouse_extensions()
1184 if (psmouse_try_protocol(psmouse, PSMOUSE_TRACKPOINT, in psmouse_extensions()
1188 if (psmouse_try_protocol(psmouse, PSMOUSE_TOUCHKIT_PS2, in psmouse_extensions()
1198 psmouse_try_protocol(psmouse, PSMOUSE_FSP, in psmouse_extensions()
1208 ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_RESET_DIS); in psmouse_extensions()
1209 psmouse_reset(psmouse); in psmouse_extensions()
1212 psmouse_try_protocol(psmouse, PSMOUSE_IMEX, in psmouse_extensions()
1218 psmouse_try_protocol(psmouse, PSMOUSE_IMPS, in psmouse_extensions()
1227 psmouse_try_protocol(psmouse, PSMOUSE_PS2, in psmouse_extensions()
1237 psmouse_reset(psmouse); in psmouse_extensions()
1246 static int psmouse_probe(struct psmouse *psmouse) in psmouse_probe() argument
1248 struct ps2dev *ps2dev = &psmouse->ps2dev; in psmouse_probe()
1273 psmouse_warn(psmouse, "Failed to reset mouse on %s: %d\n", in psmouse_probe()
1282 static void psmouse_initialize(struct psmouse *psmouse) in psmouse_initialize() argument
1288 psmouse->set_rate(psmouse, psmouse->rate); in psmouse_initialize()
1289 psmouse->set_resolution(psmouse, psmouse->resolution); in psmouse_initialize()
1290 psmouse->set_scale(psmouse, PSMOUSE_SCALE11); in psmouse_initialize()
1297 int psmouse_activate(struct psmouse *psmouse) in psmouse_activate() argument
1299 if (ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_ENABLE)) { in psmouse_activate()
1300 psmouse_warn(psmouse, "Failed to enable mouse on %s\n", in psmouse_activate()
1301 psmouse->ps2dev.serio->phys); in psmouse_activate()
1305 psmouse_set_state(psmouse, PSMOUSE_ACTIVATED); in psmouse_activate()
1313 int psmouse_deactivate(struct psmouse *psmouse) in psmouse_deactivate() argument
1317 error = ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_DISABLE); in psmouse_deactivate()
1319 psmouse_warn(psmouse, "Failed to deactivate mouse on %s: %d\n", in psmouse_deactivate()
1320 psmouse->ps2dev.serio->phys, error); in psmouse_deactivate()
1324 psmouse_set_state(psmouse, PSMOUSE_CMD_MODE); in psmouse_deactivate()
1333 struct psmouse *parent = NULL, *psmouse = in psmouse_resync() local
1334 container_of(work, struct psmouse, resync_work.work); in psmouse_resync()
1335 struct serio *serio = psmouse->ps2dev.serio; in psmouse_resync()
1342 if (psmouse->state != PSMOUSE_RESYNCING) in psmouse_resync()
1360 psmouse->num_resyncs++; in psmouse_resync()
1362 if (ps2_sendbyte(&psmouse->ps2dev, PSMOUSE_CMD_DISABLE, 20)) { in psmouse_resync()
1363 if (psmouse->num_resyncs < 3 || psmouse->acks_disable_command) in psmouse_resync()
1366 psmouse->acks_disable_command = true; in psmouse_resync()
1376 if (psmouse->poll(psmouse)) in psmouse_resync()
1379 psmouse_set_state(psmouse, PSMOUSE_CMD_MODE); in psmouse_resync()
1380 for (i = 0; i < psmouse->pktsize; i++) { in psmouse_resync()
1381 psmouse->pktcnt++; in psmouse_resync()
1382 rc = psmouse->protocol_handler(psmouse); in psmouse_resync()
1388 psmouse_set_state(psmouse, PSMOUSE_RESYNCING); in psmouse_resync()
1398 if (!ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_ENABLE)) { in psmouse_resync()
1406 psmouse_warn(psmouse, "failed to re-enable mouse on %s\n", in psmouse_resync()
1407 psmouse->ps2dev.serio->phys); in psmouse_resync()
1412 psmouse_set_state(psmouse, PSMOUSE_IGNORE); in psmouse_resync()
1413 psmouse_info(psmouse, in psmouse_resync()
1417 psmouse_set_state(psmouse, PSMOUSE_ACTIVATED); in psmouse_resync()
1430 struct psmouse *psmouse = psmouse_from_serio(serio); in psmouse_cleanup() local
1431 struct psmouse *parent = NULL; in psmouse_cleanup()
1440 psmouse_set_state(psmouse, PSMOUSE_INITIALIZING); in psmouse_cleanup()
1445 if (ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_DISABLE)) in psmouse_cleanup()
1446 psmouse_warn(psmouse, "Failed to disable mouse on %s\n", in psmouse_cleanup()
1447 psmouse->ps2dev.serio->phys); in psmouse_cleanup()
1449 if (psmouse->cleanup) in psmouse_cleanup()
1450 psmouse->cleanup(psmouse); in psmouse_cleanup()
1455 ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_RESET_DIS); in psmouse_cleanup()
1461 ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_ENABLE); in psmouse_cleanup()
1478 struct psmouse *psmouse = psmouse_from_serio(serio); in psmouse_disconnect() local
1479 struct psmouse *parent = NULL; in psmouse_disconnect()
1483 psmouse_set_state(psmouse, PSMOUSE_CMD_MODE); in psmouse_disconnect()
1495 if (psmouse->disconnect) in psmouse_disconnect()
1496 psmouse->disconnect(psmouse); in psmouse_disconnect()
1501 psmouse_set_state(psmouse, PSMOUSE_IGNORE); in psmouse_disconnect()
1506 if (psmouse->dev) in psmouse_disconnect()
1507 input_unregister_device(psmouse->dev); in psmouse_disconnect()
1509 kfree(psmouse); in psmouse_disconnect()
1517 static int psmouse_switch_protocol(struct psmouse *psmouse, in psmouse_switch_protocol() argument
1521 struct input_dev *input_dev = psmouse->dev; in psmouse_switch_protocol()
1524 input_dev->dev.parent = &psmouse->ps2dev.serio->dev; in psmouse_switch_protocol()
1527 psmouse_apply_defaults(psmouse); in psmouse_switch_protocol()
1529 if (proto->detect && proto->detect(psmouse, true) < 0) in psmouse_switch_protocol()
1532 if (proto->init && proto->init(psmouse) < 0) in psmouse_switch_protocol()
1537 type = psmouse_extensions(psmouse, psmouse_max_proto, true); in psmouse_switch_protocol()
1541 psmouse->protocol = selected_proto; in psmouse_switch_protocol()
1548 if (psmouse->pktsize == 3) in psmouse_switch_protocol()
1549 psmouse->resync_time = 0; in psmouse_switch_protocol()
1557 if (psmouse->resync_time && psmouse->poll(psmouse)) in psmouse_switch_protocol()
1558 psmouse->resync_time = 0; in psmouse_switch_protocol()
1560 snprintf(psmouse->devname, sizeof(psmouse->devname), "%s %s %s", in psmouse_switch_protocol()
1561 selected_proto->name, psmouse->vendor, psmouse->name); in psmouse_switch_protocol()
1563 input_dev->name = psmouse->devname; in psmouse_switch_protocol()
1564 input_dev->phys = psmouse->phys; in psmouse_switch_protocol()
1567 input_dev->id.product = psmouse->protocol->type; in psmouse_switch_protocol()
1568 input_dev->id.version = psmouse->model; in psmouse_switch_protocol()
1579 struct psmouse *psmouse, *parent = NULL; in psmouse_connect() local
1594 psmouse = kzalloc(sizeof(*psmouse), GFP_KERNEL); in psmouse_connect()
1596 if (!psmouse || !input_dev) in psmouse_connect()
1599 ps2_init(&psmouse->ps2dev, serio, in psmouse_connect()
1601 INIT_DELAYED_WORK(&psmouse->resync_work, psmouse_resync); in psmouse_connect()
1602 psmouse->dev = input_dev; in psmouse_connect()
1603 scnprintf(psmouse->phys, sizeof(psmouse->phys), "%s/input0", serio->phys); in psmouse_connect()
1605 psmouse_set_state(psmouse, PSMOUSE_INITIALIZING); in psmouse_connect()
1615 if (psmouse_probe(psmouse) < 0) { in psmouse_connect()
1620 psmouse->rate = psmouse_rate; in psmouse_connect()
1621 psmouse->resolution = psmouse_resolution; in psmouse_connect()
1622 psmouse->resetafter = psmouse_resetafter; in psmouse_connect()
1623 psmouse->resync_time = parent ? 0 : psmouse_resync_time; in psmouse_connect()
1624 psmouse->smartscroll = psmouse_smartscroll; in psmouse_connect()
1626 psmouse_switch_protocol(psmouse, NULL); in psmouse_connect()
1628 if (!psmouse->protocol->smbus_companion) { in psmouse_connect()
1629 psmouse_set_state(psmouse, PSMOUSE_CMD_MODE); in psmouse_connect()
1630 psmouse_initialize(psmouse); in psmouse_connect()
1638 psmouse->dev = input_dev = NULL; in psmouse_connect()
1648 if (!psmouse->protocol->smbus_companion) in psmouse_connect()
1649 psmouse_activate(psmouse); in psmouse_connect()
1660 if (psmouse->disconnect) in psmouse_connect()
1661 psmouse->disconnect(psmouse); in psmouse_connect()
1662 psmouse_set_state(psmouse, PSMOUSE_IGNORE); in psmouse_connect()
1669 kfree(psmouse); in psmouse_connect()
1677 struct psmouse *psmouse = psmouse_from_serio(serio); in __psmouse_reconnect() local
1678 struct psmouse *parent = NULL; in __psmouse_reconnect()
1679 int (*reconnect_handler)(struct psmouse *); in __psmouse_reconnect()
1686 reconnect_handler = psmouse->fast_reconnect; in __psmouse_reconnect()
1692 reconnect_handler = psmouse->reconnect; in __psmouse_reconnect()
1700 psmouse_set_state(psmouse, PSMOUSE_INITIALIZING); in __psmouse_reconnect()
1703 if (reconnect_handler(psmouse)) in __psmouse_reconnect()
1706 psmouse_reset(psmouse); in __psmouse_reconnect()
1708 if (psmouse_probe(psmouse) < 0) in __psmouse_reconnect()
1711 type = psmouse_extensions(psmouse, psmouse_max_proto, false); in __psmouse_reconnect()
1712 if (psmouse->protocol->type != type) in __psmouse_reconnect()
1720 if (!psmouse->protocol->smbus_companion) { in __psmouse_reconnect()
1721 psmouse_set_state(psmouse, PSMOUSE_CMD_MODE); in __psmouse_reconnect()
1722 psmouse_initialize(psmouse); in __psmouse_reconnect()
1732 if (!psmouse->protocol->smbus_companion) in __psmouse_reconnect()
1733 psmouse_activate(psmouse); in __psmouse_reconnect()
1795 struct psmouse *psmouse = psmouse_from_serio(serio); in psmouse_attr_show_helper() local
1797 if (psmouse->protocol->smbus_companion && in psmouse_attr_show_helper()
1801 return attr->show(psmouse, attr->data, buf); in psmouse_attr_show_helper()
1809 struct psmouse *psmouse, *parent = NULL; in psmouse_attr_set_helper() local
1816 psmouse = psmouse_from_serio(serio); in psmouse_attr_set_helper()
1818 if (psmouse->protocol->smbus_companion && in psmouse_attr_set_helper()
1825 if (psmouse->state == PSMOUSE_IGNORE) { in psmouse_attr_set_helper()
1835 if (!psmouse->protocol->smbus_companion) in psmouse_attr_set_helper()
1836 psmouse_deactivate(psmouse); in psmouse_attr_set_helper()
1839 retval = attr->set(psmouse, attr->data, buf, count); in psmouse_attr_set_helper()
1842 if (retval != -ENODEV && !psmouse->protocol->smbus_companion) in psmouse_attr_set_helper()
1843 psmouse_activate(psmouse); in psmouse_attr_set_helper()
1855 static ssize_t psmouse_show_int_attr(struct psmouse *psmouse, void *offset, char *buf) in psmouse_show_int_attr() argument
1857 unsigned int *field = (unsigned int *)((char *)psmouse + (size_t)offset); in psmouse_show_int_attr()
1862 static ssize_t psmouse_set_int_attr(struct psmouse *psmouse, void *offset, const char *buf, size_t … in psmouse_set_int_attr() argument
1864 unsigned int *field = (unsigned int *)((char *)psmouse + (size_t)offset); in psmouse_set_int_attr()
1877 static ssize_t psmouse_attr_show_protocol(struct psmouse *psmouse, void *data, char *buf) in psmouse_attr_show_protocol() argument
1879 return sprintf(buf, "%s\n", psmouse->protocol->name); in psmouse_attr_show_protocol()
1882 static ssize_t psmouse_attr_set_protocol(struct psmouse *psmouse, void *data, const char *buf, size… in psmouse_attr_set_protocol() argument
1884 struct serio *serio = psmouse->ps2dev.serio; in psmouse_attr_set_protocol()
1885 struct psmouse *parent = NULL; in psmouse_attr_set_protocol()
1895 if (psmouse->protocol == proto) in psmouse_attr_set_protocol()
1904 psmouse_warn(psmouse, in psmouse_attr_set_protocol()
1919 if (psmouse->protocol == proto) { in psmouse_attr_set_protocol()
1931 old_dev = psmouse->dev; in psmouse_attr_set_protocol()
1932 old_proto = psmouse->protocol; in psmouse_attr_set_protocol()
1934 if (psmouse->disconnect) in psmouse_attr_set_protocol()
1935 psmouse->disconnect(psmouse); in psmouse_attr_set_protocol()
1937 psmouse_set_state(psmouse, PSMOUSE_IGNORE); in psmouse_attr_set_protocol()
1939 psmouse->dev = new_dev; in psmouse_attr_set_protocol()
1940 psmouse_set_state(psmouse, PSMOUSE_INITIALIZING); in psmouse_attr_set_protocol()
1942 if (psmouse_switch_protocol(psmouse, proto) < 0) { in psmouse_attr_set_protocol()
1943 psmouse_reset(psmouse); in psmouse_attr_set_protocol()
1945 psmouse_switch_protocol(psmouse, &psmouse_protocols[0]); in psmouse_attr_set_protocol()
1948 psmouse_initialize(psmouse); in psmouse_attr_set_protocol()
1949 psmouse_set_state(psmouse, PSMOUSE_CMD_MODE); in psmouse_attr_set_protocol()
1951 if (psmouse->protocol->smbus_companion) { in psmouse_attr_set_protocol()
1952 input_free_device(psmouse->dev); in psmouse_attr_set_protocol()
1953 psmouse->dev = NULL; in psmouse_attr_set_protocol()
1955 error = input_register_device(psmouse->dev); in psmouse_attr_set_protocol()
1957 if (psmouse->disconnect) in psmouse_attr_set_protocol()
1958 psmouse->disconnect(psmouse); in psmouse_attr_set_protocol()
1960 psmouse_set_state(psmouse, PSMOUSE_IGNORE); in psmouse_attr_set_protocol()
1962 psmouse->dev = old_dev; in psmouse_attr_set_protocol()
1963 psmouse_set_state(psmouse, PSMOUSE_INITIALIZING); in psmouse_attr_set_protocol()
1964 psmouse_switch_protocol(psmouse, old_proto); in psmouse_attr_set_protocol()
1965 psmouse_initialize(psmouse); in psmouse_attr_set_protocol()
1966 psmouse_set_state(psmouse, PSMOUSE_CMD_MODE); in psmouse_attr_set_protocol()
1981 static ssize_t psmouse_attr_set_rate(struct psmouse *psmouse, void *data, const char *buf, size_t c… in psmouse_attr_set_rate() argument
1990 psmouse->set_rate(psmouse, value); in psmouse_attr_set_rate()
1994 static ssize_t psmouse_attr_set_resolution(struct psmouse *psmouse, void *data, const char *buf, si… in psmouse_attr_set_resolution() argument
2003 psmouse->set_resolution(psmouse, value); in psmouse_attr_set_resolution()