Lines Matching +full:poll +full:- +full:rate +full:- +full:ms
1 // SPDX-License-Identifier: GPL-2.0-only
5 * Copyright (c) 1999-2002 Vojtech Pavlik
6 * Copyright (c) 2003-2004 Dmitry Torokhov
62 module_param_named(rate, psmouse_rate, uint, 0644);
63 MODULE_PARM_DESC(rate, "Report rate, in reports per second.");
84 PSMOUSE_DEFINE_ATTR(rate, S_IWUSR | S_IRUGO,
85 (void *) offsetof(struct psmouse, rate),
112 * (connecting, disconnecting, changing rate or resolution via
113 * sysfs). We could use a per-device semaphore but since there
132 x = packet[1] ? packet[1] - ((packet[0] << 4) & 0x100) : 0; in psmouse_report_standard_motion()
133 y = packet[2] ? packet[2] - ((packet[0] << 3) & 0x100) : 0; in psmouse_report_standard_motion()
136 input_report_rel(dev, REL_Y, -y); in psmouse_report_standard_motion()
151 struct input_dev *dev = psmouse->dev; in psmouse_process_byte()
152 u8 *packet = psmouse->packet; in psmouse_process_byte()
155 if (psmouse->pktcnt < psmouse->pktsize) in psmouse_process_byte()
160 switch (psmouse->protocol->type) { in psmouse_process_byte()
163 input_report_rel(dev, REL_WHEEL, -(s8) packet[3]); in psmouse_process_byte()
171 -sign_extend32(packet[3], 5)); in psmouse_process_byte()
175 -sign_extend32(packet[3], 5)); in psmouse_process_byte()
183 * one reporting +/-1 in the lower nibble, and second in psmouse_process_byte()
184 * one reporting +/-2. in psmouse_process_byte()
189 input_report_rel(dev, REL_WHEEL, -wheel); in psmouse_process_byte()
199 input_report_rel(dev, REL_WHEEL, -(s8) packet[3]); in psmouse_process_byte()
231 packet[0] |= psmouse->extra_buttons; in psmouse_process_byte()
250 psmouse->state = new_state; in __psmouse_set_state()
251 psmouse->pktcnt = psmouse->out_of_sync_cnt = 0; in __psmouse_set_state()
252 psmouse->ps2dev.flags = 0; in __psmouse_set_state()
253 psmouse->last = jiffies; in __psmouse_set_state()
263 serio_pause_rx(psmouse->ps2dev.serio); in psmouse_set_state()
265 serio_continue_rx(psmouse->ps2dev.serio); in psmouse_set_state()
274 psmouse_ret_t rc = psmouse->protocol_handler(psmouse); in psmouse_handle_byte()
278 if (psmouse->state == PSMOUSE_ACTIVATED) { in psmouse_handle_byte()
281 psmouse->name, psmouse->phys, in psmouse_handle_byte()
282 psmouse->pktcnt); in psmouse_handle_byte()
283 if (++psmouse->out_of_sync_cnt == psmouse->resetafter) { in psmouse_handle_byte()
287 serio_reconnect(psmouse->ps2dev.serio); in psmouse_handle_byte()
288 return -EIO; in psmouse_handle_byte()
291 psmouse->pktcnt = 0; in psmouse_handle_byte()
295 psmouse->pktcnt = 0; in psmouse_handle_byte()
296 if (psmouse->out_of_sync_cnt) { in psmouse_handle_byte()
297 psmouse->out_of_sync_cnt = 0; in psmouse_handle_byte()
299 "%s at %s - driver resynced.\n", in psmouse_handle_byte()
300 psmouse->name, psmouse->phys); in psmouse_handle_byte()
312 switch (psmouse->oob_data_type) { in psmouse_handle_oob_data()
314 psmouse->oob_data_type = data; in psmouse_handle_oob_data()
318 psmouse_report_standard_buttons(psmouse->dev, data); in psmouse_handle_oob_data()
319 input_sync(psmouse->dev); in psmouse_handle_oob_data()
321 psmouse->extra_buttons = data; in psmouse_handle_oob_data()
322 psmouse->oob_data_type = PSMOUSE_OOB_NONE; in psmouse_handle_oob_data()
328 psmouse->oob_data_type); in psmouse_handle_oob_data()
329 psmouse->oob_data_type = PSMOUSE_OOB_NONE; in psmouse_handle_oob_data()
343 if (psmouse->state == PSMOUSE_IGNORE) in psmouse_interrupt()
348 !psmouse->protocol->ignore_parity))) { in psmouse_interrupt()
350 if (psmouse->state == PSMOUSE_ACTIVATED) in psmouse_interrupt()
352 "bad data from KBC -%s%s\n", in psmouse_interrupt()
355 ps2_cmd_aborted(&psmouse->ps2dev); in psmouse_interrupt()
364 if (unlikely(psmouse->ps2dev.flags & PS2_FLAG_ACK)) in psmouse_interrupt()
365 if (ps2_handle_ack(&psmouse->ps2dev, data)) in psmouse_interrupt()
368 if (unlikely(psmouse->ps2dev.flags & PS2_FLAG_CMD)) in psmouse_interrupt()
369 if (ps2_handle_response(&psmouse->ps2dev, data)) in psmouse_interrupt()
372 pm_wakeup_event(&serio->dev, 0); in psmouse_interrupt()
374 if (psmouse->state <= PSMOUSE_RESYNCING) in psmouse_interrupt()
377 if (psmouse->state == PSMOUSE_ACTIVATED && in psmouse_interrupt()
378 psmouse->pktcnt && time_after(jiffies, psmouse->last + HZ/2)) { in psmouse_interrupt()
380 psmouse->name, psmouse->phys, psmouse->pktcnt); in psmouse_interrupt()
381 psmouse->badbyte = psmouse->packet[0]; in psmouse_interrupt()
383 psmouse_queue_work(psmouse, &psmouse->resync_work, 0); in psmouse_interrupt()
387 psmouse->packet[psmouse->pktcnt++] = data; in psmouse_interrupt()
390 if (unlikely(psmouse->packet[0] == PSMOUSE_RET_BAT && psmouse->pktcnt <= 2)) { in psmouse_interrupt()
391 if (psmouse->pktcnt == 1) { in psmouse_interrupt()
392 psmouse->last = jiffies; in psmouse_interrupt()
396 if (psmouse->packet[1] == PSMOUSE_RET_ID || in psmouse_interrupt()
397 (psmouse->protocol->type == PSMOUSE_HGPK && in psmouse_interrupt()
398 psmouse->packet[1] == PSMOUSE_RET_BAT)) { in psmouse_interrupt()
405 psmouse->pktcnt = 1; in psmouse_interrupt()
409 psmouse->packet[psmouse->pktcnt++] = data; in psmouse_interrupt()
416 if (psmouse->state == PSMOUSE_ACTIVATED && in psmouse_interrupt()
417 psmouse->pktcnt == 1 && psmouse->resync_time && in psmouse_interrupt()
418 time_after(jiffies, psmouse->last + psmouse->resync_time * HZ)) { in psmouse_interrupt()
419 psmouse->badbyte = psmouse->packet[0]; in psmouse_interrupt()
421 psmouse_queue_work(psmouse, &psmouse->resync_work, 0); in psmouse_interrupt()
425 psmouse->last = jiffies; in psmouse_interrupt()
433 * psmouse_reset() resets the mouse into power-on state.
440 error = ps2_command(&psmouse->ps2dev, param, PSMOUSE_CMD_RESET_BAT); in psmouse_reset()
445 return -EIO; in psmouse_reset()
462 ps2_command(&psmouse->ps2dev, &p, PSMOUSE_CMD_SETRES); in psmouse_set_resolution()
463 psmouse->resolution = 25 << p; in psmouse_set_resolution()
467 * Here we set the mouse report rate.
469 static void psmouse_set_rate(struct psmouse *psmouse, unsigned int rate) in psmouse_set_rate() argument
475 while (rates[i] > rate) in psmouse_set_rate()
478 ps2_command(&psmouse->ps2dev, &r, PSMOUSE_CMD_SETRATE); in psmouse_set_rate()
479 psmouse->rate = r; in psmouse_set_rate()
487 ps2_command(&psmouse->ps2dev, NULL, in psmouse_set_scale()
493 * psmouse_poll() - default poll handler. Everyone except for ALPS uses it.
497 return ps2_command(&psmouse->ps2dev, psmouse->packet, in psmouse_poll()
498 PSMOUSE_CMD_POLL | (psmouse->pktsize << 8)); in psmouse_poll()
513 * psmouse_matches_pnp_id - check if psmouse matches one of the passed in ids.
517 struct serio *serio = psmouse->ps2dev.serio; in psmouse_matches_pnp_id()
521 if (strncmp(serio->firmware_id, "PNP: ", 5)) in psmouse_matches_pnp_id()
524 fw_id_copy = kstrndup(&serio->firmware_id[5], in psmouse_matches_pnp_id()
525 sizeof(serio->firmware_id) - 5, in psmouse_matches_pnp_id()
547 struct ps2dev *ps2dev = &psmouse->ps2dev; in genius_detect()
558 return -ENODEV; in genius_detect()
561 __set_bit(BTN_MIDDLE, psmouse->dev->keybit); in genius_detect()
562 __set_bit(BTN_EXTRA, psmouse->dev->keybit); in genius_detect()
563 __set_bit(BTN_SIDE, psmouse->dev->keybit); in genius_detect()
564 __set_bit(REL_WHEEL, psmouse->dev->relbit); in genius_detect()
566 psmouse->vendor = "Genius"; in genius_detect()
567 psmouse->name = "Mouse"; in genius_detect()
568 psmouse->pktsize = 4; in genius_detect()
579 struct ps2dev *ps2dev = &psmouse->ps2dev; in intellimouse_detect()
591 return -ENODEV; in intellimouse_detect()
594 __set_bit(BTN_MIDDLE, psmouse->dev->keybit); in intellimouse_detect()
595 __set_bit(REL_WHEEL, psmouse->dev->relbit); in intellimouse_detect()
597 if (!psmouse->vendor) in intellimouse_detect()
598 psmouse->vendor = "Generic"; in intellimouse_detect()
599 if (!psmouse->name) in intellimouse_detect()
600 psmouse->name = "Wheel Mouse"; in intellimouse_detect()
601 psmouse->pktsize = 4; in intellimouse_detect()
612 struct ps2dev *ps2dev = &psmouse->ps2dev; in im_explorer_detect()
626 return -ENODEV; in im_explorer_detect()
637 __set_bit(BTN_MIDDLE, psmouse->dev->keybit); in im_explorer_detect()
638 __set_bit(REL_WHEEL, psmouse->dev->relbit); in im_explorer_detect()
639 __set_bit(REL_HWHEEL, psmouse->dev->relbit); in im_explorer_detect()
640 __set_bit(BTN_SIDE, psmouse->dev->keybit); in im_explorer_detect()
641 __set_bit(BTN_EXTRA, psmouse->dev->keybit); in im_explorer_detect()
643 if (!psmouse->vendor) in im_explorer_detect()
644 psmouse->vendor = "Generic"; in im_explorer_detect()
645 if (!psmouse->name) in im_explorer_detect()
646 psmouse->name = "Explorer Mouse"; in im_explorer_detect()
647 psmouse->pktsize = 4; in im_explorer_detect()
658 struct ps2dev *ps2dev = &psmouse->ps2dev; in thinking_detect()
674 return -ENODEV; in thinking_detect()
677 __set_bit(BTN_MIDDLE, psmouse->dev->keybit); in thinking_detect()
678 __set_bit(BTN_EXTRA, psmouse->dev->keybit); in thinking_detect()
680 psmouse->vendor = "Kensington"; in thinking_detect()
681 psmouse->name = "ThinkingMouse"; in thinking_detect()
693 if (!psmouse->vendor) in ps2bare_detect()
694 psmouse->vendor = "Generic"; in ps2bare_detect()
695 if (!psmouse->name) in ps2bare_detect()
696 psmouse->name = "Mouse"; in ps2bare_detect()
702 input_set_capability(psmouse->dev, EV_KEY, BTN_MIDDLE); in ps2bare_detect()
715 psmouse->vendor = "Cortron"; in cortron_detect()
716 psmouse->name = "PS/2 Trackball"; in cortron_detect()
718 __set_bit(BTN_MIDDLE, psmouse->dev->keybit); in cortron_detect()
719 __set_bit(BTN_SIDE, psmouse->dev->keybit); in cortron_detect()
793 .alias = "synaptics-relative",
802 .alias = "synaptics-smbus",
864 .alias = "elantech-smbus",
951 if ((strlen(p->name) == len && !strncmp(p->name, name, len)) || in psmouse_protocol_by_name()
952 (strlen(p->alias) == len && !strncmp(p->alias, name, len))) in psmouse_protocol_by_name()
965 struct input_dev *input_dev = psmouse->dev; in psmouse_apply_defaults()
967 bitmap_zero(input_dev->evbit, EV_CNT); in psmouse_apply_defaults()
968 bitmap_zero(input_dev->keybit, KEY_CNT); in psmouse_apply_defaults()
969 bitmap_zero(input_dev->relbit, REL_CNT); in psmouse_apply_defaults()
970 bitmap_zero(input_dev->absbit, ABS_CNT); in psmouse_apply_defaults()
971 bitmap_zero(input_dev->mscbit, MSC_CNT); in psmouse_apply_defaults()
979 __set_bit(INPUT_PROP_POINTER, input_dev->propbit); in psmouse_apply_defaults()
981 psmouse->protocol = &psmouse_protocols[0]; in psmouse_apply_defaults()
983 psmouse->set_rate = psmouse_set_rate; in psmouse_apply_defaults()
984 psmouse->set_resolution = psmouse_set_resolution; in psmouse_apply_defaults()
985 psmouse->set_scale = psmouse_set_scale; in psmouse_apply_defaults()
986 psmouse->poll = psmouse_poll; in psmouse_apply_defaults()
987 psmouse->protocol_handler = psmouse_process_byte; in psmouse_apply_defaults()
988 psmouse->pktsize = 3; in psmouse_apply_defaults()
989 psmouse->reconnect = NULL; in psmouse_apply_defaults()
990 psmouse->fast_reconnect = NULL; in psmouse_apply_defaults()
991 psmouse->disconnect = NULL; in psmouse_apply_defaults()
992 psmouse->cleanup = NULL; in psmouse_apply_defaults()
993 psmouse->pt_activate = NULL; in psmouse_apply_defaults()
994 psmouse->pt_deactivate = NULL; in psmouse_apply_defaults()
1001 if (psmouse->ps2dev.serio->id.type == SERIO_PS_PSTHRU && in psmouse_do_detect()
1023 if (!psmouse_do_detect(proto->detect, psmouse, proto->try_passthru, in psmouse_try_protocol()
1027 if (set_properties && proto->init && init_allowed) { in psmouse_try_protocol()
1028 if (proto->init(psmouse) != 0) { in psmouse_try_protocol()
1054 * Always check for focaltech, this is safe as it uses pnp-id in psmouse_extensions()
1066 * does not try to reset rate and resolution, because even in psmouse_extensions()
1099 * Synaptics protocol support is disabled in config - we need to in psmouse_extensions()
1153 ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_RESET_DIS); in psmouse_extensions()
1211 ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_RESET_DIS); in psmouse_extensions()
1251 struct ps2dev *ps2dev = &psmouse->ps2dev; in psmouse_probe()
1257 * case of an IntelliMouse in 4-byte mode or 0x04 for IM Explorer. in psmouse_probe()
1268 return -ENODEV; in psmouse_probe()
1277 ps2dev->serio->phys, error); in psmouse_probe()
1288 * We set the mouse report rate, resolution and scaling. in psmouse_initialize()
1291 psmouse->set_rate(psmouse, psmouse->rate); in psmouse_initialize()
1292 psmouse->set_resolution(psmouse, psmouse->resolution); in psmouse_initialize()
1293 psmouse->set_scale(psmouse, PSMOUSE_SCALE11); in psmouse_initialize()
1302 if (ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_ENABLE)) { in psmouse_activate()
1304 psmouse->ps2dev.serio->phys); in psmouse_activate()
1305 return -1; in psmouse_activate()
1313 * psmouse_deactivate() puts the mouse into poll mode so that we don't get
1320 error = ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_DISABLE); in psmouse_deactivate()
1323 psmouse->ps2dev.serio->phys, error); in psmouse_deactivate()
1332 * psmouse_resync() attempts to re-validate current protocol.
1338 struct serio *serio = psmouse->ps2dev.serio; in psmouse_resync()
1345 if (psmouse->state != PSMOUSE_RESYNCING) in psmouse_resync()
1348 if (serio->parent && serio->id.type == SERIO_PS_PSTHRU) { in psmouse_resync()
1349 parent = serio_get_drvdata(serio->parent); in psmouse_resync()
1356 * instead of ps2_command() which would wait for 200ms for an ACK in psmouse_resync()
1363 psmouse->num_resyncs++; in psmouse_resync()
1365 if (ps2_sendbyte(&psmouse->ps2dev, PSMOUSE_CMD_DISABLE, 20)) { in psmouse_resync()
1366 if (psmouse->num_resyncs < 3 || psmouse->acks_disable_command) in psmouse_resync()
1369 psmouse->acks_disable_command = true; in psmouse_resync()
1372 * Poll the mouse. If it was reset the packet will be shorter than in psmouse_resync()
1373 * psmouse->pktsize and ps2_command will fail. We do not expect and in psmouse_resync()
1379 if (psmouse->poll(psmouse)) in psmouse_resync()
1383 for (i = 0; i < psmouse->pktsize; i++) { in psmouse_resync()
1384 psmouse->pktcnt++; in psmouse_resync()
1385 rc = psmouse->protocol_handler(psmouse); in psmouse_resync()
1396 * Now try to enable mouse. We try to do that even if poll failed in psmouse_resync()
1401 if (!ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_ENABLE)) { in psmouse_resync()
1409 psmouse_warn(psmouse, "failed to re-enable mouse on %s\n", in psmouse_resync()
1410 psmouse->ps2dev.serio->phys); in psmouse_resync()
1429 * psmouse_cleanup() resets the mouse into power-on state.
1438 if (serio->parent && serio->id.type == SERIO_PS_PSTHRU) { in psmouse_cleanup()
1439 parent = serio_get_drvdata(serio->parent); in psmouse_cleanup()
1448 if (ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_DISABLE)) in psmouse_cleanup()
1450 psmouse->ps2dev.serio->phys); in psmouse_cleanup()
1452 if (psmouse->cleanup) in psmouse_cleanup()
1453 psmouse->cleanup(psmouse); in psmouse_cleanup()
1458 ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_RESET_DIS); in psmouse_cleanup()
1464 ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_ENABLE); in psmouse_cleanup()
1467 if (parent->pt_deactivate) in psmouse_cleanup()
1468 parent->pt_deactivate(parent); in psmouse_cleanup()
1484 sysfs_remove_group(&serio->dev.kobj, &psmouse_attribute_group); in psmouse_disconnect()
1495 if (serio->parent && serio->id.type == SERIO_PS_PSTHRU) { in psmouse_disconnect()
1496 parent = serio_get_drvdata(serio->parent); in psmouse_disconnect()
1500 if (psmouse->disconnect) in psmouse_disconnect()
1501 psmouse->disconnect(psmouse); in psmouse_disconnect()
1503 if (parent && parent->pt_deactivate) in psmouse_disconnect()
1504 parent->pt_deactivate(parent); in psmouse_disconnect()
1511 if (psmouse->dev) in psmouse_disconnect()
1512 input_unregister_device(psmouse->dev); in psmouse_disconnect()
1526 struct input_dev *input_dev = psmouse->dev; in psmouse_switch_protocol()
1529 input_dev->dev.parent = &psmouse->ps2dev.serio->dev; in psmouse_switch_protocol()
1531 if (proto && (proto->detect || proto->init)) { in psmouse_switch_protocol()
1534 if (proto->detect && proto->detect(psmouse, true) < 0) in psmouse_switch_protocol()
1535 return -1; in psmouse_switch_protocol()
1537 if (proto->init && proto->init(psmouse) < 0) in psmouse_switch_protocol()
1538 return -1; in psmouse_switch_protocol()
1546 psmouse->protocol = selected_proto; in psmouse_switch_protocol()
1550 * device in hopes to detect protocol reset - we won't get less in psmouse_switch_protocol()
1553 if (psmouse->pktsize == 3) in psmouse_switch_protocol()
1554 psmouse->resync_time = 0; in psmouse_switch_protocol()
1557 * Some smart KVMs fake response to POLL command returning just in psmouse_switch_protocol()
1558 * 3 bytes and messing up our resync logic, so if initial poll in psmouse_switch_protocol()
1562 if (psmouse->resync_time && psmouse->poll(psmouse)) in psmouse_switch_protocol()
1563 psmouse->resync_time = 0; in psmouse_switch_protocol()
1565 snprintf(psmouse->devname, sizeof(psmouse->devname), "%s %s %s", in psmouse_switch_protocol()
1566 selected_proto->name, psmouse->vendor, psmouse->name); in psmouse_switch_protocol()
1568 input_dev->name = psmouse->devname; in psmouse_switch_protocol()
1569 input_dev->phys = psmouse->phys; in psmouse_switch_protocol()
1570 input_dev->id.bustype = BUS_I8042; in psmouse_switch_protocol()
1571 input_dev->id.vendor = 0x0002; in psmouse_switch_protocol()
1572 input_dev->id.product = psmouse->protocol->type; in psmouse_switch_protocol()
1573 input_dev->id.version = psmouse->model; in psmouse_switch_protocol()
1586 int retval = 0, error = -ENOMEM; in psmouse_connect()
1591 * If this is a pass-through port deactivate parent so the device in psmouse_connect()
1594 if (serio->parent && serio->id.type == SERIO_PS_PSTHRU) { in psmouse_connect()
1595 parent = serio_get_drvdata(serio->parent); in psmouse_connect()
1604 ps2_init(&psmouse->ps2dev, serio); in psmouse_connect()
1605 INIT_DELAYED_WORK(&psmouse->resync_work, psmouse_resync); in psmouse_connect()
1606 psmouse->dev = input_dev; in psmouse_connect()
1607 snprintf(psmouse->phys, sizeof(psmouse->phys), "%s/input0", serio->phys); in psmouse_connect()
1618 if (serio->id.type == SERIO_PS_PSTHRU) in psmouse_connect()
1622 error = -ENODEV; in psmouse_connect()
1626 psmouse->rate = psmouse_rate; in psmouse_connect()
1627 psmouse->resolution = psmouse_resolution; in psmouse_connect()
1628 psmouse->resetafter = psmouse_resetafter; in psmouse_connect()
1629 psmouse->resync_time = parent ? 0 : psmouse_resync_time; in psmouse_connect()
1630 psmouse->smartscroll = psmouse_smartscroll; in psmouse_connect()
1634 if (!psmouse->protocol->smbus_companion) { in psmouse_connect()
1644 psmouse->dev = input_dev = NULL; in psmouse_connect()
1647 if (parent && parent->pt_activate) in psmouse_connect()
1648 parent->pt_activate(parent); in psmouse_connect()
1650 error = sysfs_create_group(&serio->dev.kobj, &psmouse_attribute_group); in psmouse_connect()
1658 if (!psmouse->protocol->smbus_companion) in psmouse_connect()
1662 /* If this is a pass-through port the parent needs to be re-activated */ in psmouse_connect()
1670 if (parent && parent->pt_deactivate) in psmouse_connect()
1671 parent->pt_deactivate(parent); in psmouse_connect()
1677 if (psmouse->disconnect) in psmouse_connect()
1678 psmouse->disconnect(psmouse); in psmouse_connect()
1698 int rc = -1; in __psmouse_reconnect()
1703 reconnect_handler = psmouse->fast_reconnect; in __psmouse_reconnect()
1705 rc = -ENOENT; in __psmouse_reconnect()
1709 reconnect_handler = psmouse->reconnect; in __psmouse_reconnect()
1712 if (serio->parent && serio->id.type == SERIO_PS_PSTHRU) { in __psmouse_reconnect()
1713 parent = serio_get_drvdata(serio->parent); in __psmouse_reconnect()
1729 if (psmouse->protocol->type != type) in __psmouse_reconnect()
1737 if (!psmouse->protocol->smbus_companion) { in __psmouse_reconnect()
1742 if (parent && parent->pt_activate) in __psmouse_reconnect()
1743 parent->pt_activate(parent); in __psmouse_reconnect()
1749 if (!psmouse->protocol->smbus_companion) in __psmouse_reconnect()
1755 /* If this is a pass-through port the parent waits to be activated */ in __psmouse_reconnect()
1813 if (psmouse->protocol->smbus_companion && in psmouse_attr_show_helper()
1815 return -ENOENT; in psmouse_attr_show_helper()
1817 return attr->show(psmouse, attr->data, buf); in psmouse_attr_show_helper()
1834 if (psmouse->protocol->smbus_companion && in psmouse_attr_set_helper()
1836 retval = -ENOENT; in psmouse_attr_set_helper()
1840 if (attr->protect) { in psmouse_attr_set_helper()
1841 if (psmouse->state == PSMOUSE_IGNORE) { in psmouse_attr_set_helper()
1842 retval = -ENODEV; in psmouse_attr_set_helper()
1846 if (serio->parent && serio->id.type == SERIO_PS_PSTHRU) { in psmouse_attr_set_helper()
1847 parent = serio_get_drvdata(serio->parent); in psmouse_attr_set_helper()
1851 if (!psmouse->protocol->smbus_companion) in psmouse_attr_set_helper()
1855 retval = attr->set(psmouse, attr->data, buf, count); in psmouse_attr_set_helper()
1857 if (attr->protect) { in psmouse_attr_set_helper()
1858 if (retval != -ENODEV && !psmouse->protocol->smbus_companion) in psmouse_attr_set_helper()
1895 return sprintf(buf, "%s\n", psmouse->protocol->name); in psmouse_attr_show_protocol()
1900 struct serio *serio = psmouse->ps2dev.serio; in psmouse_attr_set_protocol()
1909 return -EINVAL; in psmouse_attr_set_protocol()
1911 if (psmouse->protocol == proto) in psmouse_attr_set_protocol()
1916 return -ENOMEM; in psmouse_attr_set_protocol()
1918 while (!list_empty(&serio->children)) { in psmouse_attr_set_protocol()
1923 return -EIO; in psmouse_attr_set_protocol()
1930 if (serio->drv != &psmouse_drv) { in psmouse_attr_set_protocol()
1932 return -ENODEV; in psmouse_attr_set_protocol()
1935 if (psmouse->protocol == proto) { in psmouse_attr_set_protocol()
1941 if (serio->parent && serio->id.type == SERIO_PS_PSTHRU) { in psmouse_attr_set_protocol()
1942 parent = serio_get_drvdata(serio->parent); in psmouse_attr_set_protocol()
1943 if (parent->pt_deactivate) in psmouse_attr_set_protocol()
1944 parent->pt_deactivate(parent); in psmouse_attr_set_protocol()
1947 old_dev = psmouse->dev; in psmouse_attr_set_protocol()
1948 old_proto = psmouse->protocol; in psmouse_attr_set_protocol()
1950 if (psmouse->disconnect) in psmouse_attr_set_protocol()
1951 psmouse->disconnect(psmouse); in psmouse_attr_set_protocol()
1955 psmouse->dev = new_dev; in psmouse_attr_set_protocol()
1967 if (psmouse->protocol->smbus_companion) { in psmouse_attr_set_protocol()
1968 input_free_device(psmouse->dev); in psmouse_attr_set_protocol()
1969 psmouse->dev = NULL; in psmouse_attr_set_protocol()
1971 error = input_register_device(psmouse->dev); in psmouse_attr_set_protocol()
1973 if (psmouse->disconnect) in psmouse_attr_set_protocol()
1974 psmouse->disconnect(psmouse); in psmouse_attr_set_protocol()
1978 psmouse->dev = old_dev; in psmouse_attr_set_protocol()
1991 if (parent && parent->pt_activate) in psmouse_attr_set_protocol()
1992 parent->pt_activate(parent); in psmouse_attr_set_protocol()
2006 psmouse->set_rate(psmouse, value); in psmouse_attr_set_rate()
2019 psmouse->set_resolution(psmouse, value); in psmouse_attr_set_resolution()
2029 return -EINVAL; in psmouse_set_maxproto()
2033 if (!proto || !proto->maxproto) in psmouse_set_maxproto()
2034 return -EINVAL; in psmouse_set_maxproto()
2036 *((unsigned int *)kp->arg) = proto->type; in psmouse_set_maxproto()
2043 int type = *((unsigned int *)kp->arg); in psmouse_get_maxproto()
2045 return sprintf(buffer, "%s\n", psmouse_protocol_by_type(type)->name); in psmouse_get_maxproto()
2063 err = -ENOMEM; in psmouse_init()