Lines Matching defs:evdev
45 #include <dev/evdev/evdev.h>
46 #include <dev/evdev/evdev_private.h>
47 #include <dev/evdev/input.h>
62 #define debugf(client, fmt, args...) printf("evdev cdev: "fmt"\n", ##args)
91 .d_name = "evdev",
104 struct evdev_dev *evdev = dev->si_drv1;
109 if (evdev == NULL)
113 buffer_size = evdev->ev_report_size * DEF_RING_REPORTS;
124 client->ec_evdev = evdev;
125 mtx_init(&client->ec_buffer_mtx, "evclient", "evdev", MTX_DEF);
128 ret = EVDEV_LIST_LOCK_SIG(evdev);
135 ret = evdev_register_client(evdev, client);
136 EVDEV_LIST_UNLOCK(evdev);
144 debugf(client, "cannot register evdev client");
255 struct evdev_dev *evdev = dev->si_drv1;
273 if (client->ec_revoked || evdev == NULL)
293 ret = evdev_inject_event(evdev, event.t32.type,
297 ret = evdev_inject_event(evdev, event.t.type,
395 struct evdev_dev *evdev = dev->si_drv1;
407 if (client->ec_revoked || evdev == NULL)
411 * Fix evdev state corrupted with discarding of kdb events.
414 if (evdev->ev_kdb_active) {
415 EVDEV_LOCK(evdev);
416 if (evdev->ev_kdb_active) {
417 evdev->ev_kdb_active = false;
418 if (evdev->ev_lock_type == EV_LOCK_EXT_EPOCH)
420 evdev_restore_after_kdb(evdev);
421 if (evdev->ev_lock_type == EV_LOCK_EXT_EPOCH)
424 EVDEV_UNLOCK(evdev);
458 /* evdev fixed-length ioctls handling */
466 evdev->ev_id.bustype, evdev->ev_id.vendor,
467 evdev->ev_id.product);
468 memcpy(data, &evdev->ev_id, sizeof(struct input_id));
472 if (!evdev_event_supported(evdev, EV_REP))
475 memcpy(data, evdev->ev_rep, sizeof(evdev->ev_rep));
479 if (!evdev_event_supported(evdev, EV_REP))
482 evdev_inject_event(evdev, EV_REP, REP_DELAY, ((int *)data)[0]);
483 evdev_inject_event(evdev, EV_REP, REP_PERIOD,
492 if (evdev->ev_methods == NULL ||
493 evdev->ev_methods->ev_get_keycode == NULL)
497 evdev->ev_methods->ev_get_keycode(evdev, ke);
505 if (evdev->ev_methods == NULL ||
506 evdev->ev_methods->ev_set_keycode == NULL)
510 evdev->ev_methods->ev_set_keycode(evdev, ke);
514 if (evdev->ev_absinfo == NULL)
517 memcpy(data, &evdev->ev_absinfo[cmd - EVIOCGABS(0)],
522 if (evdev->ev_absinfo == NULL)
530 EVDEV_LOCK(evdev);
531 evdev_set_absinfo(evdev, code, (struct input_absinfo *)data);
532 EVDEV_UNLOCK(evdev);
542 EVDEV_LOCK(evdev);
544 ret = evdev_grab_client(evdev, client);
546 ret = evdev_release_client(evdev, client);
547 EVDEV_UNLOCK(evdev);
554 EVDEV_LIST_LOCK(evdev);
556 evdev_dispose_client(evdev, client);
559 EVDEV_LIST_UNLOCK(evdev);
575 /* evdev variable-length ioctls handling */
578 /* Linux evdev does not terminate truncated strings with 0 */
579 limit = MIN(strlen(evdev->ev_name) + 1, len);
580 memcpy(data, evdev->ev_name, limit);
585 if (evdev->ev_shortname[0] == 0)
588 limit = MIN(strlen(evdev->ev_shortname) + 1, len);
589 memcpy(data, evdev->ev_shortname, limit);
594 if (evdev->ev_serial[0] == 0)
597 limit = MIN(strlen(evdev->ev_serial) + 1, len);
598 memcpy(data, evdev->ev_serial, limit);
604 memcpy(data, evdev->ev_prop_flags, limit);
610 if (evdev->ev_mt == NULL)
619 MIN(len / sizeof(int32_t) - 1, MAXIMAL_MT_SLOT(evdev) + 1);
622 evdev_mt_get_value(evdev, i, code);
627 EVDEV_LOCK(evdev);
629 memcpy(data, evdev->ev_key_states, limit);
630 EVDEV_UNLOCK(evdev);
636 EVDEV_LOCK(evdev);
638 memcpy(data, evdev->ev_led_states, limit);
639 EVDEV_UNLOCK(evdev);
645 EVDEV_LOCK(evdev);
647 memcpy(data, evdev->ev_snd_states, limit);
648 EVDEV_UNLOCK(evdev);
654 EVDEV_LOCK(evdev);
656 memcpy(data, evdev->ev_sw_states, limit);
657 EVDEV_UNLOCK(evdev);
665 return (evdev_ioctl_eviocgbit(evdev, type_num, len, data, td));
672 evdev_ioctl_eviocgbit(struct evdev_dev *evdev, int type, int len, caddr_t data,
680 bitmap = evdev->ev_type_flags;
684 bitmap = evdev->ev_key_flags;
688 bitmap = evdev->ev_rel_flags;
692 bitmap = evdev->ev_abs_flags;
696 bitmap = evdev->ev_msc_flags;
700 bitmap = evdev->ev_led_flags;
704 bitmap = evdev->ev_snd_flags;
708 bitmap = evdev->ev_sw_flags;
766 evdev_cdev_create(struct evdev_dev *evdev)
777 mda.mda_si_drv1 = evdev;
780 while ((ret = make_dev_s(&mda, &evdev->ev_cdev, "input/event%d", unit))
785 evdev->ev_unit = unit;
791 evdev_cdev_destroy(struct evdev_dev *evdev)
794 destroy_dev(evdev->ev_cdev);
880 printf("evdev client: %p\n", client);