Lines Matching refs:dev

75 static void input_start_autorepeat(struct input_dev *dev, int code)  in input_start_autorepeat()  argument
77 if (test_bit(EV_REP, dev->evbit) && in input_start_autorepeat()
78 dev->rep[REP_PERIOD] && dev->rep[REP_DELAY] && in input_start_autorepeat()
79 dev->timer.data) { in input_start_autorepeat()
80 dev->repeat_key = code; in input_start_autorepeat()
81 mod_timer(&dev->timer, in input_start_autorepeat()
82 jiffies + msecs_to_jiffies(dev->rep[REP_DELAY])); in input_start_autorepeat()
86 static void input_stop_autorepeat(struct input_dev *dev) in input_stop_autorepeat() argument
88 del_timer(&dev->timer); in input_stop_autorepeat()
131 static void input_pass_values(struct input_dev *dev, in input_pass_values() argument
142 handle = rcu_dereference(dev->grab); in input_pass_values()
146 list_for_each_entry_rcu(handle, &dev->h_list, d_node) in input_pass_values()
159 if (test_bit(EV_REP, dev->evbit) && test_bit(EV_KEY, dev->evbit)) { in input_pass_values()
163 input_start_autorepeat(dev, v->code); in input_pass_values()
165 input_stop_autorepeat(dev); in input_pass_values()
171 static void input_pass_event(struct input_dev *dev, in input_pass_event() argument
176 input_pass_values(dev, vals, ARRAY_SIZE(vals)); in input_pass_event()
186 struct input_dev *dev = (void *) data; in input_repeat_key() local
189 spin_lock_irqsave(&dev->event_lock, flags); in input_repeat_key()
191 if (test_bit(dev->repeat_key, dev->key) && in input_repeat_key()
192 is_event_supported(dev->repeat_key, dev->keybit, KEY_MAX)) { in input_repeat_key()
194 { EV_KEY, dev->repeat_key, 2 }, in input_repeat_key()
198 input_pass_values(dev, vals, ARRAY_SIZE(vals)); in input_repeat_key()
200 if (dev->rep[REP_PERIOD]) in input_repeat_key()
201 mod_timer(&dev->timer, jiffies + in input_repeat_key()
202 msecs_to_jiffies(dev->rep[REP_PERIOD])); in input_repeat_key()
205 spin_unlock_irqrestore(&dev->event_lock, flags); in input_repeat_key()
215 static int input_handle_abs_event(struct input_dev *dev, in input_handle_abs_event() argument
218 struct input_mt *mt = dev->mt; in input_handle_abs_event()
236 pold = &dev->absinfo[code].value; in input_handle_abs_event()
249 dev->absinfo[code].fuzz); in input_handle_abs_event()
257 if (is_mt_event && mt && mt->slot != input_abs_get_val(dev, ABS_MT_SLOT)) { in input_handle_abs_event()
258 input_abs_set_val(dev, ABS_MT_SLOT, mt->slot); in input_handle_abs_event()
265 static int input_get_disposition(struct input_dev *dev, in input_get_disposition() argument
289 if (is_event_supported(code, dev->keybit, KEY_MAX)) { in input_get_disposition()
297 if (!!test_bit(code, dev->key) != !!value) { in input_get_disposition()
299 __change_bit(code, dev->key); in input_get_disposition()
306 if (is_event_supported(code, dev->swbit, SW_MAX) && in input_get_disposition()
307 !!test_bit(code, dev->sw) != !!value) { in input_get_disposition()
309 __change_bit(code, dev->sw); in input_get_disposition()
315 if (is_event_supported(code, dev->absbit, ABS_MAX)) in input_get_disposition()
316 disposition = input_handle_abs_event(dev, code, &value); in input_get_disposition()
321 if (is_event_supported(code, dev->relbit, REL_MAX) && value) in input_get_disposition()
327 if (is_event_supported(code, dev->mscbit, MSC_MAX)) in input_get_disposition()
333 if (is_event_supported(code, dev->ledbit, LED_MAX) && in input_get_disposition()
334 !!test_bit(code, dev->led) != !!value) { in input_get_disposition()
336 __change_bit(code, dev->led); in input_get_disposition()
342 if (is_event_supported(code, dev->sndbit, SND_MAX)) { in input_get_disposition()
344 if (!!test_bit(code, dev->snd) != !!value) in input_get_disposition()
345 __change_bit(code, dev->snd); in input_get_disposition()
351 if (code <= REP_MAX && value >= 0 && dev->rep[code] != value) { in input_get_disposition()
352 dev->rep[code] = value; in input_get_disposition()
371 static void input_handle_event(struct input_dev *dev, in input_handle_event() argument
376 disposition = input_get_disposition(dev, type, code, &value); in input_handle_event()
378 if ((disposition & INPUT_PASS_TO_DEVICE) && dev->event) in input_handle_event()
379 dev->event(dev, type, code, value); in input_handle_event()
381 if (!dev->vals) in input_handle_event()
388 v = &dev->vals[dev->num_vals++]; in input_handle_event()
391 v->value = dev->mt->slot; in input_handle_event()
394 v = &dev->vals[dev->num_vals++]; in input_handle_event()
401 if (dev->num_vals >= 2) in input_handle_event()
402 input_pass_values(dev, dev->vals, dev->num_vals); in input_handle_event()
403 dev->num_vals = 0; in input_handle_event()
404 } else if (dev->num_vals >= dev->max_vals - 2) { in input_handle_event()
405 dev->vals[dev->num_vals++] = input_value_sync; in input_handle_event()
406 input_pass_values(dev, dev->vals, dev->num_vals); in input_handle_event()
407 dev->num_vals = 0; in input_handle_event()
429 void input_event(struct input_dev *dev, in input_event() argument
434 if (is_event_supported(type, dev->evbit, EV_MAX)) { in input_event()
436 spin_lock_irqsave(&dev->event_lock, flags); in input_event()
437 input_handle_event(dev, type, code, value); in input_event()
438 spin_unlock_irqrestore(&dev->event_lock, flags); in input_event()
457 struct input_dev *dev = handle->dev; in input_inject_event() local
461 if (is_event_supported(type, dev->evbit, EV_MAX)) { in input_inject_event()
462 spin_lock_irqsave(&dev->event_lock, flags); in input_inject_event()
465 grab = rcu_dereference(dev->grab); in input_inject_event()
467 input_handle_event(dev, type, code, value); in input_inject_event()
470 spin_unlock_irqrestore(&dev->event_lock, flags); in input_inject_event()
482 void input_alloc_absinfo(struct input_dev *dev) in input_alloc_absinfo() argument
484 if (!dev->absinfo) in input_alloc_absinfo()
485 dev->absinfo = kcalloc(ABS_CNT, sizeof(struct input_absinfo), in input_alloc_absinfo()
488 WARN(!dev->absinfo, "%s(): kcalloc() failed?\n", __func__); in input_alloc_absinfo()
492 void input_set_abs_params(struct input_dev *dev, unsigned int axis, in input_set_abs_params() argument
497 input_alloc_absinfo(dev); in input_set_abs_params()
498 if (!dev->absinfo) in input_set_abs_params()
501 absinfo = &dev->absinfo[axis]; in input_set_abs_params()
507 __set_bit(EV_ABS, dev->evbit); in input_set_abs_params()
508 __set_bit(axis, dev->absbit); in input_set_abs_params()
523 struct input_dev *dev = handle->dev; in input_grab_device() local
526 retval = mutex_lock_interruptible(&dev->mutex); in input_grab_device()
530 if (dev->grab) { in input_grab_device()
535 rcu_assign_pointer(dev->grab, handle); in input_grab_device()
538 mutex_unlock(&dev->mutex); in input_grab_device()
545 struct input_dev *dev = handle->dev; in __input_release_device() local
548 grabber = rcu_dereference_protected(dev->grab, in __input_release_device()
549 lockdep_is_held(&dev->mutex)); in __input_release_device()
551 rcu_assign_pointer(dev->grab, NULL); in __input_release_device()
555 list_for_each_entry(handle, &dev->h_list, d_node) in __input_release_device()
572 struct input_dev *dev = handle->dev; in input_release_device() local
574 mutex_lock(&dev->mutex); in input_release_device()
576 mutex_unlock(&dev->mutex); in input_release_device()
589 struct input_dev *dev = handle->dev; in input_open_device() local
592 retval = mutex_lock_interruptible(&dev->mutex); in input_open_device()
596 if (dev->going_away) { in input_open_device()
603 if (!dev->users++ && dev->open) in input_open_device()
604 retval = dev->open(dev); in input_open_device()
607 dev->users--; in input_open_device()
618 mutex_unlock(&dev->mutex); in input_open_device()
625 struct input_dev *dev = handle->dev; in input_flush_device() local
628 retval = mutex_lock_interruptible(&dev->mutex); in input_flush_device()
632 if (dev->flush) in input_flush_device()
633 retval = dev->flush(dev, file); in input_flush_device()
635 mutex_unlock(&dev->mutex); in input_flush_device()
649 struct input_dev *dev = handle->dev; in input_close_device() local
651 mutex_lock(&dev->mutex); in input_close_device()
655 if (!--dev->users && dev->close) in input_close_device()
656 dev->close(dev); in input_close_device()
667 mutex_unlock(&dev->mutex); in input_close_device()
675 static void input_dev_release_keys(struct input_dev *dev) in input_dev_release_keys() argument
680 if (is_event_supported(EV_KEY, dev->evbit, EV_MAX)) { in input_dev_release_keys()
681 for_each_set_bit(code, dev->key, KEY_CNT) { in input_dev_release_keys()
682 input_pass_event(dev, EV_KEY, code, 0); in input_dev_release_keys()
687 input_pass_event(dev, EV_SYN, SYN_REPORT, 1); in input_dev_release_keys()
689 memset(dev->key, 0, sizeof(dev->key)); in input_dev_release_keys()
696 static void input_disconnect_device(struct input_dev *dev) in input_disconnect_device() argument
705 mutex_lock(&dev->mutex); in input_disconnect_device()
706 dev->going_away = true; in input_disconnect_device()
707 mutex_unlock(&dev->mutex); in input_disconnect_device()
709 spin_lock_irq(&dev->event_lock); in input_disconnect_device()
717 input_dev_release_keys(dev); in input_disconnect_device()
719 list_for_each_entry(handle, &dev->h_list, d_node) in input_disconnect_device()
722 spin_unlock_irq(&dev->event_lock); in input_disconnect_device()
764 static unsigned int input_fetch_keycode(struct input_dev *dev, in input_fetch_keycode() argument
767 switch (dev->keycodesize) { in input_fetch_keycode()
769 return ((u8 *)dev->keycode)[index]; in input_fetch_keycode()
772 return ((u16 *)dev->keycode)[index]; in input_fetch_keycode()
775 return ((u32 *)dev->keycode)[index]; in input_fetch_keycode()
779 static int input_default_getkeycode(struct input_dev *dev, in input_default_getkeycode() argument
785 if (!dev->keycodesize) in input_default_getkeycode()
796 if (index >= dev->keycodemax) in input_default_getkeycode()
799 ke->keycode = input_fetch_keycode(dev, index); in input_default_getkeycode()
807 static int input_default_setkeycode(struct input_dev *dev, in input_default_setkeycode() argument
815 if (!dev->keycodesize) in input_default_setkeycode()
826 if (index >= dev->keycodemax) in input_default_setkeycode()
829 if (dev->keycodesize < sizeof(ke->keycode) && in input_default_setkeycode()
830 (ke->keycode >> (dev->keycodesize * 8))) in input_default_setkeycode()
833 switch (dev->keycodesize) { in input_default_setkeycode()
835 u8 *k = (u8 *)dev->keycode; in input_default_setkeycode()
841 u16 *k = (u16 *)dev->keycode; in input_default_setkeycode()
847 u32 *k = (u32 *)dev->keycode; in input_default_setkeycode()
854 __clear_bit(*old_keycode, dev->keybit); in input_default_setkeycode()
855 __set_bit(ke->keycode, dev->keybit); in input_default_setkeycode()
857 for (i = 0; i < dev->keycodemax; i++) { in input_default_setkeycode()
858 if (input_fetch_keycode(dev, i) == *old_keycode) { in input_default_setkeycode()
859 __set_bit(*old_keycode, dev->keybit); in input_default_setkeycode()
875 int input_get_keycode(struct input_dev *dev, struct input_keymap_entry *ke) in input_get_keycode() argument
880 spin_lock_irqsave(&dev->event_lock, flags); in input_get_keycode()
881 retval = dev->getkeycode(dev, ke); in input_get_keycode()
882 spin_unlock_irqrestore(&dev->event_lock, flags); in input_get_keycode()
896 int input_set_keycode(struct input_dev *dev, in input_set_keycode() argument
906 spin_lock_irqsave(&dev->event_lock, flags); in input_set_keycode()
908 retval = dev->setkeycode(dev, ke, &old_keycode); in input_set_keycode()
913 __clear_bit(KEY_RESERVED, dev->keybit); in input_set_keycode()
919 if (test_bit(EV_KEY, dev->evbit) && in input_set_keycode()
920 !is_event_supported(old_keycode, dev->keybit, KEY_MAX) && in input_set_keycode()
921 __test_and_clear_bit(old_keycode, dev->key)) { in input_set_keycode()
927 input_pass_values(dev, vals, ARRAY_SIZE(vals)); in input_set_keycode()
931 spin_unlock_irqrestore(&dev->event_lock, flags); in input_set_keycode()
938 struct input_dev *dev) in input_match_device() argument
945 if (id->bustype != dev->id.bustype) in input_match_device()
949 if (id->vendor != dev->id.vendor) in input_match_device()
953 if (id->product != dev->id.product) in input_match_device()
957 if (id->version != dev->id.version) in input_match_device()
960 if (!bitmap_subset(id->evbit, dev->evbit, EV_MAX)) in input_match_device()
963 if (!bitmap_subset(id->keybit, dev->keybit, KEY_MAX)) in input_match_device()
966 if (!bitmap_subset(id->relbit, dev->relbit, REL_MAX)) in input_match_device()
969 if (!bitmap_subset(id->absbit, dev->absbit, ABS_MAX)) in input_match_device()
972 if (!bitmap_subset(id->mscbit, dev->mscbit, MSC_MAX)) in input_match_device()
975 if (!bitmap_subset(id->ledbit, dev->ledbit, LED_MAX)) in input_match_device()
978 if (!bitmap_subset(id->sndbit, dev->sndbit, SND_MAX)) in input_match_device()
981 if (!bitmap_subset(id->ffbit, dev->ffbit, FF_MAX)) in input_match_device()
984 if (!bitmap_subset(id->swbit, dev->swbit, SW_MAX)) in input_match_device()
987 if (!handler->match || handler->match(handler, dev)) in input_match_device()
994 static int input_attach_handler(struct input_dev *dev, struct input_handler *handler) in input_attach_handler() argument
999 id = input_match_device(handler, dev); in input_attach_handler()
1003 error = handler->connect(handler, dev, id); in input_attach_handler()
1006 handler->name, kobject_name(&dev->dev.kobj), error); in input_attach_handler()
1137 struct input_dev *dev = container_of(v, struct input_dev, node); in input_devices_seq_show() local
1138 const char *path = kobject_get_path(&dev->dev.kobj, GFP_KERNEL); in input_devices_seq_show()
1142 dev->id.bustype, dev->id.vendor, dev->id.product, dev->id.version); in input_devices_seq_show()
1144 seq_printf(seq, "N: Name=\"%s\"\n", dev->name ? dev->name : ""); in input_devices_seq_show()
1145 seq_printf(seq, "P: Phys=%s\n", dev->phys ? dev->phys : ""); in input_devices_seq_show()
1147 seq_printf(seq, "U: Uniq=%s\n", dev->uniq ? dev->uniq : ""); in input_devices_seq_show()
1150 list_for_each_entry(handle, &dev->h_list, d_node) in input_devices_seq_show()
1154 input_seq_print_bitmap(seq, "PROP", dev->propbit, INPUT_PROP_MAX); in input_devices_seq_show()
1156 input_seq_print_bitmap(seq, "EV", dev->evbit, EV_MAX); in input_devices_seq_show()
1157 if (test_bit(EV_KEY, dev->evbit)) in input_devices_seq_show()
1158 input_seq_print_bitmap(seq, "KEY", dev->keybit, KEY_MAX); in input_devices_seq_show()
1159 if (test_bit(EV_REL, dev->evbit)) in input_devices_seq_show()
1160 input_seq_print_bitmap(seq, "REL", dev->relbit, REL_MAX); in input_devices_seq_show()
1161 if (test_bit(EV_ABS, dev->evbit)) in input_devices_seq_show()
1162 input_seq_print_bitmap(seq, "ABS", dev->absbit, ABS_MAX); in input_devices_seq_show()
1163 if (test_bit(EV_MSC, dev->evbit)) in input_devices_seq_show()
1164 input_seq_print_bitmap(seq, "MSC", dev->mscbit, MSC_MAX); in input_devices_seq_show()
1165 if (test_bit(EV_LED, dev->evbit)) in input_devices_seq_show()
1166 input_seq_print_bitmap(seq, "LED", dev->ledbit, LED_MAX); in input_devices_seq_show()
1167 if (test_bit(EV_SND, dev->evbit)) in input_devices_seq_show()
1168 input_seq_print_bitmap(seq, "SND", dev->sndbit, SND_MAX); in input_devices_seq_show()
1169 if (test_bit(EV_FF, dev->evbit)) in input_devices_seq_show()
1170 input_seq_print_bitmap(seq, "FF", dev->ffbit, FF_MAX); in input_devices_seq_show()
1171 if (test_bit(EV_SW, dev->evbit)) in input_devices_seq_show()
1172 input_seq_print_bitmap(seq, "SW", dev->swbit, SW_MAX); in input_devices_seq_show()
1303 static ssize_t input_dev_show_##name(struct device *dev, \
1307 struct input_dev *input_dev = to_input_dev(dev); \
1366 static ssize_t input_dev_show_modalias(struct device *dev, in input_dev_show_modalias() argument
1370 struct input_dev *id = to_input_dev(dev); in input_dev_show_modalias()
1382 static ssize_t input_dev_show_properties(struct device *dev, in input_dev_show_properties() argument
1386 struct input_dev *input_dev = to_input_dev(dev); in input_dev_show_properties()
1407 static ssize_t input_dev_show_id_##name(struct device *dev, \
1411 struct input_dev *input_dev = to_input_dev(dev); \
1464 static ssize_t input_dev_show_cap_##bm(struct device *dev, \
1468 struct input_dev *input_dev = to_input_dev(dev); \
1513 struct input_dev *dev = to_input_dev(device); in input_dev_release() local
1515 input_ff_destroy(dev); in input_dev_release()
1516 input_mt_destroy_slots(dev); in input_dev_release()
1517 kfree(dev->absinfo); in input_dev_release()
1518 kfree(dev->vals); in input_dev_release()
1519 kfree(dev); in input_dev_release()
1547 struct input_dev *dev) in input_add_uevent_modalias_var() argument
1556 dev, 0); in input_add_uevent_modalias_var()
1578 #define INPUT_ADD_HOTPLUG_MODALIAS_VAR(dev) \ argument
1580 int err = input_add_uevent_modalias_var(env, dev); \
1587 struct input_dev *dev = to_input_dev(device); in input_dev_uevent() local
1590 dev->id.bustype, dev->id.vendor, in input_dev_uevent()
1591 dev->id.product, dev->id.version); in input_dev_uevent()
1592 if (dev->name) in input_dev_uevent()
1593 INPUT_ADD_HOTPLUG_VAR("NAME=\"%s\"", dev->name); in input_dev_uevent()
1594 if (dev->phys) in input_dev_uevent()
1595 INPUT_ADD_HOTPLUG_VAR("PHYS=\"%s\"", dev->phys); in input_dev_uevent()
1596 if (dev->uniq) in input_dev_uevent()
1597 INPUT_ADD_HOTPLUG_VAR("UNIQ=\"%s\"", dev->uniq); in input_dev_uevent()
1599 INPUT_ADD_HOTPLUG_BM_VAR("PROP=", dev->propbit, INPUT_PROP_MAX); in input_dev_uevent()
1601 INPUT_ADD_HOTPLUG_BM_VAR("EV=", dev->evbit, EV_MAX); in input_dev_uevent()
1602 if (test_bit(EV_KEY, dev->evbit)) in input_dev_uevent()
1603 INPUT_ADD_HOTPLUG_BM_VAR("KEY=", dev->keybit, KEY_MAX); in input_dev_uevent()
1604 if (test_bit(EV_REL, dev->evbit)) in input_dev_uevent()
1605 INPUT_ADD_HOTPLUG_BM_VAR("REL=", dev->relbit, REL_MAX); in input_dev_uevent()
1606 if (test_bit(EV_ABS, dev->evbit)) in input_dev_uevent()
1607 INPUT_ADD_HOTPLUG_BM_VAR("ABS=", dev->absbit, ABS_MAX); in input_dev_uevent()
1608 if (test_bit(EV_MSC, dev->evbit)) in input_dev_uevent()
1609 INPUT_ADD_HOTPLUG_BM_VAR("MSC=", dev->mscbit, MSC_MAX); in input_dev_uevent()
1610 if (test_bit(EV_LED, dev->evbit)) in input_dev_uevent()
1611 INPUT_ADD_HOTPLUG_BM_VAR("LED=", dev->ledbit, LED_MAX); in input_dev_uevent()
1612 if (test_bit(EV_SND, dev->evbit)) in input_dev_uevent()
1613 INPUT_ADD_HOTPLUG_BM_VAR("SND=", dev->sndbit, SND_MAX); in input_dev_uevent()
1614 if (test_bit(EV_FF, dev->evbit)) in input_dev_uevent()
1615 INPUT_ADD_HOTPLUG_BM_VAR("FF=", dev->ffbit, FF_MAX); in input_dev_uevent()
1616 if (test_bit(EV_SW, dev->evbit)) in input_dev_uevent()
1617 INPUT_ADD_HOTPLUG_BM_VAR("SW=", dev->swbit, SW_MAX); in input_dev_uevent()
1619 INPUT_ADD_HOTPLUG_MODALIAS_VAR(dev); in input_dev_uevent()
1624 #define INPUT_DO_TOGGLE(dev, type, bits, on) \ argument
1629 if (!test_bit(EV_##type, dev->evbit)) \
1632 for_each_set_bit(i, dev->bits##bit, type##_CNT) { \
1633 active = test_bit(i, dev->bits); \
1637 dev->event(dev, EV_##type, i, on ? active : 0); \
1641 static void input_dev_toggle(struct input_dev *dev, bool activate) in input_dev_toggle() argument
1643 if (!dev->event) in input_dev_toggle()
1646 INPUT_DO_TOGGLE(dev, LED, led, activate); in input_dev_toggle()
1647 INPUT_DO_TOGGLE(dev, SND, snd, activate); in input_dev_toggle()
1649 if (activate && test_bit(EV_REP, dev->evbit)) { in input_dev_toggle()
1650 dev->event(dev, EV_REP, REP_PERIOD, dev->rep[REP_PERIOD]); in input_dev_toggle()
1651 dev->event(dev, EV_REP, REP_DELAY, dev->rep[REP_DELAY]); in input_dev_toggle()
1663 void input_reset_device(struct input_dev *dev) in input_reset_device() argument
1667 mutex_lock(&dev->mutex); in input_reset_device()
1668 spin_lock_irqsave(&dev->event_lock, flags); in input_reset_device()
1670 input_dev_toggle(dev, true); in input_reset_device()
1671 input_dev_release_keys(dev); in input_reset_device()
1673 spin_unlock_irqrestore(&dev->event_lock, flags); in input_reset_device()
1674 mutex_unlock(&dev->mutex); in input_reset_device()
1679 static int input_dev_suspend(struct device *dev) in input_dev_suspend() argument
1681 struct input_dev *input_dev = to_input_dev(dev); in input_dev_suspend()
1699 static int input_dev_resume(struct device *dev) in input_dev_resume() argument
1701 struct input_dev *input_dev = to_input_dev(dev); in input_dev_resume()
1713 static int input_dev_freeze(struct device *dev) in input_dev_freeze() argument
1715 struct input_dev *input_dev = to_input_dev(dev); in input_dev_freeze()
1730 static int input_dev_poweroff(struct device *dev) in input_dev_poweroff() argument
1732 struct input_dev *input_dev = to_input_dev(dev); in input_dev_poweroff()
1762 static char *input_devnode(struct device *dev, umode_t *mode) in input_devnode() argument
1764 return kasprintf(GFP_KERNEL, "input/%s", dev_name(dev)); in input_devnode()
1785 struct input_dev *dev; in input_allocate_device() local
1787 dev = kzalloc(sizeof(struct input_dev), GFP_KERNEL); in input_allocate_device()
1788 if (dev) { in input_allocate_device()
1789 dev->dev.type = &input_dev_type; in input_allocate_device()
1790 dev->dev.class = &input_class; in input_allocate_device()
1791 device_initialize(&dev->dev); in input_allocate_device()
1792 mutex_init(&dev->mutex); in input_allocate_device()
1793 spin_lock_init(&dev->event_lock); in input_allocate_device()
1794 init_timer(&dev->timer); in input_allocate_device()
1795 INIT_LIST_HEAD(&dev->h_list); in input_allocate_device()
1796 INIT_LIST_HEAD(&dev->node); in input_allocate_device()
1798 dev_set_name(&dev->dev, "input%lu", in input_allocate_device()
1804 return dev; in input_allocate_device()
1812 static int devm_input_device_match(struct device *dev, void *res, void *data) in devm_input_device_match() argument
1819 static void devm_input_device_release(struct device *dev, void *res) in devm_input_device_release() argument
1824 dev_dbg(dev, "%s: dropping reference to %s\n", in devm_input_device_release()
1825 __func__, dev_name(&input->dev)); in devm_input_device_release()
1847 struct input_dev *devm_input_allocate_device(struct device *dev) in devm_input_allocate_device() argument
1863 input->dev.parent = dev; in devm_input_allocate_device()
1867 devres_add(dev, devres); in devm_input_allocate_device()
1887 void input_free_device(struct input_dev *dev) in input_free_device() argument
1889 if (dev) { in input_free_device()
1890 if (dev->devres_managed) in input_free_device()
1891 WARN_ON(devres_destroy(dev->dev.parent, in input_free_device()
1894 dev)); in input_free_device()
1895 input_put_device(dev); in input_free_device()
1909 void input_set_capability(struct input_dev *dev, unsigned int type, unsigned int code) in input_set_capability() argument
1913 __set_bit(code, dev->keybit); in input_set_capability()
1917 __set_bit(code, dev->relbit); in input_set_capability()
1921 input_alloc_absinfo(dev); in input_set_capability()
1922 if (!dev->absinfo) in input_set_capability()
1925 __set_bit(code, dev->absbit); in input_set_capability()
1929 __set_bit(code, dev->mscbit); in input_set_capability()
1933 __set_bit(code, dev->swbit); in input_set_capability()
1937 __set_bit(code, dev->ledbit); in input_set_capability()
1941 __set_bit(code, dev->sndbit); in input_set_capability()
1945 __set_bit(code, dev->ffbit); in input_set_capability()
1959 __set_bit(type, dev->evbit); in input_set_capability()
1963 static unsigned int input_estimate_events_per_packet(struct input_dev *dev) in input_estimate_events_per_packet() argument
1969 if (dev->mt) { in input_estimate_events_per_packet()
1970 mt_slots = dev->mt->num_slots; in input_estimate_events_per_packet()
1971 } else if (test_bit(ABS_MT_TRACKING_ID, dev->absbit)) { in input_estimate_events_per_packet()
1972 mt_slots = dev->absinfo[ABS_MT_TRACKING_ID].maximum - in input_estimate_events_per_packet()
1973 dev->absinfo[ABS_MT_TRACKING_ID].minimum + 1, in input_estimate_events_per_packet()
1975 } else if (test_bit(ABS_MT_POSITION_X, dev->absbit)) { in input_estimate_events_per_packet()
1983 if (test_bit(EV_ABS, dev->evbit)) in input_estimate_events_per_packet()
1984 for_each_set_bit(i, dev->absbit, ABS_CNT) in input_estimate_events_per_packet()
1987 if (test_bit(EV_REL, dev->evbit)) in input_estimate_events_per_packet()
1988 events += bitmap_weight(dev->relbit, REL_CNT); in input_estimate_events_per_packet()
1996 #define INPUT_CLEANSE_BITMASK(dev, type, bits) \ argument
1998 if (!test_bit(EV_##type, dev->evbit)) \
1999 memset(dev->bits##bit, 0, \
2000 sizeof(dev->bits##bit)); \
2003 static void input_cleanse_bitmasks(struct input_dev *dev) in input_cleanse_bitmasks() argument
2005 INPUT_CLEANSE_BITMASK(dev, KEY, key); in input_cleanse_bitmasks()
2006 INPUT_CLEANSE_BITMASK(dev, REL, rel); in input_cleanse_bitmasks()
2007 INPUT_CLEANSE_BITMASK(dev, ABS, abs); in input_cleanse_bitmasks()
2008 INPUT_CLEANSE_BITMASK(dev, MSC, msc); in input_cleanse_bitmasks()
2009 INPUT_CLEANSE_BITMASK(dev, LED, led); in input_cleanse_bitmasks()
2010 INPUT_CLEANSE_BITMASK(dev, SND, snd); in input_cleanse_bitmasks()
2011 INPUT_CLEANSE_BITMASK(dev, FF, ff); in input_cleanse_bitmasks()
2012 INPUT_CLEANSE_BITMASK(dev, SW, sw); in input_cleanse_bitmasks()
2015 static void __input_unregister_device(struct input_dev *dev) in __input_unregister_device() argument
2019 input_disconnect_device(dev); in __input_unregister_device()
2023 list_for_each_entry_safe(handle, next, &dev->h_list, d_node) in __input_unregister_device()
2025 WARN_ON(!list_empty(&dev->h_list)); in __input_unregister_device()
2027 del_timer_sync(&dev->timer); in __input_unregister_device()
2028 list_del_init(&dev->node); in __input_unregister_device()
2034 device_del(&dev->dev); in __input_unregister_device()
2037 static void devm_input_device_unregister(struct device *dev, void *res) in devm_input_device_unregister() argument
2042 dev_dbg(dev, "%s: unregistering device %s\n", in devm_input_device_unregister()
2043 __func__, dev_name(&input->dev)); in devm_input_device_unregister()
2055 void input_enable_softrepeat(struct input_dev *dev, int delay, int period) in input_enable_softrepeat() argument
2057 dev->timer.data = (unsigned long) dev; in input_enable_softrepeat()
2058 dev->timer.function = input_repeat_key; in input_enable_softrepeat()
2059 dev->rep[REP_DELAY] = delay; in input_enable_softrepeat()
2060 dev->rep[REP_PERIOD] = period; in input_enable_softrepeat()
2087 int input_register_device(struct input_dev *dev) in input_register_device() argument
2095 if (dev->devres_managed) { in input_register_device()
2101 devres->input = dev; in input_register_device()
2105 __set_bit(EV_SYN, dev->evbit); in input_register_device()
2108 __clear_bit(KEY_RESERVED, dev->keybit); in input_register_device()
2111 input_cleanse_bitmasks(dev); in input_register_device()
2113 packet_size = input_estimate_events_per_packet(dev); in input_register_device()
2114 if (dev->hint_events_per_packet < packet_size) in input_register_device()
2115 dev->hint_events_per_packet = packet_size; in input_register_device()
2117 dev->max_vals = dev->hint_events_per_packet + 2; in input_register_device()
2118 dev->vals = kcalloc(dev->max_vals, sizeof(*dev->vals), GFP_KERNEL); in input_register_device()
2119 if (!dev->vals) { in input_register_device()
2128 if (!dev->rep[REP_DELAY] && !dev->rep[REP_PERIOD]) in input_register_device()
2129 input_enable_softrepeat(dev, 250, 33); in input_register_device()
2131 if (!dev->getkeycode) in input_register_device()
2132 dev->getkeycode = input_default_getkeycode; in input_register_device()
2134 if (!dev->setkeycode) in input_register_device()
2135 dev->setkeycode = input_default_setkeycode; in input_register_device()
2137 error = device_add(&dev->dev); in input_register_device()
2141 path = kobject_get_path(&dev->dev.kobj, GFP_KERNEL); in input_register_device()
2143 dev->name ? dev->name : "Unspecified device", in input_register_device()
2151 list_add_tail(&dev->node, &input_dev_list); in input_register_device()
2154 input_attach_handler(dev, handler); in input_register_device()
2160 if (dev->devres_managed) { in input_register_device()
2161 dev_dbg(dev->dev.parent, "%s: registering %s with devres.\n", in input_register_device()
2162 __func__, dev_name(&dev->dev)); in input_register_device()
2163 devres_add(dev->dev.parent, devres); in input_register_device()
2168 device_del(&dev->dev); in input_register_device()
2170 kfree(dev->vals); in input_register_device()
2171 dev->vals = NULL; in input_register_device()
2185 void input_unregister_device(struct input_dev *dev) in input_unregister_device() argument
2187 if (dev->devres_managed) { in input_unregister_device()
2188 WARN_ON(devres_destroy(dev->dev.parent, in input_unregister_device()
2191 dev)); in input_unregister_device()
2192 __input_unregister_device(dev); in input_unregister_device()
2198 __input_unregister_device(dev); in input_unregister_device()
2199 input_put_device(dev); in input_unregister_device()
2214 struct input_dev *dev; in input_register_handler() local
2225 list_for_each_entry(dev, &input_dev_list, node) in input_register_handler()
2226 input_attach_handler(dev, handler); in input_register_handler()
2306 struct input_dev *dev = handle->dev; in input_register_handle() local
2313 error = mutex_lock_interruptible(&dev->mutex); in input_register_handle()
2322 list_add_rcu(&handle->d_node, &dev->h_list); in input_register_handle()
2324 list_add_tail_rcu(&handle->d_node, &dev->h_list); in input_register_handle()
2326 mutex_unlock(&dev->mutex); in input_register_handle()
2355 struct input_dev *dev = handle->dev; in input_unregister_handle() local
2362 mutex_lock(&dev->mutex); in input_unregister_handle()
2364 mutex_unlock(&dev->mutex); in input_unregister_handle()