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
679 if (is_event_supported(EV_KEY, dev->evbit, EV_MAX)) { in input_dev_release_keys()
681 if (is_event_supported(code, dev->keybit, KEY_MAX) && in input_dev_release_keys()
682 __test_and_clear_bit(code, dev->key)) { in input_dev_release_keys()
683 input_pass_event(dev, EV_KEY, code, 0); in input_dev_release_keys()
686 input_pass_event(dev, EV_SYN, SYN_REPORT, 1); in input_dev_release_keys()
693 static void input_disconnect_device(struct input_dev *dev) in input_disconnect_device() argument
702 mutex_lock(&dev->mutex); in input_disconnect_device()
703 dev->going_away = true; in input_disconnect_device()
704 mutex_unlock(&dev->mutex); in input_disconnect_device()
706 spin_lock_irq(&dev->event_lock); in input_disconnect_device()
714 input_dev_release_keys(dev); in input_disconnect_device()
716 list_for_each_entry(handle, &dev->h_list, d_node) in input_disconnect_device()
719 spin_unlock_irq(&dev->event_lock); in input_disconnect_device()
761 static unsigned int input_fetch_keycode(struct input_dev *dev, in input_fetch_keycode() argument
764 switch (dev->keycodesize) { in input_fetch_keycode()
766 return ((u8 *)dev->keycode)[index]; in input_fetch_keycode()
769 return ((u16 *)dev->keycode)[index]; in input_fetch_keycode()
772 return ((u32 *)dev->keycode)[index]; in input_fetch_keycode()
776 static int input_default_getkeycode(struct input_dev *dev, in input_default_getkeycode() argument
782 if (!dev->keycodesize) in input_default_getkeycode()
793 if (index >= dev->keycodemax) in input_default_getkeycode()
796 ke->keycode = input_fetch_keycode(dev, index); in input_default_getkeycode()
804 static int input_default_setkeycode(struct input_dev *dev, in input_default_setkeycode() argument
812 if (!dev->keycodesize) in input_default_setkeycode()
823 if (index >= dev->keycodemax) in input_default_setkeycode()
826 if (dev->keycodesize < sizeof(ke->keycode) && in input_default_setkeycode()
827 (ke->keycode >> (dev->keycodesize * 8))) in input_default_setkeycode()
830 switch (dev->keycodesize) { in input_default_setkeycode()
832 u8 *k = (u8 *)dev->keycode; in input_default_setkeycode()
838 u16 *k = (u16 *)dev->keycode; in input_default_setkeycode()
844 u32 *k = (u32 *)dev->keycode; in input_default_setkeycode()
851 __clear_bit(*old_keycode, dev->keybit); in input_default_setkeycode()
852 __set_bit(ke->keycode, dev->keybit); in input_default_setkeycode()
854 for (i = 0; i < dev->keycodemax; i++) { in input_default_setkeycode()
855 if (input_fetch_keycode(dev, i) == *old_keycode) { in input_default_setkeycode()
856 __set_bit(*old_keycode, dev->keybit); in input_default_setkeycode()
872 int input_get_keycode(struct input_dev *dev, struct input_keymap_entry *ke) in input_get_keycode() argument
877 spin_lock_irqsave(&dev->event_lock, flags); in input_get_keycode()
878 retval = dev->getkeycode(dev, ke); in input_get_keycode()
879 spin_unlock_irqrestore(&dev->event_lock, flags); in input_get_keycode()
893 int input_set_keycode(struct input_dev *dev, in input_set_keycode() argument
903 spin_lock_irqsave(&dev->event_lock, flags); in input_set_keycode()
905 retval = dev->setkeycode(dev, ke, &old_keycode); in input_set_keycode()
910 __clear_bit(KEY_RESERVED, dev->keybit); in input_set_keycode()
916 if (test_bit(EV_KEY, dev->evbit) && in input_set_keycode()
917 !is_event_supported(old_keycode, dev->keybit, KEY_MAX) && in input_set_keycode()
918 __test_and_clear_bit(old_keycode, dev->key)) { in input_set_keycode()
924 input_pass_values(dev, vals, ARRAY_SIZE(vals)); in input_set_keycode()
928 spin_unlock_irqrestore(&dev->event_lock, flags); in input_set_keycode()
935 struct input_dev *dev) in input_match_device() argument
942 if (id->bustype != dev->id.bustype) in input_match_device()
946 if (id->vendor != dev->id.vendor) in input_match_device()
950 if (id->product != dev->id.product) in input_match_device()
954 if (id->version != dev->id.version) in input_match_device()
957 if (!bitmap_subset(id->evbit, dev->evbit, EV_MAX)) in input_match_device()
960 if (!bitmap_subset(id->keybit, dev->keybit, KEY_MAX)) in input_match_device()
963 if (!bitmap_subset(id->relbit, dev->relbit, REL_MAX)) in input_match_device()
966 if (!bitmap_subset(id->absbit, dev->absbit, ABS_MAX)) in input_match_device()
969 if (!bitmap_subset(id->mscbit, dev->mscbit, MSC_MAX)) in input_match_device()
972 if (!bitmap_subset(id->ledbit, dev->ledbit, LED_MAX)) in input_match_device()
975 if (!bitmap_subset(id->sndbit, dev->sndbit, SND_MAX)) in input_match_device()
978 if (!bitmap_subset(id->ffbit, dev->ffbit, FF_MAX)) in input_match_device()
981 if (!bitmap_subset(id->swbit, dev->swbit, SW_MAX)) in input_match_device()
984 if (!handler->match || handler->match(handler, dev)) in input_match_device()
991 static int input_attach_handler(struct input_dev *dev, struct input_handler *handler) in input_attach_handler() argument
996 id = input_match_device(handler, dev); in input_attach_handler()
1000 error = handler->connect(handler, dev, id); in input_attach_handler()
1003 handler->name, kobject_name(&dev->dev.kobj), error); in input_attach_handler()
1134 struct input_dev *dev = container_of(v, struct input_dev, node); in input_devices_seq_show() local
1135 const char *path = kobject_get_path(&dev->dev.kobj, GFP_KERNEL); in input_devices_seq_show()
1139 dev->id.bustype, dev->id.vendor, dev->id.product, dev->id.version); in input_devices_seq_show()
1141 seq_printf(seq, "N: Name=\"%s\"\n", dev->name ? dev->name : ""); in input_devices_seq_show()
1142 seq_printf(seq, "P: Phys=%s\n", dev->phys ? dev->phys : ""); in input_devices_seq_show()
1144 seq_printf(seq, "U: Uniq=%s\n", dev->uniq ? dev->uniq : ""); in input_devices_seq_show()
1147 list_for_each_entry(handle, &dev->h_list, d_node) in input_devices_seq_show()
1151 input_seq_print_bitmap(seq, "PROP", dev->propbit, INPUT_PROP_MAX); in input_devices_seq_show()
1153 input_seq_print_bitmap(seq, "EV", dev->evbit, EV_MAX); in input_devices_seq_show()
1154 if (test_bit(EV_KEY, dev->evbit)) in input_devices_seq_show()
1155 input_seq_print_bitmap(seq, "KEY", dev->keybit, KEY_MAX); in input_devices_seq_show()
1156 if (test_bit(EV_REL, dev->evbit)) in input_devices_seq_show()
1157 input_seq_print_bitmap(seq, "REL", dev->relbit, REL_MAX); in input_devices_seq_show()
1158 if (test_bit(EV_ABS, dev->evbit)) in input_devices_seq_show()
1159 input_seq_print_bitmap(seq, "ABS", dev->absbit, ABS_MAX); in input_devices_seq_show()
1160 if (test_bit(EV_MSC, dev->evbit)) in input_devices_seq_show()
1161 input_seq_print_bitmap(seq, "MSC", dev->mscbit, MSC_MAX); in input_devices_seq_show()
1162 if (test_bit(EV_LED, dev->evbit)) in input_devices_seq_show()
1163 input_seq_print_bitmap(seq, "LED", dev->ledbit, LED_MAX); in input_devices_seq_show()
1164 if (test_bit(EV_SND, dev->evbit)) in input_devices_seq_show()
1165 input_seq_print_bitmap(seq, "SND", dev->sndbit, SND_MAX); in input_devices_seq_show()
1166 if (test_bit(EV_FF, dev->evbit)) in input_devices_seq_show()
1167 input_seq_print_bitmap(seq, "FF", dev->ffbit, FF_MAX); in input_devices_seq_show()
1168 if (test_bit(EV_SW, dev->evbit)) in input_devices_seq_show()
1169 input_seq_print_bitmap(seq, "SW", dev->swbit, SW_MAX); in input_devices_seq_show()
1300 static ssize_t input_dev_show_##name(struct device *dev, \
1304 struct input_dev *input_dev = to_input_dev(dev); \
1363 static ssize_t input_dev_show_modalias(struct device *dev, in input_dev_show_modalias() argument
1367 struct input_dev *id = to_input_dev(dev); in input_dev_show_modalias()
1379 static ssize_t input_dev_show_properties(struct device *dev, in input_dev_show_properties() argument
1383 struct input_dev *input_dev = to_input_dev(dev); in input_dev_show_properties()
1404 static ssize_t input_dev_show_id_##name(struct device *dev, \
1408 struct input_dev *input_dev = to_input_dev(dev); \
1461 static ssize_t input_dev_show_cap_##bm(struct device *dev, \
1465 struct input_dev *input_dev = to_input_dev(dev); \
1510 struct input_dev *dev = to_input_dev(device); in input_dev_release() local
1512 input_ff_destroy(dev); in input_dev_release()
1513 input_mt_destroy_slots(dev); in input_dev_release()
1514 kfree(dev->absinfo); in input_dev_release()
1515 kfree(dev->vals); in input_dev_release()
1516 kfree(dev); in input_dev_release()
1544 struct input_dev *dev) in input_add_uevent_modalias_var() argument
1553 dev, 0); in input_add_uevent_modalias_var()
1575 #define INPUT_ADD_HOTPLUG_MODALIAS_VAR(dev) \ argument
1577 int err = input_add_uevent_modalias_var(env, dev); \
1584 struct input_dev *dev = to_input_dev(device); in input_dev_uevent() local
1587 dev->id.bustype, dev->id.vendor, in input_dev_uevent()
1588 dev->id.product, dev->id.version); in input_dev_uevent()
1589 if (dev->name) in input_dev_uevent()
1590 INPUT_ADD_HOTPLUG_VAR("NAME=\"%s\"", dev->name); in input_dev_uevent()
1591 if (dev->phys) in input_dev_uevent()
1592 INPUT_ADD_HOTPLUG_VAR("PHYS=\"%s\"", dev->phys); in input_dev_uevent()
1593 if (dev->uniq) in input_dev_uevent()
1594 INPUT_ADD_HOTPLUG_VAR("UNIQ=\"%s\"", dev->uniq); in input_dev_uevent()
1596 INPUT_ADD_HOTPLUG_BM_VAR("PROP=", dev->propbit, INPUT_PROP_MAX); in input_dev_uevent()
1598 INPUT_ADD_HOTPLUG_BM_VAR("EV=", dev->evbit, EV_MAX); in input_dev_uevent()
1599 if (test_bit(EV_KEY, dev->evbit)) in input_dev_uevent()
1600 INPUT_ADD_HOTPLUG_BM_VAR("KEY=", dev->keybit, KEY_MAX); in input_dev_uevent()
1601 if (test_bit(EV_REL, dev->evbit)) in input_dev_uevent()
1602 INPUT_ADD_HOTPLUG_BM_VAR("REL=", dev->relbit, REL_MAX); in input_dev_uevent()
1603 if (test_bit(EV_ABS, dev->evbit)) in input_dev_uevent()
1604 INPUT_ADD_HOTPLUG_BM_VAR("ABS=", dev->absbit, ABS_MAX); in input_dev_uevent()
1605 if (test_bit(EV_MSC, dev->evbit)) in input_dev_uevent()
1606 INPUT_ADD_HOTPLUG_BM_VAR("MSC=", dev->mscbit, MSC_MAX); in input_dev_uevent()
1607 if (test_bit(EV_LED, dev->evbit)) in input_dev_uevent()
1608 INPUT_ADD_HOTPLUG_BM_VAR("LED=", dev->ledbit, LED_MAX); in input_dev_uevent()
1609 if (test_bit(EV_SND, dev->evbit)) in input_dev_uevent()
1610 INPUT_ADD_HOTPLUG_BM_VAR("SND=", dev->sndbit, SND_MAX); in input_dev_uevent()
1611 if (test_bit(EV_FF, dev->evbit)) in input_dev_uevent()
1612 INPUT_ADD_HOTPLUG_BM_VAR("FF=", dev->ffbit, FF_MAX); in input_dev_uevent()
1613 if (test_bit(EV_SW, dev->evbit)) in input_dev_uevent()
1614 INPUT_ADD_HOTPLUG_BM_VAR("SW=", dev->swbit, SW_MAX); in input_dev_uevent()
1616 INPUT_ADD_HOTPLUG_MODALIAS_VAR(dev); in input_dev_uevent()
1621 #define INPUT_DO_TOGGLE(dev, type, bits, on) \ argument
1626 if (!test_bit(EV_##type, dev->evbit)) \
1630 if (!test_bit(i, dev->bits##bit)) \
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()
1985 if (test_bit(i, dev->absbit)) { in input_estimate_events_per_packet()
1994 if (test_bit(EV_REL, dev->evbit)) { in input_estimate_events_per_packet()
1996 if (test_bit(i, dev->relbit)) in input_estimate_events_per_packet()
2006 #define INPUT_CLEANSE_BITMASK(dev, type, bits) \ argument
2008 if (!test_bit(EV_##type, dev->evbit)) \
2009 memset(dev->bits##bit, 0, \
2010 sizeof(dev->bits##bit)); \
2013 static void input_cleanse_bitmasks(struct input_dev *dev) in input_cleanse_bitmasks() argument
2015 INPUT_CLEANSE_BITMASK(dev, KEY, key); in input_cleanse_bitmasks()
2016 INPUT_CLEANSE_BITMASK(dev, REL, rel); in input_cleanse_bitmasks()
2017 INPUT_CLEANSE_BITMASK(dev, ABS, abs); in input_cleanse_bitmasks()
2018 INPUT_CLEANSE_BITMASK(dev, MSC, msc); in input_cleanse_bitmasks()
2019 INPUT_CLEANSE_BITMASK(dev, LED, led); in input_cleanse_bitmasks()
2020 INPUT_CLEANSE_BITMASK(dev, SND, snd); in input_cleanse_bitmasks()
2021 INPUT_CLEANSE_BITMASK(dev, FF, ff); in input_cleanse_bitmasks()
2022 INPUT_CLEANSE_BITMASK(dev, SW, sw); in input_cleanse_bitmasks()
2025 static void __input_unregister_device(struct input_dev *dev) in __input_unregister_device() argument
2029 input_disconnect_device(dev); in __input_unregister_device()
2033 list_for_each_entry_safe(handle, next, &dev->h_list, d_node) in __input_unregister_device()
2035 WARN_ON(!list_empty(&dev->h_list)); in __input_unregister_device()
2037 del_timer_sync(&dev->timer); in __input_unregister_device()
2038 list_del_init(&dev->node); in __input_unregister_device()
2044 device_del(&dev->dev); in __input_unregister_device()
2047 static void devm_input_device_unregister(struct device *dev, void *res) in devm_input_device_unregister() argument
2052 dev_dbg(dev, "%s: unregistering device %s\n", in devm_input_device_unregister()
2053 __func__, dev_name(&input->dev)); in devm_input_device_unregister()
2080 int input_register_device(struct input_dev *dev) in input_register_device() argument
2088 if (dev->devres_managed) { in input_register_device()
2094 devres->input = dev; in input_register_device()
2098 __set_bit(EV_SYN, dev->evbit); in input_register_device()
2101 __clear_bit(KEY_RESERVED, dev->keybit); in input_register_device()
2104 input_cleanse_bitmasks(dev); in input_register_device()
2106 packet_size = input_estimate_events_per_packet(dev); in input_register_device()
2107 if (dev->hint_events_per_packet < packet_size) in input_register_device()
2108 dev->hint_events_per_packet = packet_size; in input_register_device()
2110 dev->max_vals = dev->hint_events_per_packet + 2; in input_register_device()
2111 dev->vals = kcalloc(dev->max_vals, sizeof(*dev->vals), GFP_KERNEL); in input_register_device()
2112 if (!dev->vals) { in input_register_device()
2121 if (!dev->rep[REP_DELAY] && !dev->rep[REP_PERIOD]) { in input_register_device()
2122 dev->timer.data = (long) dev; in input_register_device()
2123 dev->timer.function = input_repeat_key; in input_register_device()
2124 dev->rep[REP_DELAY] = 250; in input_register_device()
2125 dev->rep[REP_PERIOD] = 33; in input_register_device()
2128 if (!dev->getkeycode) in input_register_device()
2129 dev->getkeycode = input_default_getkeycode; in input_register_device()
2131 if (!dev->setkeycode) in input_register_device()
2132 dev->setkeycode = input_default_setkeycode; in input_register_device()
2134 error = device_add(&dev->dev); in input_register_device()
2138 path = kobject_get_path(&dev->dev.kobj, GFP_KERNEL); in input_register_device()
2140 dev->name ? dev->name : "Unspecified device", in input_register_device()
2148 list_add_tail(&dev->node, &input_dev_list); in input_register_device()
2151 input_attach_handler(dev, handler); in input_register_device()
2157 if (dev->devres_managed) { in input_register_device()
2158 dev_dbg(dev->dev.parent, "%s: registering %s with devres.\n", in input_register_device()
2159 __func__, dev_name(&dev->dev)); in input_register_device()
2160 devres_add(dev->dev.parent, devres); in input_register_device()
2165 device_del(&dev->dev); in input_register_device()
2167 kfree(dev->vals); in input_register_device()
2168 dev->vals = NULL; in input_register_device()
2182 void input_unregister_device(struct input_dev *dev) in input_unregister_device() argument
2184 if (dev->devres_managed) { in input_unregister_device()
2185 WARN_ON(devres_destroy(dev->dev.parent, in input_unregister_device()
2188 dev)); in input_unregister_device()
2189 __input_unregister_device(dev); in input_unregister_device()
2195 __input_unregister_device(dev); in input_unregister_device()
2196 input_put_device(dev); in input_unregister_device()
2211 struct input_dev *dev; in input_register_handler() local
2222 list_for_each_entry(dev, &input_dev_list, node) in input_register_handler()
2223 input_attach_handler(dev, handler); in input_register_handler()
2303 struct input_dev *dev = handle->dev; in input_register_handle() local
2310 error = mutex_lock_interruptible(&dev->mutex); in input_register_handle()
2319 list_add_rcu(&handle->d_node, &dev->h_list); in input_register_handle()
2321 list_add_tail_rcu(&handle->d_node, &dev->h_list); in input_register_handle()
2323 mutex_unlock(&dev->mutex); in input_register_handle()
2352 struct input_dev *dev = handle->dev; in input_unregister_handle() local
2359 mutex_lock(&dev->mutex); in input_unregister_handle()
2361 mutex_unlock(&dev->mutex); in input_unregister_handle()