13 #define pr_fmt(fmt) KBUILD_BASENAME ": " fmt
16 #include <linux/types.h>
19 #include <linux/module.h>
20 #include <linux/slab.h>
21 #include <linux/random.h>
24 #include <linux/sched.h>
26 #include <linux/poll.h>
27 #include <linux/device.h>
36 #define INPUT_MAX_CHAR_DEVICES 1024
37 #define INPUT_FIRST_DYNAMIC_DEV 256
51 static const struct input_value input_value_sync = {
EV_SYN,
SYN_REPORT, 1 };
53 static inline int is_event_supported(
unsigned int code,
54 unsigned long *bm,
unsigned int max)
56 return code <= max &&
test_bit(code, bm);
59 static int input_defuzz_abs_event(
int value,
int old_val,
int fuzz)
62 if (value > old_val - fuzz / 2 && value < old_val + fuzz / 2)
65 if (value > old_val - fuzz && value < old_val + fuzz)
66 return (old_val * 3 + value) / 4;
68 if (value > old_val - fuzz * 2 && value < old_val + fuzz * 2)
69 return (old_val + value) / 2;
75 static void input_start_autorepeat(
struct input_dev *
dev,
int code)
80 dev->repeat_key =
code;
86 static void input_stop_autorepeat(
struct input_dev *dev)
96 static unsigned int input_to_handler(
struct input_handle *
handle,
97 struct input_value *vals,
unsigned int count)
99 struct input_handler *
handler = handle->handler;
100 struct input_value *
end = vals;
101 struct input_value *
v;
103 for (v = vals; v != vals +
count; v++) {
104 if (handler->filter &&
105 handler->filter(handle, v->type, v->code, v->value))
117 handler->events(handle, vals, count);
118 else if (handler->event)
119 for (v = vals; v !=
end; v++)
120 handler->event(handle, v->type, v->code, v->value);
130 static void input_pass_values(
struct input_dev *dev,
131 struct input_value *vals,
unsigned int count)
133 struct input_handle *
handle;
134 struct input_value *
v;
143 count = input_to_handler(handle, vals, count);
145 list_for_each_entry_rcu(handle, &dev->h_list, d_node)
147 count = input_to_handler(handle, vals, count);
155 for (v = vals; v != vals + count; v++) {
156 if (v->type ==
EV_KEY && v->value != 2) {
158 input_start_autorepeat(dev, v->code);
160 input_stop_autorepeat(dev);
165 static void input_pass_event(
struct input_dev *dev,
166 unsigned int type,
unsigned int code,
int value)
168 struct input_value vals[] = { {
type,
code, value } };
170 input_pass_values(dev, vals,
ARRAY_SIZE(vals));
178 static void input_repeat_key(
unsigned long data)
180 struct input_dev *dev = (
void *) data;
185 if (
test_bit(dev->repeat_key, dev->key) &&
186 is_event_supported(dev->repeat_key, dev->keybit,
KEY_MAX)) {
187 struct input_value vals[] = {
188 {
EV_KEY, dev->repeat_key, 2 },
192 input_pass_values(dev, vals,
ARRAY_SIZE(vals));
199 spin_unlock_irqrestore(&dev->event_lock, flags);
202 #define INPUT_IGNORE_EVENT 0
203 #define INPUT_PASS_TO_HANDLERS 1
204 #define INPUT_PASS_TO_DEVICE 2
206 #define INPUT_FLUSH 8
207 #define INPUT_PASS_TO_ALL (INPUT_PASS_TO_HANDLERS | INPUT_PASS_TO_DEVICE)
209 static int input_handle_abs_event(
struct input_dev *dev,
210 unsigned int code,
int *pval)
221 if (mt && *pval >= 0 && *pval < mt->
num_slots)
227 is_mt_event = input_is_mt_value(code);
230 pold = &dev->absinfo[
code].value;
242 *pval = input_defuzz_abs_event(*pval, *pold,
243 dev->absinfo[code].fuzz);
251 if (is_mt_event && mt && mt->
slot != input_abs_get_val(dev,
ABS_MT_SLOT)) {
259 static int input_get_disposition(
struct input_dev *dev,
260 unsigned int type,
unsigned int code,
int value)
282 if (is_event_supported(code, dev->keybit,
KEY_MAX)) {
290 if (!!
test_bit(code, dev->key) != !!value) {
299 if (is_event_supported(code, dev->swbit,
SW_MAX) &&
300 !!
test_bit(code, dev->sw) != !!value) {
308 if (is_event_supported(code, dev->absbit,
ABS_MAX))
309 disposition = input_handle_abs_event(dev, code, &value);
314 if (is_event_supported(code, dev->relbit,
REL_MAX) && value)
320 if (is_event_supported(code, dev->mscbit,
MSC_MAX))
326 if (is_event_supported(code, dev->ledbit,
LED_MAX) &&
327 !!
test_bit(code, dev->led) != !!value) {
335 if (is_event_supported(code, dev->sndbit,
SND_MAX)) {
337 if (!!
test_bit(code, dev->snd) != !!value)
363 static void input_handle_event(
struct input_dev *dev,
364 unsigned int type,
unsigned int code,
int value)
368 disposition = input_get_disposition(dev, type, code, value);
371 dev->event(dev, type, code, value);
377 struct input_value *
v;
380 v = &dev->vals[dev->num_vals++];
383 v->value = dev->mt->slot;
386 v = &dev->vals[dev->num_vals++];
393 if (dev->num_vals >= 2)
394 input_pass_values(dev, dev->vals, dev->num_vals);
396 }
else if (dev->num_vals >= dev->max_vals - 2) {
397 dev->vals[dev->num_vals++] = input_value_sync;
398 input_pass_values(dev, dev->vals, dev->num_vals);
422 unsigned int type,
unsigned int code,
int value)
426 if (is_event_supported(type, dev->evbit,
EV_MAX)) {
429 input_handle_event(dev, type, code, value);
430 spin_unlock_irqrestore(&dev->event_lock, flags);
446 void input_inject_event(
struct input_handle *handle,
447 unsigned int type,
unsigned int code,
int value)
449 struct input_dev *dev = handle->dev;
450 struct input_handle *grab;
453 if (is_event_supported(type, dev->evbit,
EV_MAX)) {
458 if (!grab || grab == handle)
459 input_handle_event(dev, type, code, value);
462 spin_unlock_irqrestore(&dev->event_lock, flags);
474 void input_alloc_absinfo(
struct input_dev *dev)
480 WARN(!dev->absinfo,
"%s(): kcalloc() failed?\n", __func__);
484 void input_set_abs_params(
struct input_dev *dev,
unsigned int axis,
485 int min,
int max,
int fuzz,
int flat)
489 input_alloc_absinfo(dev);
493 absinfo = &dev->absinfo[axis];
512 int input_grab_device(
struct input_handle *handle)
514 struct input_dev *dev = handle->dev;
534 static void __input_release_device(
struct input_handle *handle)
536 struct input_dev *dev = handle->dev;
538 if (dev->grab == handle) {
545 handle->handler->
start(handle);
558 void input_release_device(
struct input_handle *handle)
560 struct input_dev *dev = handle->dev;
563 __input_release_device(handle);
575 int input_open_device(
struct input_handle *handle)
577 struct input_dev *dev = handle->dev;
584 if (dev->going_away) {
591 if (!dev->users++ && dev->open)
592 retval = dev->open(dev);
596 if (!--handle->open) {
611 int input_flush_device(
struct input_handle *handle,
struct file *
file)
613 struct input_dev *dev = handle->dev;
621 retval = dev->flush(dev, file);
635 void input_close_device(
struct input_handle *handle)
637 struct input_dev *dev = handle->dev;
641 __input_release_device(handle);
643 if (!--dev->users && dev->close)
646 if (!--handle->open) {
663 static void input_dev_release_keys(
struct input_dev *dev)
668 for (code = 0; code <=
KEY_MAX; code++) {
669 if (is_event_supported(code, dev->keybit,
KEY_MAX) &&
671 input_pass_event(dev,
EV_KEY, code, 0);
681 static void input_disconnect_device(
struct input_dev *dev)
683 struct input_handle *
handle;
691 dev->going_away =
true;
694 spin_lock_irq(&dev->event_lock);
702 input_dev_release_keys(dev);
707 spin_unlock_irq(&dev->event_lock);
721 unsigned int *scancode)
725 *scancode = *((
u8 *)ke->scancode);
729 *scancode = *((
u16 *)ke->scancode);
733 *scancode = *((
u32 *)ke->scancode);
749 static unsigned int input_fetch_keycode(
struct input_dev *dev,
752 switch (dev->keycodesize) {
754 return ((
u8 *)dev->keycode)[
index];
757 return ((
u16 *)dev->keycode)[
index];
760 return ((
u32 *)dev->keycode)[
index];
764 static int input_default_getkeycode(
struct input_dev *dev,
770 if (!dev->keycodesize)
776 error = input_scancode_to_scalar(ke, &index);
781 if (index >= dev->keycodemax)
784 ke->
keycode = input_fetch_keycode(dev, index);
792 static int input_default_setkeycode(
struct input_dev *dev,
794 unsigned int *old_keycode)
800 if (!dev->keycodesize)
806 error = input_scancode_to_scalar(ke, &index);
811 if (index >= dev->keycodemax)
814 if (dev->keycodesize <
sizeof(ke->
keycode) &&
815 (ke->
keycode >> (dev->keycodesize * 8)))
818 switch (dev->keycodesize) {
820 u8 *
k = (
u8 *)dev->keycode;
821 *old_keycode = k[index];
827 *old_keycode = k[index];
833 *old_keycode = k[index];
842 for (i = 0; i < dev->keycodemax; i++) {
843 if (input_fetch_keycode(dev, i) == *old_keycode) {
866 retval = dev->getkeycode(dev, ke);
867 spin_unlock_irqrestore(&dev->event_lock, flags);
881 int input_set_keycode(
struct input_dev *dev,
885 unsigned int old_keycode;
893 retval = dev->setkeycode(dev, ke, &old_keycode);
905 !is_event_supported(old_keycode, dev->keybit,
KEY_MAX) &&
907 struct input_value vals[] = {
908 {
EV_KEY, old_keycode, 0 },
912 input_pass_values(dev, vals,
ARRAY_SIZE(vals));
916 spin_unlock_irqrestore(&dev->event_lock, flags);
922 static const struct input_device_id *input_match_device(
struct input_handler *handler,
923 struct input_dev *dev)
930 if (id->
bustype != dev->id.bustype)
934 if (id->
vendor != dev->id.vendor)
938 if (id->
product != dev->id.product)
942 if (id->
version != dev->id.version)
972 if (!handler->match || handler->match(handler, dev))
979 static int input_attach_handler(
struct input_dev *dev,
struct input_handler *handler)
984 id = input_match_device(handler, dev);
988 error = handler->connect(handler, dev,
id);
989 if (error && error != -
ENODEV)
990 pr_err(
"failed to attach handler %s to device %s, error: %d\n",
991 handler->name, kobject_name(&dev->dev.kobj), error);
998 static int input_bits_to_string(
char *
buf,
int buf_size,
999 unsigned long bits,
bool skip_empty)
1003 if (INPUT_COMPAT_TEST) {
1005 if (dword || !skip_empty)
1006 len +=
snprintf(buf, buf_size,
"%x ", dword);
1008 dword = bits & 0xffffffff
UL;
1009 if (dword || !skip_empty || len)
1010 len +=
snprintf(buf + len,
max(buf_size - len, 0),
1013 if (bits || !skip_empty)
1014 len +=
snprintf(buf, buf_size,
"%lx", bits);
1022 static int input_bits_to_string(
char *buf,
int buf_size,
1023 unsigned long bits,
bool skip_empty)
1025 return bits || !skip_empty ?
1026 snprintf(buf, buf_size,
"%lx", bits) : 0;
1031 #ifdef CONFIG_PROC_FS
1035 static int input_devices_state;
1037 static inline void input_wakeup_procfs_readers(
void)
1039 input_devices_state++;
1040 wake_up(&input_devices_poll_wait);
1043 static unsigned int input_proc_devices_poll(
struct file *file,
poll_table *
wait)
1045 poll_wait(file, &input_devices_poll_wait, wait);
1046 if (file->
f_version != input_devices_state) {
1054 union input_seq_state {
1057 bool mutex_acquired;
1062 static void *input_devices_seq_start(
struct seq_file *seq, loff_t *
pos)
1064 union input_seq_state *
state = (
union input_seq_state *)&seq->
private;
1072 state->mutex_acquired =
false;
1073 return ERR_PTR(error);
1076 state->mutex_acquired =
true;
1081 static void *input_devices_seq_next(
struct seq_file *seq,
void *v, loff_t *pos)
1086 static void input_seq_stop(
struct seq_file *seq,
void *v)
1088 union input_seq_state *state = (
union input_seq_state *)&seq->
private;
1090 if (state->mutex_acquired)
1094 static void input_seq_print_bitmap(
struct seq_file *seq,
const char *
name,
1095 unsigned long *
bitmap,
int max)
1098 bool skip_empty =
true;
1104 if (input_bits_to_string(buf,
sizeof(buf),
1105 bitmap[i], skip_empty)) {
1107 seq_printf(seq,
"%s%s", buf, i > 0 ?
" " :
"");
1120 static int input_devices_seq_show(
struct seq_file *seq,
void *v)
1124 struct input_handle *
handle;
1126 seq_printf(seq,
"I: Bus=%04x Vendor=%04x Product=%04x Version=%04x\n",
1127 dev->id.bustype, dev->id.vendor, dev->id.product, dev->id.
version);
1129 seq_printf(seq,
"N: Name=\"%s\"\n", dev->name ? dev->name :
"");
1130 seq_printf(seq,
"P: Phys=%s\n", dev->phys ? dev->phys :
"");
1131 seq_printf(seq,
"S: Sysfs=%s\n", path ? path :
"");
1132 seq_printf(seq,
"U: Uniq=%s\n", dev->uniq ? dev->uniq :
"");
1139 input_seq_print_bitmap(seq, "PROP", dev->propbit,
INPUT_PROP_MAX);
1141 input_seq_print_bitmap(seq, "EV", dev->evbit,
EV_MAX);
1143 input_seq_print_bitmap(seq, "
KEY", dev->keybit,
KEY_MAX);
1145 input_seq_print_bitmap(seq, "REL", dev->relbit,
REL_MAX);
1147 input_seq_print_bitmap(seq, "
ABS", dev->absbit,
ABS_MAX);
1149 input_seq_print_bitmap(seq, "MSC", dev->mscbit,
MSC_MAX);
1151 input_seq_print_bitmap(seq, "
LED", dev->ledbit,
LED_MAX);
1153 input_seq_print_bitmap(seq, "SND", dev->sndbit,
SND_MAX);
1155 input_seq_print_bitmap(seq, "
FF", dev->ffbit,
FF_MAX);
1157 input_seq_print_bitmap(seq, "
SW", dev->swbit,
SW_MAX);
1166 .
start = input_devices_seq_start,
1167 .next = input_devices_seq_next,
1168 .stop = input_seq_stop,
1169 .show = input_devices_seq_show,
1172 static int input_proc_devices_open(
struct inode *
inode,
struct file *file)
1174 return seq_open(file, &input_devices_seq_ops);
1179 .open = input_proc_devices_open,
1180 .poll = input_proc_devices_poll,
1186 static void *input_handlers_seq_start(
struct seq_file *seq, loff_t *pos)
1188 union input_seq_state *state = (
union input_seq_state *)&seq->
private;
1196 state->mutex_acquired =
false;
1197 return ERR_PTR(error);
1200 state->mutex_acquired =
true;
1206 static void *input_handlers_seq_next(
struct seq_file *seq,
void *v, loff_t *pos)
1208 union input_seq_state *state = (
union input_seq_state *)&seq->
private;
1210 state->pos = *pos + 1;
1214 static int input_handlers_seq_show(
struct seq_file *seq,
void *v)
1216 struct input_handler *handler =
container_of(v,
struct input_handler,
node);
1217 union input_seq_state *state = (
union input_seq_state *)&seq->
private;
1219 seq_printf(seq,
"N: Number=%u Name=%s", state->pos, handler->name);
1220 if (handler->filter)
1222 if (handler->legacy_minors)
1223 seq_printf(seq,
" Minor=%d", handler->minor);
1230 .
start = input_handlers_seq_start,
1231 .next = input_handlers_seq_next,
1232 .stop = input_seq_stop,
1233 .show = input_handlers_seq_show,
1236 static int input_proc_handlers_open(
struct inode *
inode,
struct file *file)
1238 return seq_open(file, &input_handlers_seq_ops);
1243 .open = input_proc_handlers_open,
1249 static int __init input_proc_init(
void)
1254 if (!proc_bus_input_dir)
1257 entry = proc_create(
"devices", 0, proc_bus_input_dir,
1258 &input_devices_fileops);
1262 entry = proc_create(
"handlers", 0, proc_bus_input_dir,
1263 &input_handlers_fileops);
1274 static void input_proc_exit(
void)
1282 static inline void input_wakeup_procfs_readers(
void) { }
1283 static inline int input_proc_init(
void) {
return 0; }
1284 static inline void input_proc_exit(
void) { }
1287 #define INPUT_DEV_STRING_ATTR_SHOW(name) \
1288 static ssize_t input_dev_show_##name(struct device *dev, \
1289 struct device_attribute *attr, \
1292 struct input_dev *input_dev = to_input_dev(dev); \
1294 return scnprintf(buf, PAGE_SIZE, "%s\n", \
1295 input_dev->name ? input_dev->name : ""); \
1297 static DEVICE_ATTR(name, S_IRUGO, input_dev_show_##name, NULL)
1303 static int input_print_modalias_bits(
char *buf,
int size,
1304 char name,
unsigned long *bm,
1305 unsigned int min_bit,
unsigned int max_bit)
1310 for (i = min_bit; i < max_bit; i++)
1312 len +=
snprintf(buf + len,
max(size - len, 0),
"%X,", i);
1316 static int input_print_modalias(
char *buf,
int size,
struct input_dev *
id,
1322 "input:b%04Xv%04Xp%04Xe%04X-",
1323 id->id.bustype, id->id.vendor,
1324 id->id.product, id->id.version);
1326 len += input_print_modalias_bits(buf + len, size - len,
1327 'e', id->evbit, 0,
EV_MAX);
1328 len += input_print_modalias_bits(buf + len, size - len,
1330 len += input_print_modalias_bits(buf + len, size - len,
1332 len += input_print_modalias_bits(buf + len, size - len,
1334 len += input_print_modalias_bits(buf + len, size - len,
1336 len += input_print_modalias_bits(buf + len, size - len,
1338 len += input_print_modalias_bits(buf + len, size - len,
1340 len += input_print_modalias_bits(buf + len, size - len,
1341 'f', id->ffbit, 0,
FF_MAX);
1342 len += input_print_modalias_bits(buf + len, size - len,
1343 'w', id->swbit, 0,
SW_MAX);
1346 len +=
snprintf(buf + len,
max(size - len, 0),
"\n");
1358 len = input_print_modalias(buf,
PAGE_SIZE,
id, 1);
1364 static int input_print_bitmap(
char *buf,
int buf_size,
unsigned long *bitmap,
1365 int max,
int add_cr);
1367 static ssize_t input_dev_show_properties(
struct device *dev,
1372 int len = input_print_bitmap(buf,
PAGE_SIZE, input_dev->propbit,
1378 static struct attribute *input_dev_attrs[] = {
1379 &dev_attr_name.attr,
1380 &dev_attr_phys.attr,
1381 &dev_attr_uniq.attr,
1382 &dev_attr_modalias.attr,
1383 &dev_attr_properties.attr,
1388 .
attrs = input_dev_attrs,
1391 #define INPUT_DEV_ID_ATTR(name) \
1392 static ssize_t input_dev_show_id_##name(struct device *dev, \
1393 struct device_attribute *attr, \
1396 struct input_dev *input_dev = to_input_dev(dev); \
1397 return scnprintf(buf, PAGE_SIZE, "%04x\n", input_dev->id.name); \
1399 static DEVICE_ATTR(name, S_IRUGO, input_dev_show_id_##name, NULL)
1406 static struct attribute *input_dev_id_attrs[] = {
1407 &dev_attr_bustype.attr,
1408 &dev_attr_vendor.attr,
1409 &dev_attr_product.attr,
1410 &dev_attr_version.attr,
1416 .attrs = input_dev_id_attrs,
1419 static int input_print_bitmap(
char *buf,
int buf_size,
unsigned long *bitmap,
1420 int max,
int add_cr)
1424 bool skip_empty =
true;
1427 len += input_bits_to_string(buf + len,
max(buf_size - len, 0),
1428 bitmap[i], skip_empty);
1432 len +=
snprintf(buf + len,
max(buf_size - len, 0),
" ");
1440 len =
snprintf(buf, buf_size,
"%d", 0);
1443 len +=
snprintf(buf + len,
max(buf_size - len, 0),
"\n");
1448 #define INPUT_DEV_CAP_ATTR(ev, bm) \
1449 static ssize_t input_dev_show_cap_##bm(struct device *dev, \
1450 struct device_attribute *attr, \
1453 struct input_dev *input_dev = to_input_dev(dev); \
1454 int len = input_print_bitmap(buf, PAGE_SIZE, \
1455 input_dev->bm##bit, ev##_MAX, \
1457 return min_t(int, len, PAGE_SIZE); \
1459 static DEVICE_ATTR(bm, S_IRUGO, input_dev_show_cap_##bm, NULL)
1471 static struct attribute *input_dev_caps_attrs[] = {
1485 .
name =
"capabilities",
1486 .attrs = input_dev_caps_attrs,
1490 &input_dev_attr_group,
1491 &input_dev_id_attr_group,
1492 &input_dev_caps_attr_group,
1500 input_ff_destroy(dev);
1502 kfree(dev->absinfo);
1514 const char *name,
unsigned long *bitmap,
int max)
1521 len = input_print_bitmap(&env->
buf[env->
buflen - 1],
1523 bitmap, max,
false);
1524 if (len >= (
sizeof(env->
buf) - env->
buflen))
1532 struct input_dev *dev)
1539 len = input_print_modalias(&env->
buf[env->
buflen - 1],
1542 if (len >= (
sizeof(env->
buf) - env->
buflen))
1549 #define INPUT_ADD_HOTPLUG_VAR(fmt, val...) \
1551 int err = add_uevent_var(env, fmt, val); \
1556 #define INPUT_ADD_HOTPLUG_BM_VAR(name, bm, max) \
1558 int err = input_add_uevent_bm_var(env, name, bm, max); \
1563 #define INPUT_ADD_HOTPLUG_MODALIAS_VAR(dev) \
1565 int err = input_add_uevent_modalias_var(env, dev); \
1575 dev->id.bustype, dev->id.vendor,
1576 dev->id.product, dev->id.version);
1609 #define INPUT_DO_TOGGLE(dev, type, bits, on) \
1614 if (!test_bit(EV_##type, dev->evbit)) \
1617 for (i = 0; i < type##_MAX; i++) { \
1618 if (!test_bit(i, dev->bits##bit)) \
1621 active = test_bit(i, dev->bits); \
1622 if (!active && !on) \
1625 dev->event(dev, EV_##type, i, on ? active : 0); \
1629 static void input_dev_toggle(
struct input_dev *dev,
bool activate)
1651 void input_reset_device(
struct input_dev *dev)
1656 input_dev_toggle(dev,
true);
1662 spin_lock_irq(&dev->event_lock);
1663 input_dev_release_keys(dev);
1664 spin_unlock_irq(&dev->event_lock);
1672 static int input_dev_suspend(
struct device *dev)
1678 if (input_dev->users)
1679 input_dev_toggle(input_dev,
false);
1686 static int input_dev_resume(
struct device *dev)
1690 input_reset_device(input_dev);
1695 static const struct dev_pm_ops input_dev_pm_ops = {
1697 .resume = input_dev_resume,
1698 .poweroff = input_dev_suspend,
1699 .restore = input_dev_resume,
1704 .
groups = input_dev_attr_groups,
1705 .release = input_dev_release,
1706 .uevent = input_dev_uevent,
1708 .pm = &input_dev_pm_ops,
1712 static char *input_devnode(
struct device *dev,
umode_t *
mode)
1717 struct class input_class = {
1719 .devnode = input_devnode,
1732 struct input_dev *input_allocate_device(
void)
1734 struct input_dev *
dev;
1736 dev = kzalloc(
sizeof(
struct input_dev),
GFP_KERNEL);
1738 dev->dev.type = &input_dev_type;
1739 dev->dev.class = &input_class;
1743 INIT_LIST_HEAD(&dev->h_list);
1744 INIT_LIST_HEAD(&dev->node);
1767 void input_free_device(
struct input_dev *dev)
1770 input_put_device(dev);
1783 void input_set_capability(
struct input_dev *dev,
unsigned int type,
unsigned int code)
1823 pr_err(
"input_set_capability: unknown type %u (code %u)\n",
1833 static unsigned int input_estimate_events_per_packet(
struct input_dev *dev)
1840 mt_slots = dev->mt->num_slots;
1844 mt_slots =
clamp(mt_slots, 2, 32);
1851 events = mt_slots + 1;
1853 for (i = 0; i <
ABS_CNT; i++) {
1855 if (input_is_mt_axis(i))
1872 #define INPUT_CLEANSE_BITMASK(dev, type, bits) \
1874 if (!test_bit(EV_##type, dev->evbit)) \
1875 memset(dev->bits##bit, 0, \
1876 sizeof(dev->bits##bit)); \
1879 static void input_cleanse_bitmasks(
struct input_dev *dev)
1903 int input_register_device(
struct input_dev *dev)
1906 struct input_handler *handler;
1907 unsigned int packet_size;
1918 input_cleanse_bitmasks(dev);
1920 packet_size = input_estimate_events_per_packet(dev);
1921 if (dev->hint_events_per_packet < packet_size)
1922 dev->hint_events_per_packet = packet_size;
1924 dev->max_vals =
max(dev->hint_events_per_packet, packet_size) + 2;
1925 dev->vals = kcalloc(dev->max_vals,
sizeof(*dev->vals),
GFP_KERNEL);
1935 dev->timer.data = (
long) dev;
1936 dev->timer.function = input_repeat_key;
1941 if (!dev->getkeycode)
1942 dev->getkeycode = input_default_getkeycode;
1944 if (!dev->setkeycode)
1945 dev->setkeycode = input_default_setkeycode;
1956 dev->name ? dev->name :
"Unspecified device",
1957 path ? path :
"N/A");
1969 input_attach_handler(dev, handler);
1971 input_wakeup_procfs_readers();
1986 void input_unregister_device(
struct input_dev *dev)
1990 input_disconnect_device(dev);
1996 WARN_ON(!list_empty(&dev->h_list));
1999 list_del_init(&dev->
node);
2001 input_wakeup_procfs_readers();
2017 int input_register_handler(
struct input_handler *handler)
2019 struct input_dev *
dev;
2026 INIT_LIST_HEAD(&handler->h_list);
2031 input_attach_handler(dev, handler);
2033 input_wakeup_procfs_readers();
2047 void input_unregister_handler(
struct input_handler *handler)
2055 WARN_ON(!list_empty(&handler->h_list));
2057 list_del_init(&handler->node);
2059 input_wakeup_procfs_readers();
2077 int input_handler_for_each_handle(
struct input_handler *handler,
void *data,
2078 int (*
fn)(
struct input_handle *,
void *))
2080 struct input_handle *
handle;
2085 list_for_each_entry_rcu(handle, &handler->h_list, h_node) {
2086 retval =
fn(handle, data);
2108 int input_register_handle(
struct input_handle *handle)
2110 struct input_handler *handler = handle->handler;
2111 struct input_dev *dev = handle->dev;
2126 if (handler->filter)
2127 list_add_rcu(&handle->d_node, &dev->h_list);
2129 list_add_tail_rcu(&handle->d_node, &dev->h_list);
2139 list_add_tail_rcu(&handle->h_node, &handler->h_list);
2142 handler->start(handle);
2158 void input_unregister_handle(
struct input_handle *handle)
2160 struct input_dev *dev = handle->dev;
2162 list_del_rcu(&handle->h_node);
2168 list_del_rcu(&handle->d_node);
2186 int input_get_new_minor(
int legacy_base,
unsigned int legacy_num,
2194 if (legacy_base >= 0) {
2197 legacy_base + legacy_num,
2199 if (minor >= 0 || !allow_dynamic)
2216 void input_free_minor(
unsigned int minor)
2222 static int __init input_init(
void)
2228 pr_err(
"unable to register input_dev class\n");
2232 err = input_proc_init();
2245 fail2: input_proc_exit();
2250 static void __exit input_exit(
void)