Lines Matching refs:evdev
104 struct evdev_dev *evdev = dev->si_drv1; in evdev_open() local
109 if (evdev == NULL) in evdev_open()
113 buffer_size = evdev->ev_report_size * DEF_RING_REPORTS; in evdev_open()
124 client->ec_evdev = evdev; in evdev_open()
128 ret = EVDEV_LIST_LOCK_SIG(evdev); in evdev_open()
135 ret = evdev_register_client(evdev, client); in evdev_open()
136 EVDEV_LIST_UNLOCK(evdev); in evdev_open()
255 struct evdev_dev *evdev = dev->si_drv1; in evdev_write() local
273 if (client->ec_revoked || evdev == NULL) in evdev_write()
293 ret = evdev_inject_event(evdev, event.t32.type, in evdev_write()
297 ret = evdev_inject_event(evdev, event.t.type, in evdev_write()
395 struct evdev_dev *evdev = dev->si_drv1; in evdev_ioctl() local
407 if (client->ec_revoked || evdev == NULL) in evdev_ioctl()
414 if (evdev->ev_kdb_active) { in evdev_ioctl()
415 EVDEV_LOCK(evdev); in evdev_ioctl()
416 if (evdev->ev_kdb_active) { in evdev_ioctl()
417 evdev->ev_kdb_active = false; in evdev_ioctl()
418 if (evdev->ev_lock_type == EV_LOCK_EXT_EPOCH) in evdev_ioctl()
420 evdev_restore_after_kdb(evdev); in evdev_ioctl()
421 if (evdev->ev_lock_type == EV_LOCK_EXT_EPOCH) in evdev_ioctl()
424 EVDEV_UNLOCK(evdev); in evdev_ioctl()
466 evdev->ev_id.bustype, evdev->ev_id.vendor, in evdev_ioctl()
467 evdev->ev_id.product); in evdev_ioctl()
468 memcpy(data, &evdev->ev_id, sizeof(struct input_id)); in evdev_ioctl()
472 if (!evdev_event_supported(evdev, EV_REP)) in evdev_ioctl()
475 memcpy(data, evdev->ev_rep, sizeof(evdev->ev_rep)); in evdev_ioctl()
479 if (!evdev_event_supported(evdev, EV_REP)) in evdev_ioctl()
482 evdev_inject_event(evdev, EV_REP, REP_DELAY, ((int *)data)[0]); in evdev_ioctl()
483 evdev_inject_event(evdev, EV_REP, REP_PERIOD, in evdev_ioctl()
492 if (evdev->ev_methods == NULL || in evdev_ioctl()
493 evdev->ev_methods->ev_get_keycode == NULL) in evdev_ioctl()
497 evdev->ev_methods->ev_get_keycode(evdev, ke); in evdev_ioctl()
505 if (evdev->ev_methods == NULL || in evdev_ioctl()
506 evdev->ev_methods->ev_set_keycode == NULL) in evdev_ioctl()
510 evdev->ev_methods->ev_set_keycode(evdev, ke); in evdev_ioctl()
514 if (evdev->ev_absinfo == NULL) in evdev_ioctl()
517 memcpy(data, &evdev->ev_absinfo[cmd - EVIOCGABS(0)], in evdev_ioctl()
522 if (evdev->ev_absinfo == NULL) in evdev_ioctl()
530 EVDEV_LOCK(evdev); in evdev_ioctl()
531 evdev_set_absinfo(evdev, code, (struct input_absinfo *)data); in evdev_ioctl()
532 EVDEV_UNLOCK(evdev); in evdev_ioctl()
542 EVDEV_LOCK(evdev); in evdev_ioctl()
544 ret = evdev_grab_client(evdev, client); in evdev_ioctl()
546 ret = evdev_release_client(evdev, client); in evdev_ioctl()
547 EVDEV_UNLOCK(evdev); in evdev_ioctl()
554 EVDEV_LIST_LOCK(evdev); in evdev_ioctl()
556 evdev_dispose_client(evdev, client); in evdev_ioctl()
559 EVDEV_LIST_UNLOCK(evdev); in evdev_ioctl()
579 limit = MIN(strlen(evdev->ev_name) + 1, len); in evdev_ioctl()
580 memcpy(data, evdev->ev_name, limit); in evdev_ioctl()
585 if (evdev->ev_shortname[0] == 0) in evdev_ioctl()
588 limit = MIN(strlen(evdev->ev_shortname) + 1, len); in evdev_ioctl()
589 memcpy(data, evdev->ev_shortname, limit); in evdev_ioctl()
594 if (evdev->ev_serial[0] == 0) in evdev_ioctl()
597 limit = MIN(strlen(evdev->ev_serial) + 1, len); in evdev_ioctl()
598 memcpy(data, evdev->ev_serial, limit); in evdev_ioctl()
604 memcpy(data, evdev->ev_prop_flags, limit); in evdev_ioctl()
610 if (evdev->ev_mt == NULL) in evdev_ioctl()
619 MIN(len / sizeof(int32_t) - 1, MAXIMAL_MT_SLOT(evdev) + 1); in evdev_ioctl()
622 evdev_mt_get_value(evdev, i, code); in evdev_ioctl()
627 EVDEV_LOCK(evdev); in evdev_ioctl()
629 memcpy(data, evdev->ev_key_states, limit); in evdev_ioctl()
630 EVDEV_UNLOCK(evdev); in evdev_ioctl()
636 EVDEV_LOCK(evdev); in evdev_ioctl()
638 memcpy(data, evdev->ev_led_states, limit); in evdev_ioctl()
639 EVDEV_UNLOCK(evdev); in evdev_ioctl()
645 EVDEV_LOCK(evdev); in evdev_ioctl()
647 memcpy(data, evdev->ev_snd_states, limit); in evdev_ioctl()
648 EVDEV_UNLOCK(evdev); in evdev_ioctl()
654 EVDEV_LOCK(evdev); in evdev_ioctl()
656 memcpy(data, evdev->ev_sw_states, limit); in evdev_ioctl()
657 EVDEV_UNLOCK(evdev); in evdev_ioctl()
665 return (evdev_ioctl_eviocgbit(evdev, type_num, len, data, td)); in evdev_ioctl()
672 evdev_ioctl_eviocgbit(struct evdev_dev *evdev, int type, int len, caddr_t data, in evdev_ioctl_eviocgbit() argument
680 bitmap = evdev->ev_type_flags; in evdev_ioctl_eviocgbit()
684 bitmap = evdev->ev_key_flags; in evdev_ioctl_eviocgbit()
688 bitmap = evdev->ev_rel_flags; in evdev_ioctl_eviocgbit()
692 bitmap = evdev->ev_abs_flags; in evdev_ioctl_eviocgbit()
696 bitmap = evdev->ev_msc_flags; in evdev_ioctl_eviocgbit()
700 bitmap = evdev->ev_led_flags; in evdev_ioctl_eviocgbit()
704 bitmap = evdev->ev_snd_flags; in evdev_ioctl_eviocgbit()
708 bitmap = evdev->ev_sw_flags; in evdev_ioctl_eviocgbit()
766 evdev_cdev_create(struct evdev_dev *evdev) in evdev_cdev_create() argument
777 mda.mda_si_drv1 = evdev; in evdev_cdev_create()
780 while ((ret = make_dev_s(&mda, &evdev->ev_cdev, "input/event%d", unit)) in evdev_cdev_create()
785 evdev->ev_unit = unit; in evdev_cdev_create()
791 evdev_cdev_destroy(struct evdev_dev *evdev) in evdev_cdev_destroy() argument
794 destroy_dev(evdev->ev_cdev); in evdev_cdev_destroy()