xref: /linux-6.15/drivers/input/input.c (revision c6d3aaa4)
1 /*
2  * The input core
3  *
4  * Copyright (c) 1999-2002 Vojtech Pavlik
5  */
6 
7 /*
8  * This program is free software; you can redistribute it and/or modify it
9  * under the terms of the GNU General Public License version 2 as published by
10  * the Free Software Foundation.
11  */
12 
13 #include <linux/init.h>
14 #include <linux/types.h>
15 #include <linux/input.h>
16 #include <linux/module.h>
17 #include <linux/random.h>
18 #include <linux/major.h>
19 #include <linux/proc_fs.h>
20 #include <linux/seq_file.h>
21 #include <linux/poll.h>
22 #include <linux/device.h>
23 #include <linux/mutex.h>
24 #include <linux/rcupdate.h>
25 #include <linux/smp_lock.h>
26 
27 MODULE_AUTHOR("Vojtech Pavlik <[email protected]>");
28 MODULE_DESCRIPTION("Input core");
29 MODULE_LICENSE("GPL");
30 
31 #define INPUT_DEVICES	256
32 
33 /*
34  * EV_ABS events which should not be cached are listed here.
35  */
36 static unsigned int input_abs_bypass_init_data[] __initdata = {
37 	ABS_MT_TOUCH_MAJOR,
38 	ABS_MT_TOUCH_MINOR,
39 	ABS_MT_WIDTH_MAJOR,
40 	ABS_MT_WIDTH_MINOR,
41 	ABS_MT_ORIENTATION,
42 	ABS_MT_POSITION_X,
43 	ABS_MT_POSITION_Y,
44 	ABS_MT_TOOL_TYPE,
45 	ABS_MT_BLOB_ID,
46 	ABS_MT_TRACKING_ID,
47 	0
48 };
49 static unsigned long input_abs_bypass[BITS_TO_LONGS(ABS_CNT)];
50 
51 static LIST_HEAD(input_dev_list);
52 static LIST_HEAD(input_handler_list);
53 
54 /*
55  * input_mutex protects access to both input_dev_list and input_handler_list.
56  * This also causes input_[un]register_device and input_[un]register_handler
57  * be mutually exclusive which simplifies locking in drivers implementing
58  * input handlers.
59  */
60 static DEFINE_MUTEX(input_mutex);
61 
62 static struct input_handler *input_table[8];
63 
64 static inline int is_event_supported(unsigned int code,
65 				     unsigned long *bm, unsigned int max)
66 {
67 	return code <= max && test_bit(code, bm);
68 }
69 
70 static int input_defuzz_abs_event(int value, int old_val, int fuzz)
71 {
72 	if (fuzz) {
73 		if (value > old_val - fuzz / 2 && value < old_val + fuzz / 2)
74 			return old_val;
75 
76 		if (value > old_val - fuzz && value < old_val + fuzz)
77 			return (old_val * 3 + value) / 4;
78 
79 		if (value > old_val - fuzz * 2 && value < old_val + fuzz * 2)
80 			return (old_val + value) / 2;
81 	}
82 
83 	return value;
84 }
85 
86 /*
87  * Pass event through all open handles. This function is called with
88  * dev->event_lock held and interrupts disabled.
89  */
90 static void input_pass_event(struct input_dev *dev,
91 			     unsigned int type, unsigned int code, int value)
92 {
93 	struct input_handle *handle;
94 
95 	rcu_read_lock();
96 
97 	handle = rcu_dereference(dev->grab);
98 	if (handle)
99 		handle->handler->event(handle, type, code, value);
100 	else
101 		list_for_each_entry_rcu(handle, &dev->h_list, d_node)
102 			if (handle->open)
103 				handle->handler->event(handle,
104 							type, code, value);
105 	rcu_read_unlock();
106 }
107 
108 /*
109  * Generate software autorepeat event. Note that we take
110  * dev->event_lock here to avoid racing with input_event
111  * which may cause keys get "stuck".
112  */
113 static void input_repeat_key(unsigned long data)
114 {
115 	struct input_dev *dev = (void *) data;
116 	unsigned long flags;
117 
118 	spin_lock_irqsave(&dev->event_lock, flags);
119 
120 	if (test_bit(dev->repeat_key, dev->key) &&
121 	    is_event_supported(dev->repeat_key, dev->keybit, KEY_MAX)) {
122 
123 		input_pass_event(dev, EV_KEY, dev->repeat_key, 2);
124 
125 		if (dev->sync) {
126 			/*
127 			 * Only send SYN_REPORT if we are not in a middle
128 			 * of driver parsing a new hardware packet.
129 			 * Otherwise assume that the driver will send
130 			 * SYN_REPORT once it's done.
131 			 */
132 			input_pass_event(dev, EV_SYN, SYN_REPORT, 1);
133 		}
134 
135 		if (dev->rep[REP_PERIOD])
136 			mod_timer(&dev->timer, jiffies +
137 					msecs_to_jiffies(dev->rep[REP_PERIOD]));
138 	}
139 
140 	spin_unlock_irqrestore(&dev->event_lock, flags);
141 }
142 
143 static void input_start_autorepeat(struct input_dev *dev, int code)
144 {
145 	if (test_bit(EV_REP, dev->evbit) &&
146 	    dev->rep[REP_PERIOD] && dev->rep[REP_DELAY] &&
147 	    dev->timer.data) {
148 		dev->repeat_key = code;
149 		mod_timer(&dev->timer,
150 			  jiffies + msecs_to_jiffies(dev->rep[REP_DELAY]));
151 	}
152 }
153 
154 static void input_stop_autorepeat(struct input_dev *dev)
155 {
156 	del_timer(&dev->timer);
157 }
158 
159 #define INPUT_IGNORE_EVENT	0
160 #define INPUT_PASS_TO_HANDLERS	1
161 #define INPUT_PASS_TO_DEVICE	2
162 #define INPUT_PASS_TO_ALL	(INPUT_PASS_TO_HANDLERS | INPUT_PASS_TO_DEVICE)
163 
164 static void input_handle_event(struct input_dev *dev,
165 			       unsigned int type, unsigned int code, int value)
166 {
167 	int disposition = INPUT_IGNORE_EVENT;
168 
169 	switch (type) {
170 
171 	case EV_SYN:
172 		switch (code) {
173 		case SYN_CONFIG:
174 			disposition = INPUT_PASS_TO_ALL;
175 			break;
176 
177 		case SYN_REPORT:
178 			if (!dev->sync) {
179 				dev->sync = 1;
180 				disposition = INPUT_PASS_TO_HANDLERS;
181 			}
182 			break;
183 		case SYN_MT_REPORT:
184 			dev->sync = 0;
185 			disposition = INPUT_PASS_TO_HANDLERS;
186 			break;
187 		}
188 		break;
189 
190 	case EV_KEY:
191 		if (is_event_supported(code, dev->keybit, KEY_MAX) &&
192 		    !!test_bit(code, dev->key) != value) {
193 
194 			if (value != 2) {
195 				__change_bit(code, dev->key);
196 				if (value)
197 					input_start_autorepeat(dev, code);
198 				else
199 					input_stop_autorepeat(dev);
200 			}
201 
202 			disposition = INPUT_PASS_TO_HANDLERS;
203 		}
204 		break;
205 
206 	case EV_SW:
207 		if (is_event_supported(code, dev->swbit, SW_MAX) &&
208 		    !!test_bit(code, dev->sw) != value) {
209 
210 			__change_bit(code, dev->sw);
211 			disposition = INPUT_PASS_TO_HANDLERS;
212 		}
213 		break;
214 
215 	case EV_ABS:
216 		if (is_event_supported(code, dev->absbit, ABS_MAX)) {
217 
218 			if (test_bit(code, input_abs_bypass)) {
219 				disposition = INPUT_PASS_TO_HANDLERS;
220 				break;
221 			}
222 
223 			value = input_defuzz_abs_event(value,
224 					dev->abs[code], dev->absfuzz[code]);
225 
226 			if (dev->abs[code] != value) {
227 				dev->abs[code] = value;
228 				disposition = INPUT_PASS_TO_HANDLERS;
229 			}
230 		}
231 		break;
232 
233 	case EV_REL:
234 		if (is_event_supported(code, dev->relbit, REL_MAX) && value)
235 			disposition = INPUT_PASS_TO_HANDLERS;
236 
237 		break;
238 
239 	case EV_MSC:
240 		if (is_event_supported(code, dev->mscbit, MSC_MAX))
241 			disposition = INPUT_PASS_TO_ALL;
242 
243 		break;
244 
245 	case EV_LED:
246 		if (is_event_supported(code, dev->ledbit, LED_MAX) &&
247 		    !!test_bit(code, dev->led) != value) {
248 
249 			__change_bit(code, dev->led);
250 			disposition = INPUT_PASS_TO_ALL;
251 		}
252 		break;
253 
254 	case EV_SND:
255 		if (is_event_supported(code, dev->sndbit, SND_MAX)) {
256 
257 			if (!!test_bit(code, dev->snd) != !!value)
258 				__change_bit(code, dev->snd);
259 			disposition = INPUT_PASS_TO_ALL;
260 		}
261 		break;
262 
263 	case EV_REP:
264 		if (code <= REP_MAX && value >= 0 && dev->rep[code] != value) {
265 			dev->rep[code] = value;
266 			disposition = INPUT_PASS_TO_ALL;
267 		}
268 		break;
269 
270 	case EV_FF:
271 		if (value >= 0)
272 			disposition = INPUT_PASS_TO_ALL;
273 		break;
274 
275 	case EV_PWR:
276 		disposition = INPUT_PASS_TO_ALL;
277 		break;
278 	}
279 
280 	if (disposition != INPUT_IGNORE_EVENT && type != EV_SYN)
281 		dev->sync = 0;
282 
283 	if ((disposition & INPUT_PASS_TO_DEVICE) && dev->event)
284 		dev->event(dev, type, code, value);
285 
286 	if (disposition & INPUT_PASS_TO_HANDLERS)
287 		input_pass_event(dev, type, code, value);
288 }
289 
290 /**
291  * input_event() - report new input event
292  * @dev: device that generated the event
293  * @type: type of the event
294  * @code: event code
295  * @value: value of the event
296  *
297  * This function should be used by drivers implementing various input
298  * devices. See also input_inject_event().
299  */
300 
301 void input_event(struct input_dev *dev,
302 		 unsigned int type, unsigned int code, int value)
303 {
304 	unsigned long flags;
305 
306 	if (is_event_supported(type, dev->evbit, EV_MAX)) {
307 
308 		spin_lock_irqsave(&dev->event_lock, flags);
309 		add_input_randomness(type, code, value);
310 		input_handle_event(dev, type, code, value);
311 		spin_unlock_irqrestore(&dev->event_lock, flags);
312 	}
313 }
314 EXPORT_SYMBOL(input_event);
315 
316 /**
317  * input_inject_event() - send input event from input handler
318  * @handle: input handle to send event through
319  * @type: type of the event
320  * @code: event code
321  * @value: value of the event
322  *
323  * Similar to input_event() but will ignore event if device is
324  * "grabbed" and handle injecting event is not the one that owns
325  * the device.
326  */
327 void input_inject_event(struct input_handle *handle,
328 			unsigned int type, unsigned int code, int value)
329 {
330 	struct input_dev *dev = handle->dev;
331 	struct input_handle *grab;
332 	unsigned long flags;
333 
334 	if (is_event_supported(type, dev->evbit, EV_MAX)) {
335 		spin_lock_irqsave(&dev->event_lock, flags);
336 
337 		rcu_read_lock();
338 		grab = rcu_dereference(dev->grab);
339 		if (!grab || grab == handle)
340 			input_handle_event(dev, type, code, value);
341 		rcu_read_unlock();
342 
343 		spin_unlock_irqrestore(&dev->event_lock, flags);
344 	}
345 }
346 EXPORT_SYMBOL(input_inject_event);
347 
348 /**
349  * input_grab_device - grabs device for exclusive use
350  * @handle: input handle that wants to own the device
351  *
352  * When a device is grabbed by an input handle all events generated by
353  * the device are delivered only to this handle. Also events injected
354  * by other input handles are ignored while device is grabbed.
355  */
356 int input_grab_device(struct input_handle *handle)
357 {
358 	struct input_dev *dev = handle->dev;
359 	int retval;
360 
361 	retval = mutex_lock_interruptible(&dev->mutex);
362 	if (retval)
363 		return retval;
364 
365 	if (dev->grab) {
366 		retval = -EBUSY;
367 		goto out;
368 	}
369 
370 	rcu_assign_pointer(dev->grab, handle);
371 	synchronize_rcu();
372 
373  out:
374 	mutex_unlock(&dev->mutex);
375 	return retval;
376 }
377 EXPORT_SYMBOL(input_grab_device);
378 
379 static void __input_release_device(struct input_handle *handle)
380 {
381 	struct input_dev *dev = handle->dev;
382 
383 	if (dev->grab == handle) {
384 		rcu_assign_pointer(dev->grab, NULL);
385 		/* Make sure input_pass_event() notices that grab is gone */
386 		synchronize_rcu();
387 
388 		list_for_each_entry(handle, &dev->h_list, d_node)
389 			if (handle->open && handle->handler->start)
390 				handle->handler->start(handle);
391 	}
392 }
393 
394 /**
395  * input_release_device - release previously grabbed device
396  * @handle: input handle that owns the device
397  *
398  * Releases previously grabbed device so that other input handles can
399  * start receiving input events. Upon release all handlers attached
400  * to the device have their start() method called so they have a change
401  * to synchronize device state with the rest of the system.
402  */
403 void input_release_device(struct input_handle *handle)
404 {
405 	struct input_dev *dev = handle->dev;
406 
407 	mutex_lock(&dev->mutex);
408 	__input_release_device(handle);
409 	mutex_unlock(&dev->mutex);
410 }
411 EXPORT_SYMBOL(input_release_device);
412 
413 /**
414  * input_open_device - open input device
415  * @handle: handle through which device is being accessed
416  *
417  * This function should be called by input handlers when they
418  * want to start receive events from given input device.
419  */
420 int input_open_device(struct input_handle *handle)
421 {
422 	struct input_dev *dev = handle->dev;
423 	int retval;
424 
425 	retval = mutex_lock_interruptible(&dev->mutex);
426 	if (retval)
427 		return retval;
428 
429 	if (dev->going_away) {
430 		retval = -ENODEV;
431 		goto out;
432 	}
433 
434 	handle->open++;
435 
436 	if (!dev->users++ && dev->open)
437 		retval = dev->open(dev);
438 
439 	if (retval) {
440 		dev->users--;
441 		if (!--handle->open) {
442 			/*
443 			 * Make sure we are not delivering any more events
444 			 * through this handle
445 			 */
446 			synchronize_rcu();
447 		}
448 	}
449 
450  out:
451 	mutex_unlock(&dev->mutex);
452 	return retval;
453 }
454 EXPORT_SYMBOL(input_open_device);
455 
456 int input_flush_device(struct input_handle *handle, struct file *file)
457 {
458 	struct input_dev *dev = handle->dev;
459 	int retval;
460 
461 	retval = mutex_lock_interruptible(&dev->mutex);
462 	if (retval)
463 		return retval;
464 
465 	if (dev->flush)
466 		retval = dev->flush(dev, file);
467 
468 	mutex_unlock(&dev->mutex);
469 	return retval;
470 }
471 EXPORT_SYMBOL(input_flush_device);
472 
473 /**
474  * input_close_device - close input device
475  * @handle: handle through which device is being accessed
476  *
477  * This function should be called by input handlers when they
478  * want to stop receive events from given input device.
479  */
480 void input_close_device(struct input_handle *handle)
481 {
482 	struct input_dev *dev = handle->dev;
483 
484 	mutex_lock(&dev->mutex);
485 
486 	__input_release_device(handle);
487 
488 	if (!--dev->users && dev->close)
489 		dev->close(dev);
490 
491 	if (!--handle->open) {
492 		/*
493 		 * synchronize_rcu() makes sure that input_pass_event()
494 		 * completed and that no more input events are delivered
495 		 * through this handle
496 		 */
497 		synchronize_rcu();
498 	}
499 
500 	mutex_unlock(&dev->mutex);
501 }
502 EXPORT_SYMBOL(input_close_device);
503 
504 /*
505  * Prepare device for unregistering
506  */
507 static void input_disconnect_device(struct input_dev *dev)
508 {
509 	struct input_handle *handle;
510 	int code;
511 
512 	/*
513 	 * Mark device as going away. Note that we take dev->mutex here
514 	 * not to protect access to dev->going_away but rather to ensure
515 	 * that there are no threads in the middle of input_open_device()
516 	 */
517 	mutex_lock(&dev->mutex);
518 	dev->going_away = true;
519 	mutex_unlock(&dev->mutex);
520 
521 	spin_lock_irq(&dev->event_lock);
522 
523 	/*
524 	 * Simulate keyup events for all pressed keys so that handlers
525 	 * are not left with "stuck" keys. The driver may continue
526 	 * generate events even after we done here but they will not
527 	 * reach any handlers.
528 	 */
529 	if (is_event_supported(EV_KEY, dev->evbit, EV_MAX)) {
530 		for (code = 0; code <= KEY_MAX; code++) {
531 			if (is_event_supported(code, dev->keybit, KEY_MAX) &&
532 			    __test_and_clear_bit(code, dev->key)) {
533 				input_pass_event(dev, EV_KEY, code, 0);
534 			}
535 		}
536 		input_pass_event(dev, EV_SYN, SYN_REPORT, 1);
537 	}
538 
539 	list_for_each_entry(handle, &dev->h_list, d_node)
540 		handle->open = 0;
541 
542 	spin_unlock_irq(&dev->event_lock);
543 }
544 
545 static int input_fetch_keycode(struct input_dev *dev, int scancode)
546 {
547 	switch (dev->keycodesize) {
548 		case 1:
549 			return ((u8 *)dev->keycode)[scancode];
550 
551 		case 2:
552 			return ((u16 *)dev->keycode)[scancode];
553 
554 		default:
555 			return ((u32 *)dev->keycode)[scancode];
556 	}
557 }
558 
559 static int input_default_getkeycode(struct input_dev *dev,
560 				    int scancode, int *keycode)
561 {
562 	if (!dev->keycodesize)
563 		return -EINVAL;
564 
565 	if (scancode >= dev->keycodemax)
566 		return -EINVAL;
567 
568 	*keycode = input_fetch_keycode(dev, scancode);
569 
570 	return 0;
571 }
572 
573 static int input_default_setkeycode(struct input_dev *dev,
574 				    int scancode, int keycode)
575 {
576 	int old_keycode;
577 	int i;
578 
579 	if (scancode >= dev->keycodemax)
580 		return -EINVAL;
581 
582 	if (!dev->keycodesize)
583 		return -EINVAL;
584 
585 	if (dev->keycodesize < sizeof(keycode) && (keycode >> (dev->keycodesize * 8)))
586 		return -EINVAL;
587 
588 	switch (dev->keycodesize) {
589 		case 1: {
590 			u8 *k = (u8 *)dev->keycode;
591 			old_keycode = k[scancode];
592 			k[scancode] = keycode;
593 			break;
594 		}
595 		case 2: {
596 			u16 *k = (u16 *)dev->keycode;
597 			old_keycode = k[scancode];
598 			k[scancode] = keycode;
599 			break;
600 		}
601 		default: {
602 			u32 *k = (u32 *)dev->keycode;
603 			old_keycode = k[scancode];
604 			k[scancode] = keycode;
605 			break;
606 		}
607 	}
608 
609 	clear_bit(old_keycode, dev->keybit);
610 	set_bit(keycode, dev->keybit);
611 
612 	for (i = 0; i < dev->keycodemax; i++) {
613 		if (input_fetch_keycode(dev, i) == old_keycode) {
614 			set_bit(old_keycode, dev->keybit);
615 			break; /* Setting the bit twice is useless, so break */
616 		}
617 	}
618 
619 	return 0;
620 }
621 
622 /**
623  * input_get_keycode - retrieve keycode currently mapped to a given scancode
624  * @dev: input device which keymap is being queried
625  * @scancode: scancode (or its equivalent for device in question) for which
626  *	keycode is needed
627  * @keycode: result
628  *
629  * This function should be called by anyone interested in retrieving current
630  * keymap. Presently keyboard and evdev handlers use it.
631  */
632 int input_get_keycode(struct input_dev *dev, int scancode, int *keycode)
633 {
634 	if (scancode < 0)
635 		return -EINVAL;
636 
637 	return dev->getkeycode(dev, scancode, keycode);
638 }
639 EXPORT_SYMBOL(input_get_keycode);
640 
641 /**
642  * input_get_keycode - assign new keycode to a given scancode
643  * @dev: input device which keymap is being updated
644  * @scancode: scancode (or its equivalent for device in question)
645  * @keycode: new keycode to be assigned to the scancode
646  *
647  * This function should be called by anyone needing to update current
648  * keymap. Presently keyboard and evdev handlers use it.
649  */
650 int input_set_keycode(struct input_dev *dev, int scancode, int keycode)
651 {
652 	unsigned long flags;
653 	int old_keycode;
654 	int retval;
655 
656 	if (scancode < 0)
657 		return -EINVAL;
658 
659 	if (keycode < 0 || keycode > KEY_MAX)
660 		return -EINVAL;
661 
662 	spin_lock_irqsave(&dev->event_lock, flags);
663 
664 	retval = dev->getkeycode(dev, scancode, &old_keycode);
665 	if (retval)
666 		goto out;
667 
668 	retval = dev->setkeycode(dev, scancode, keycode);
669 	if (retval)
670 		goto out;
671 
672 	/*
673 	 * Simulate keyup event if keycode is not present
674 	 * in the keymap anymore
675 	 */
676 	if (test_bit(EV_KEY, dev->evbit) &&
677 	    !is_event_supported(old_keycode, dev->keybit, KEY_MAX) &&
678 	    __test_and_clear_bit(old_keycode, dev->key)) {
679 
680 		input_pass_event(dev, EV_KEY, old_keycode, 0);
681 		if (dev->sync)
682 			input_pass_event(dev, EV_SYN, SYN_REPORT, 1);
683 	}
684 
685  out:
686 	spin_unlock_irqrestore(&dev->event_lock, flags);
687 
688 	return retval;
689 }
690 EXPORT_SYMBOL(input_set_keycode);
691 
692 #define MATCH_BIT(bit, max) \
693 		for (i = 0; i < BITS_TO_LONGS(max); i++) \
694 			if ((id->bit[i] & dev->bit[i]) != id->bit[i]) \
695 				break; \
696 		if (i != BITS_TO_LONGS(max)) \
697 			continue;
698 
699 static const struct input_device_id *input_match_device(const struct input_device_id *id,
700 							struct input_dev *dev)
701 {
702 	int i;
703 
704 	for (; id->flags || id->driver_info; id++) {
705 
706 		if (id->flags & INPUT_DEVICE_ID_MATCH_BUS)
707 			if (id->bustype != dev->id.bustype)
708 				continue;
709 
710 		if (id->flags & INPUT_DEVICE_ID_MATCH_VENDOR)
711 			if (id->vendor != dev->id.vendor)
712 				continue;
713 
714 		if (id->flags & INPUT_DEVICE_ID_MATCH_PRODUCT)
715 			if (id->product != dev->id.product)
716 				continue;
717 
718 		if (id->flags & INPUT_DEVICE_ID_MATCH_VERSION)
719 			if (id->version != dev->id.version)
720 				continue;
721 
722 		MATCH_BIT(evbit,  EV_MAX);
723 		MATCH_BIT(keybit, KEY_MAX);
724 		MATCH_BIT(relbit, REL_MAX);
725 		MATCH_BIT(absbit, ABS_MAX);
726 		MATCH_BIT(mscbit, MSC_MAX);
727 		MATCH_BIT(ledbit, LED_MAX);
728 		MATCH_BIT(sndbit, SND_MAX);
729 		MATCH_BIT(ffbit,  FF_MAX);
730 		MATCH_BIT(swbit,  SW_MAX);
731 
732 		return id;
733 	}
734 
735 	return NULL;
736 }
737 
738 static int input_attach_handler(struct input_dev *dev, struct input_handler *handler)
739 {
740 	const struct input_device_id *id;
741 	int error;
742 
743 	if (handler->blacklist && input_match_device(handler->blacklist, dev))
744 		return -ENODEV;
745 
746 	id = input_match_device(handler->id_table, dev);
747 	if (!id)
748 		return -ENODEV;
749 
750 	error = handler->connect(handler, dev, id);
751 	if (error && error != -ENODEV)
752 		printk(KERN_ERR
753 			"input: failed to attach handler %s to device %s, "
754 			"error: %d\n",
755 			handler->name, kobject_name(&dev->dev.kobj), error);
756 
757 	return error;
758 }
759 
760 
761 #ifdef CONFIG_PROC_FS
762 
763 static struct proc_dir_entry *proc_bus_input_dir;
764 static DECLARE_WAIT_QUEUE_HEAD(input_devices_poll_wait);
765 static int input_devices_state;
766 
767 static inline void input_wakeup_procfs_readers(void)
768 {
769 	input_devices_state++;
770 	wake_up(&input_devices_poll_wait);
771 }
772 
773 static unsigned int input_proc_devices_poll(struct file *file, poll_table *wait)
774 {
775 	poll_wait(file, &input_devices_poll_wait, wait);
776 	if (file->f_version != input_devices_state) {
777 		file->f_version = input_devices_state;
778 		return POLLIN | POLLRDNORM;
779 	}
780 
781 	return 0;
782 }
783 
784 static void *input_devices_seq_start(struct seq_file *seq, loff_t *pos)
785 {
786 	if (mutex_lock_interruptible(&input_mutex))
787 		return NULL;
788 
789 	return seq_list_start(&input_dev_list, *pos);
790 }
791 
792 static void *input_devices_seq_next(struct seq_file *seq, void *v, loff_t *pos)
793 {
794 	return seq_list_next(v, &input_dev_list, pos);
795 }
796 
797 static void input_devices_seq_stop(struct seq_file *seq, void *v)
798 {
799 	mutex_unlock(&input_mutex);
800 }
801 
802 static void input_seq_print_bitmap(struct seq_file *seq, const char *name,
803 				   unsigned long *bitmap, int max)
804 {
805 	int i;
806 
807 	for (i = BITS_TO_LONGS(max) - 1; i > 0; i--)
808 		if (bitmap[i])
809 			break;
810 
811 	seq_printf(seq, "B: %s=", name);
812 	for (; i >= 0; i--)
813 		seq_printf(seq, "%lx%s", bitmap[i], i > 0 ? " " : "");
814 	seq_putc(seq, '\n');
815 }
816 
817 static int input_devices_seq_show(struct seq_file *seq, void *v)
818 {
819 	struct input_dev *dev = container_of(v, struct input_dev, node);
820 	const char *path = kobject_get_path(&dev->dev.kobj, GFP_KERNEL);
821 	struct input_handle *handle;
822 
823 	seq_printf(seq, "I: Bus=%04x Vendor=%04x Product=%04x Version=%04x\n",
824 		   dev->id.bustype, dev->id.vendor, dev->id.product, dev->id.version);
825 
826 	seq_printf(seq, "N: Name=\"%s\"\n", dev->name ? dev->name : "");
827 	seq_printf(seq, "P: Phys=%s\n", dev->phys ? dev->phys : "");
828 	seq_printf(seq, "S: Sysfs=%s\n", path ? path : "");
829 	seq_printf(seq, "U: Uniq=%s\n", dev->uniq ? dev->uniq : "");
830 	seq_printf(seq, "H: Handlers=");
831 
832 	list_for_each_entry(handle, &dev->h_list, d_node)
833 		seq_printf(seq, "%s ", handle->name);
834 	seq_putc(seq, '\n');
835 
836 	input_seq_print_bitmap(seq, "EV", dev->evbit, EV_MAX);
837 	if (test_bit(EV_KEY, dev->evbit))
838 		input_seq_print_bitmap(seq, "KEY", dev->keybit, KEY_MAX);
839 	if (test_bit(EV_REL, dev->evbit))
840 		input_seq_print_bitmap(seq, "REL", dev->relbit, REL_MAX);
841 	if (test_bit(EV_ABS, dev->evbit))
842 		input_seq_print_bitmap(seq, "ABS", dev->absbit, ABS_MAX);
843 	if (test_bit(EV_MSC, dev->evbit))
844 		input_seq_print_bitmap(seq, "MSC", dev->mscbit, MSC_MAX);
845 	if (test_bit(EV_LED, dev->evbit))
846 		input_seq_print_bitmap(seq, "LED", dev->ledbit, LED_MAX);
847 	if (test_bit(EV_SND, dev->evbit))
848 		input_seq_print_bitmap(seq, "SND", dev->sndbit, SND_MAX);
849 	if (test_bit(EV_FF, dev->evbit))
850 		input_seq_print_bitmap(seq, "FF", dev->ffbit, FF_MAX);
851 	if (test_bit(EV_SW, dev->evbit))
852 		input_seq_print_bitmap(seq, "SW", dev->swbit, SW_MAX);
853 
854 	seq_putc(seq, '\n');
855 
856 	kfree(path);
857 	return 0;
858 }
859 
860 static const struct seq_operations input_devices_seq_ops = {
861 	.start	= input_devices_seq_start,
862 	.next	= input_devices_seq_next,
863 	.stop	= input_devices_seq_stop,
864 	.show	= input_devices_seq_show,
865 };
866 
867 static int input_proc_devices_open(struct inode *inode, struct file *file)
868 {
869 	return seq_open(file, &input_devices_seq_ops);
870 }
871 
872 static const struct file_operations input_devices_fileops = {
873 	.owner		= THIS_MODULE,
874 	.open		= input_proc_devices_open,
875 	.poll		= input_proc_devices_poll,
876 	.read		= seq_read,
877 	.llseek		= seq_lseek,
878 	.release	= seq_release,
879 };
880 
881 static void *input_handlers_seq_start(struct seq_file *seq, loff_t *pos)
882 {
883 	if (mutex_lock_interruptible(&input_mutex))
884 		return NULL;
885 
886 	seq->private = (void *)(unsigned long)*pos;
887 	return seq_list_start(&input_handler_list, *pos);
888 }
889 
890 static void *input_handlers_seq_next(struct seq_file *seq, void *v, loff_t *pos)
891 {
892 	seq->private = (void *)(unsigned long)(*pos + 1);
893 	return seq_list_next(v, &input_handler_list, pos);
894 }
895 
896 static void input_handlers_seq_stop(struct seq_file *seq, void *v)
897 {
898 	mutex_unlock(&input_mutex);
899 }
900 
901 static int input_handlers_seq_show(struct seq_file *seq, void *v)
902 {
903 	struct input_handler *handler = container_of(v, struct input_handler, node);
904 
905 	seq_printf(seq, "N: Number=%ld Name=%s",
906 		   (unsigned long)seq->private, handler->name);
907 	if (handler->fops)
908 		seq_printf(seq, " Minor=%d", handler->minor);
909 	seq_putc(seq, '\n');
910 
911 	return 0;
912 }
913 static const struct seq_operations input_handlers_seq_ops = {
914 	.start	= input_handlers_seq_start,
915 	.next	= input_handlers_seq_next,
916 	.stop	= input_handlers_seq_stop,
917 	.show	= input_handlers_seq_show,
918 };
919 
920 static int input_proc_handlers_open(struct inode *inode, struct file *file)
921 {
922 	return seq_open(file, &input_handlers_seq_ops);
923 }
924 
925 static const struct file_operations input_handlers_fileops = {
926 	.owner		= THIS_MODULE,
927 	.open		= input_proc_handlers_open,
928 	.read		= seq_read,
929 	.llseek		= seq_lseek,
930 	.release	= seq_release,
931 };
932 
933 static int __init input_proc_init(void)
934 {
935 	struct proc_dir_entry *entry;
936 
937 	proc_bus_input_dir = proc_mkdir("bus/input", NULL);
938 	if (!proc_bus_input_dir)
939 		return -ENOMEM;
940 
941 	entry = proc_create("devices", 0, proc_bus_input_dir,
942 			    &input_devices_fileops);
943 	if (!entry)
944 		goto fail1;
945 
946 	entry = proc_create("handlers", 0, proc_bus_input_dir,
947 			    &input_handlers_fileops);
948 	if (!entry)
949 		goto fail2;
950 
951 	return 0;
952 
953  fail2:	remove_proc_entry("devices", proc_bus_input_dir);
954  fail1: remove_proc_entry("bus/input", NULL);
955 	return -ENOMEM;
956 }
957 
958 static void input_proc_exit(void)
959 {
960 	remove_proc_entry("devices", proc_bus_input_dir);
961 	remove_proc_entry("handlers", proc_bus_input_dir);
962 	remove_proc_entry("bus/input", NULL);
963 }
964 
965 #else /* !CONFIG_PROC_FS */
966 static inline void input_wakeup_procfs_readers(void) { }
967 static inline int input_proc_init(void) { return 0; }
968 static inline void input_proc_exit(void) { }
969 #endif
970 
971 #define INPUT_DEV_STRING_ATTR_SHOW(name)				\
972 static ssize_t input_dev_show_##name(struct device *dev,		\
973 				     struct device_attribute *attr,	\
974 				     char *buf)				\
975 {									\
976 	struct input_dev *input_dev = to_input_dev(dev);		\
977 									\
978 	return scnprintf(buf, PAGE_SIZE, "%s\n",			\
979 			 input_dev->name ? input_dev->name : "");	\
980 }									\
981 static DEVICE_ATTR(name, S_IRUGO, input_dev_show_##name, NULL)
982 
983 INPUT_DEV_STRING_ATTR_SHOW(name);
984 INPUT_DEV_STRING_ATTR_SHOW(phys);
985 INPUT_DEV_STRING_ATTR_SHOW(uniq);
986 
987 static int input_print_modalias_bits(char *buf, int size,
988 				     char name, unsigned long *bm,
989 				     unsigned int min_bit, unsigned int max_bit)
990 {
991 	int len = 0, i;
992 
993 	len += snprintf(buf, max(size, 0), "%c", name);
994 	for (i = min_bit; i < max_bit; i++)
995 		if (bm[BIT_WORD(i)] & BIT_MASK(i))
996 			len += snprintf(buf + len, max(size - len, 0), "%X,", i);
997 	return len;
998 }
999 
1000 static int input_print_modalias(char *buf, int size, struct input_dev *id,
1001 				int add_cr)
1002 {
1003 	int len;
1004 
1005 	len = snprintf(buf, max(size, 0),
1006 		       "input:b%04Xv%04Xp%04Xe%04X-",
1007 		       id->id.bustype, id->id.vendor,
1008 		       id->id.product, id->id.version);
1009 
1010 	len += input_print_modalias_bits(buf + len, size - len,
1011 				'e', id->evbit, 0, EV_MAX);
1012 	len += input_print_modalias_bits(buf + len, size - len,
1013 				'k', id->keybit, KEY_MIN_INTERESTING, KEY_MAX);
1014 	len += input_print_modalias_bits(buf + len, size - len,
1015 				'r', id->relbit, 0, REL_MAX);
1016 	len += input_print_modalias_bits(buf + len, size - len,
1017 				'a', id->absbit, 0, ABS_MAX);
1018 	len += input_print_modalias_bits(buf + len, size - len,
1019 				'm', id->mscbit, 0, MSC_MAX);
1020 	len += input_print_modalias_bits(buf + len, size - len,
1021 				'l', id->ledbit, 0, LED_MAX);
1022 	len += input_print_modalias_bits(buf + len, size - len,
1023 				's', id->sndbit, 0, SND_MAX);
1024 	len += input_print_modalias_bits(buf + len, size - len,
1025 				'f', id->ffbit, 0, FF_MAX);
1026 	len += input_print_modalias_bits(buf + len, size - len,
1027 				'w', id->swbit, 0, SW_MAX);
1028 
1029 	if (add_cr)
1030 		len += snprintf(buf + len, max(size - len, 0), "\n");
1031 
1032 	return len;
1033 }
1034 
1035 static ssize_t input_dev_show_modalias(struct device *dev,
1036 				       struct device_attribute *attr,
1037 				       char *buf)
1038 {
1039 	struct input_dev *id = to_input_dev(dev);
1040 	ssize_t len;
1041 
1042 	len = input_print_modalias(buf, PAGE_SIZE, id, 1);
1043 
1044 	return min_t(int, len, PAGE_SIZE);
1045 }
1046 static DEVICE_ATTR(modalias, S_IRUGO, input_dev_show_modalias, NULL);
1047 
1048 static struct attribute *input_dev_attrs[] = {
1049 	&dev_attr_name.attr,
1050 	&dev_attr_phys.attr,
1051 	&dev_attr_uniq.attr,
1052 	&dev_attr_modalias.attr,
1053 	NULL
1054 };
1055 
1056 static struct attribute_group input_dev_attr_group = {
1057 	.attrs	= input_dev_attrs,
1058 };
1059 
1060 #define INPUT_DEV_ID_ATTR(name)						\
1061 static ssize_t input_dev_show_id_##name(struct device *dev,		\
1062 					struct device_attribute *attr,	\
1063 					char *buf)			\
1064 {									\
1065 	struct input_dev *input_dev = to_input_dev(dev);		\
1066 	return scnprintf(buf, PAGE_SIZE, "%04x\n", input_dev->id.name);	\
1067 }									\
1068 static DEVICE_ATTR(name, S_IRUGO, input_dev_show_id_##name, NULL)
1069 
1070 INPUT_DEV_ID_ATTR(bustype);
1071 INPUT_DEV_ID_ATTR(vendor);
1072 INPUT_DEV_ID_ATTR(product);
1073 INPUT_DEV_ID_ATTR(version);
1074 
1075 static struct attribute *input_dev_id_attrs[] = {
1076 	&dev_attr_bustype.attr,
1077 	&dev_attr_vendor.attr,
1078 	&dev_attr_product.attr,
1079 	&dev_attr_version.attr,
1080 	NULL
1081 };
1082 
1083 static struct attribute_group input_dev_id_attr_group = {
1084 	.name	= "id",
1085 	.attrs	= input_dev_id_attrs,
1086 };
1087 
1088 static int input_print_bitmap(char *buf, int buf_size, unsigned long *bitmap,
1089 			      int max, int add_cr)
1090 {
1091 	int i;
1092 	int len = 0;
1093 
1094 	for (i = BITS_TO_LONGS(max) - 1; i > 0; i--)
1095 		if (bitmap[i])
1096 			break;
1097 
1098 	for (; i >= 0; i--)
1099 		len += snprintf(buf + len, max(buf_size - len, 0),
1100 				"%lx%s", bitmap[i], i > 0 ? " " : "");
1101 
1102 	if (add_cr)
1103 		len += snprintf(buf + len, max(buf_size - len, 0), "\n");
1104 
1105 	return len;
1106 }
1107 
1108 #define INPUT_DEV_CAP_ATTR(ev, bm)					\
1109 static ssize_t input_dev_show_cap_##bm(struct device *dev,		\
1110 				       struct device_attribute *attr,	\
1111 				       char *buf)			\
1112 {									\
1113 	struct input_dev *input_dev = to_input_dev(dev);		\
1114 	int len = input_print_bitmap(buf, PAGE_SIZE,			\
1115 				     input_dev->bm##bit, ev##_MAX, 1);	\
1116 	return min_t(int, len, PAGE_SIZE);				\
1117 }									\
1118 static DEVICE_ATTR(bm, S_IRUGO, input_dev_show_cap_##bm, NULL)
1119 
1120 INPUT_DEV_CAP_ATTR(EV, ev);
1121 INPUT_DEV_CAP_ATTR(KEY, key);
1122 INPUT_DEV_CAP_ATTR(REL, rel);
1123 INPUT_DEV_CAP_ATTR(ABS, abs);
1124 INPUT_DEV_CAP_ATTR(MSC, msc);
1125 INPUT_DEV_CAP_ATTR(LED, led);
1126 INPUT_DEV_CAP_ATTR(SND, snd);
1127 INPUT_DEV_CAP_ATTR(FF, ff);
1128 INPUT_DEV_CAP_ATTR(SW, sw);
1129 
1130 static struct attribute *input_dev_caps_attrs[] = {
1131 	&dev_attr_ev.attr,
1132 	&dev_attr_key.attr,
1133 	&dev_attr_rel.attr,
1134 	&dev_attr_abs.attr,
1135 	&dev_attr_msc.attr,
1136 	&dev_attr_led.attr,
1137 	&dev_attr_snd.attr,
1138 	&dev_attr_ff.attr,
1139 	&dev_attr_sw.attr,
1140 	NULL
1141 };
1142 
1143 static struct attribute_group input_dev_caps_attr_group = {
1144 	.name	= "capabilities",
1145 	.attrs	= input_dev_caps_attrs,
1146 };
1147 
1148 static const struct attribute_group *input_dev_attr_groups[] = {
1149 	&input_dev_attr_group,
1150 	&input_dev_id_attr_group,
1151 	&input_dev_caps_attr_group,
1152 	NULL
1153 };
1154 
1155 static void input_dev_release(struct device *device)
1156 {
1157 	struct input_dev *dev = to_input_dev(device);
1158 
1159 	input_ff_destroy(dev);
1160 	kfree(dev);
1161 
1162 	module_put(THIS_MODULE);
1163 }
1164 
1165 /*
1166  * Input uevent interface - loading event handlers based on
1167  * device bitfields.
1168  */
1169 static int input_add_uevent_bm_var(struct kobj_uevent_env *env,
1170 				   const char *name, unsigned long *bitmap, int max)
1171 {
1172 	int len;
1173 
1174 	if (add_uevent_var(env, "%s=", name))
1175 		return -ENOMEM;
1176 
1177 	len = input_print_bitmap(&env->buf[env->buflen - 1],
1178 				 sizeof(env->buf) - env->buflen,
1179 				 bitmap, max, 0);
1180 	if (len >= (sizeof(env->buf) - env->buflen))
1181 		return -ENOMEM;
1182 
1183 	env->buflen += len;
1184 	return 0;
1185 }
1186 
1187 static int input_add_uevent_modalias_var(struct kobj_uevent_env *env,
1188 					 struct input_dev *dev)
1189 {
1190 	int len;
1191 
1192 	if (add_uevent_var(env, "MODALIAS="))
1193 		return -ENOMEM;
1194 
1195 	len = input_print_modalias(&env->buf[env->buflen - 1],
1196 				   sizeof(env->buf) - env->buflen,
1197 				   dev, 0);
1198 	if (len >= (sizeof(env->buf) - env->buflen))
1199 		return -ENOMEM;
1200 
1201 	env->buflen += len;
1202 	return 0;
1203 }
1204 
1205 #define INPUT_ADD_HOTPLUG_VAR(fmt, val...)				\
1206 	do {								\
1207 		int err = add_uevent_var(env, fmt, val);		\
1208 		if (err)						\
1209 			return err;					\
1210 	} while (0)
1211 
1212 #define INPUT_ADD_HOTPLUG_BM_VAR(name, bm, max)				\
1213 	do {								\
1214 		int err = input_add_uevent_bm_var(env, name, bm, max);	\
1215 		if (err)						\
1216 			return err;					\
1217 	} while (0)
1218 
1219 #define INPUT_ADD_HOTPLUG_MODALIAS_VAR(dev)				\
1220 	do {								\
1221 		int err = input_add_uevent_modalias_var(env, dev);	\
1222 		if (err)						\
1223 			return err;					\
1224 	} while (0)
1225 
1226 static int input_dev_uevent(struct device *device, struct kobj_uevent_env *env)
1227 {
1228 	struct input_dev *dev = to_input_dev(device);
1229 
1230 	INPUT_ADD_HOTPLUG_VAR("PRODUCT=%x/%x/%x/%x",
1231 				dev->id.bustype, dev->id.vendor,
1232 				dev->id.product, dev->id.version);
1233 	if (dev->name)
1234 		INPUT_ADD_HOTPLUG_VAR("NAME=\"%s\"", dev->name);
1235 	if (dev->phys)
1236 		INPUT_ADD_HOTPLUG_VAR("PHYS=\"%s\"", dev->phys);
1237 	if (dev->uniq)
1238 		INPUT_ADD_HOTPLUG_VAR("UNIQ=\"%s\"", dev->uniq);
1239 
1240 	INPUT_ADD_HOTPLUG_BM_VAR("EV=", dev->evbit, EV_MAX);
1241 	if (test_bit(EV_KEY, dev->evbit))
1242 		INPUT_ADD_HOTPLUG_BM_VAR("KEY=", dev->keybit, KEY_MAX);
1243 	if (test_bit(EV_REL, dev->evbit))
1244 		INPUT_ADD_HOTPLUG_BM_VAR("REL=", dev->relbit, REL_MAX);
1245 	if (test_bit(EV_ABS, dev->evbit))
1246 		INPUT_ADD_HOTPLUG_BM_VAR("ABS=", dev->absbit, ABS_MAX);
1247 	if (test_bit(EV_MSC, dev->evbit))
1248 		INPUT_ADD_HOTPLUG_BM_VAR("MSC=", dev->mscbit, MSC_MAX);
1249 	if (test_bit(EV_LED, dev->evbit))
1250 		INPUT_ADD_HOTPLUG_BM_VAR("LED=", dev->ledbit, LED_MAX);
1251 	if (test_bit(EV_SND, dev->evbit))
1252 		INPUT_ADD_HOTPLUG_BM_VAR("SND=", dev->sndbit, SND_MAX);
1253 	if (test_bit(EV_FF, dev->evbit))
1254 		INPUT_ADD_HOTPLUG_BM_VAR("FF=", dev->ffbit, FF_MAX);
1255 	if (test_bit(EV_SW, dev->evbit))
1256 		INPUT_ADD_HOTPLUG_BM_VAR("SW=", dev->swbit, SW_MAX);
1257 
1258 	INPUT_ADD_HOTPLUG_MODALIAS_VAR(dev);
1259 
1260 	return 0;
1261 }
1262 
1263 #define INPUT_DO_TOGGLE(dev, type, bits, on)			\
1264 	do {							\
1265 		int i;						\
1266 		if (!test_bit(EV_##type, dev->evbit))		\
1267 			break;					\
1268 		for (i = 0; i < type##_MAX; i++) {		\
1269 			if (!test_bit(i, dev->bits##bit) ||	\
1270 			    !test_bit(i, dev->bits))		\
1271 				continue;			\
1272 			dev->event(dev, EV_##type, i, on);	\
1273 		}						\
1274 	} while (0)
1275 
1276 static void input_dev_reset(struct input_dev *dev, bool activate)
1277 {
1278 	if (!dev->event)
1279 		return;
1280 
1281 	INPUT_DO_TOGGLE(dev, LED, led, activate);
1282 	INPUT_DO_TOGGLE(dev, SND, snd, activate);
1283 
1284 	if (activate && test_bit(EV_REP, dev->evbit)) {
1285 		dev->event(dev, EV_REP, REP_PERIOD, dev->rep[REP_PERIOD]);
1286 		dev->event(dev, EV_REP, REP_DELAY, dev->rep[REP_DELAY]);
1287 	}
1288 }
1289 
1290 #ifdef CONFIG_PM
1291 static int input_dev_suspend(struct device *dev)
1292 {
1293 	struct input_dev *input_dev = to_input_dev(dev);
1294 
1295 	mutex_lock(&input_dev->mutex);
1296 	input_dev_reset(input_dev, false);
1297 	mutex_unlock(&input_dev->mutex);
1298 
1299 	return 0;
1300 }
1301 
1302 static int input_dev_resume(struct device *dev)
1303 {
1304 	struct input_dev *input_dev = to_input_dev(dev);
1305 
1306 	mutex_lock(&input_dev->mutex);
1307 	input_dev_reset(input_dev, true);
1308 	mutex_unlock(&input_dev->mutex);
1309 
1310 	return 0;
1311 }
1312 
1313 static const struct dev_pm_ops input_dev_pm_ops = {
1314 	.suspend	= input_dev_suspend,
1315 	.resume		= input_dev_resume,
1316 	.poweroff	= input_dev_suspend,
1317 	.restore	= input_dev_resume,
1318 };
1319 #endif /* CONFIG_PM */
1320 
1321 static struct device_type input_dev_type = {
1322 	.groups		= input_dev_attr_groups,
1323 	.release	= input_dev_release,
1324 	.uevent		= input_dev_uevent,
1325 #ifdef CONFIG_PM
1326 	.pm		= &input_dev_pm_ops,
1327 #endif
1328 };
1329 
1330 static char *input_devnode(struct device *dev, mode_t *mode)
1331 {
1332 	return kasprintf(GFP_KERNEL, "input/%s", dev_name(dev));
1333 }
1334 
1335 struct class input_class = {
1336 	.name		= "input",
1337 	.devnode	= input_devnode,
1338 };
1339 EXPORT_SYMBOL_GPL(input_class);
1340 
1341 /**
1342  * input_allocate_device - allocate memory for new input device
1343  *
1344  * Returns prepared struct input_dev or NULL.
1345  *
1346  * NOTE: Use input_free_device() to free devices that have not been
1347  * registered; input_unregister_device() should be used for already
1348  * registered devices.
1349  */
1350 struct input_dev *input_allocate_device(void)
1351 {
1352 	struct input_dev *dev;
1353 
1354 	dev = kzalloc(sizeof(struct input_dev), GFP_KERNEL);
1355 	if (dev) {
1356 		dev->dev.type = &input_dev_type;
1357 		dev->dev.class = &input_class;
1358 		device_initialize(&dev->dev);
1359 		mutex_init(&dev->mutex);
1360 		spin_lock_init(&dev->event_lock);
1361 		INIT_LIST_HEAD(&dev->h_list);
1362 		INIT_LIST_HEAD(&dev->node);
1363 
1364 		__module_get(THIS_MODULE);
1365 	}
1366 
1367 	return dev;
1368 }
1369 EXPORT_SYMBOL(input_allocate_device);
1370 
1371 /**
1372  * input_free_device - free memory occupied by input_dev structure
1373  * @dev: input device to free
1374  *
1375  * This function should only be used if input_register_device()
1376  * was not called yet or if it failed. Once device was registered
1377  * use input_unregister_device() and memory will be freed once last
1378  * reference to the device is dropped.
1379  *
1380  * Device should be allocated by input_allocate_device().
1381  *
1382  * NOTE: If there are references to the input device then memory
1383  * will not be freed until last reference is dropped.
1384  */
1385 void input_free_device(struct input_dev *dev)
1386 {
1387 	if (dev)
1388 		input_put_device(dev);
1389 }
1390 EXPORT_SYMBOL(input_free_device);
1391 
1392 /**
1393  * input_set_capability - mark device as capable of a certain event
1394  * @dev: device that is capable of emitting or accepting event
1395  * @type: type of the event (EV_KEY, EV_REL, etc...)
1396  * @code: event code
1397  *
1398  * In addition to setting up corresponding bit in appropriate capability
1399  * bitmap the function also adjusts dev->evbit.
1400  */
1401 void input_set_capability(struct input_dev *dev, unsigned int type, unsigned int code)
1402 {
1403 	switch (type) {
1404 	case EV_KEY:
1405 		__set_bit(code, dev->keybit);
1406 		break;
1407 
1408 	case EV_REL:
1409 		__set_bit(code, dev->relbit);
1410 		break;
1411 
1412 	case EV_ABS:
1413 		__set_bit(code, dev->absbit);
1414 		break;
1415 
1416 	case EV_MSC:
1417 		__set_bit(code, dev->mscbit);
1418 		break;
1419 
1420 	case EV_SW:
1421 		__set_bit(code, dev->swbit);
1422 		break;
1423 
1424 	case EV_LED:
1425 		__set_bit(code, dev->ledbit);
1426 		break;
1427 
1428 	case EV_SND:
1429 		__set_bit(code, dev->sndbit);
1430 		break;
1431 
1432 	case EV_FF:
1433 		__set_bit(code, dev->ffbit);
1434 		break;
1435 
1436 	case EV_PWR:
1437 		/* do nothing */
1438 		break;
1439 
1440 	default:
1441 		printk(KERN_ERR
1442 			"input_set_capability: unknown type %u (code %u)\n",
1443 			type, code);
1444 		dump_stack();
1445 		return;
1446 	}
1447 
1448 	__set_bit(type, dev->evbit);
1449 }
1450 EXPORT_SYMBOL(input_set_capability);
1451 
1452 /**
1453  * input_register_device - register device with input core
1454  * @dev: device to be registered
1455  *
1456  * This function registers device with input core. The device must be
1457  * allocated with input_allocate_device() and all it's capabilities
1458  * set up before registering.
1459  * If function fails the device must be freed with input_free_device().
1460  * Once device has been successfully registered it can be unregistered
1461  * with input_unregister_device(); input_free_device() should not be
1462  * called in this case.
1463  */
1464 int input_register_device(struct input_dev *dev)
1465 {
1466 	static atomic_t input_no = ATOMIC_INIT(0);
1467 	struct input_handler *handler;
1468 	const char *path;
1469 	int error;
1470 
1471 	__set_bit(EV_SYN, dev->evbit);
1472 
1473 	/*
1474 	 * If delay and period are pre-set by the driver, then autorepeating
1475 	 * is handled by the driver itself and we don't do it in input.c.
1476 	 */
1477 
1478 	init_timer(&dev->timer);
1479 	if (!dev->rep[REP_DELAY] && !dev->rep[REP_PERIOD]) {
1480 		dev->timer.data = (long) dev;
1481 		dev->timer.function = input_repeat_key;
1482 		dev->rep[REP_DELAY] = 250;
1483 		dev->rep[REP_PERIOD] = 33;
1484 	}
1485 
1486 	if (!dev->getkeycode)
1487 		dev->getkeycode = input_default_getkeycode;
1488 
1489 	if (!dev->setkeycode)
1490 		dev->setkeycode = input_default_setkeycode;
1491 
1492 	dev_set_name(&dev->dev, "input%ld",
1493 		     (unsigned long) atomic_inc_return(&input_no) - 1);
1494 
1495 	error = device_add(&dev->dev);
1496 	if (error)
1497 		return error;
1498 
1499 	path = kobject_get_path(&dev->dev.kobj, GFP_KERNEL);
1500 	printk(KERN_INFO "input: %s as %s\n",
1501 		dev->name ? dev->name : "Unspecified device", path ? path : "N/A");
1502 	kfree(path);
1503 
1504 	error = mutex_lock_interruptible(&input_mutex);
1505 	if (error) {
1506 		device_del(&dev->dev);
1507 		return error;
1508 	}
1509 
1510 	list_add_tail(&dev->node, &input_dev_list);
1511 
1512 	list_for_each_entry(handler, &input_handler_list, node)
1513 		input_attach_handler(dev, handler);
1514 
1515 	input_wakeup_procfs_readers();
1516 
1517 	mutex_unlock(&input_mutex);
1518 
1519 	return 0;
1520 }
1521 EXPORT_SYMBOL(input_register_device);
1522 
1523 /**
1524  * input_unregister_device - unregister previously registered device
1525  * @dev: device to be unregistered
1526  *
1527  * This function unregisters an input device. Once device is unregistered
1528  * the caller should not try to access it as it may get freed at any moment.
1529  */
1530 void input_unregister_device(struct input_dev *dev)
1531 {
1532 	struct input_handle *handle, *next;
1533 
1534 	input_disconnect_device(dev);
1535 
1536 	mutex_lock(&input_mutex);
1537 
1538 	list_for_each_entry_safe(handle, next, &dev->h_list, d_node)
1539 		handle->handler->disconnect(handle);
1540 	WARN_ON(!list_empty(&dev->h_list));
1541 
1542 	del_timer_sync(&dev->timer);
1543 	list_del_init(&dev->node);
1544 
1545 	input_wakeup_procfs_readers();
1546 
1547 	mutex_unlock(&input_mutex);
1548 
1549 	device_unregister(&dev->dev);
1550 }
1551 EXPORT_SYMBOL(input_unregister_device);
1552 
1553 /**
1554  * input_register_handler - register a new input handler
1555  * @handler: handler to be registered
1556  *
1557  * This function registers a new input handler (interface) for input
1558  * devices in the system and attaches it to all input devices that
1559  * are compatible with the handler.
1560  */
1561 int input_register_handler(struct input_handler *handler)
1562 {
1563 	struct input_dev *dev;
1564 	int retval;
1565 
1566 	retval = mutex_lock_interruptible(&input_mutex);
1567 	if (retval)
1568 		return retval;
1569 
1570 	INIT_LIST_HEAD(&handler->h_list);
1571 
1572 	if (handler->fops != NULL) {
1573 		if (input_table[handler->minor >> 5]) {
1574 			retval = -EBUSY;
1575 			goto out;
1576 		}
1577 		input_table[handler->minor >> 5] = handler;
1578 	}
1579 
1580 	list_add_tail(&handler->node, &input_handler_list);
1581 
1582 	list_for_each_entry(dev, &input_dev_list, node)
1583 		input_attach_handler(dev, handler);
1584 
1585 	input_wakeup_procfs_readers();
1586 
1587  out:
1588 	mutex_unlock(&input_mutex);
1589 	return retval;
1590 }
1591 EXPORT_SYMBOL(input_register_handler);
1592 
1593 /**
1594  * input_unregister_handler - unregisters an input handler
1595  * @handler: handler to be unregistered
1596  *
1597  * This function disconnects a handler from its input devices and
1598  * removes it from lists of known handlers.
1599  */
1600 void input_unregister_handler(struct input_handler *handler)
1601 {
1602 	struct input_handle *handle, *next;
1603 
1604 	mutex_lock(&input_mutex);
1605 
1606 	list_for_each_entry_safe(handle, next, &handler->h_list, h_node)
1607 		handler->disconnect(handle);
1608 	WARN_ON(!list_empty(&handler->h_list));
1609 
1610 	list_del_init(&handler->node);
1611 
1612 	if (handler->fops != NULL)
1613 		input_table[handler->minor >> 5] = NULL;
1614 
1615 	input_wakeup_procfs_readers();
1616 
1617 	mutex_unlock(&input_mutex);
1618 }
1619 EXPORT_SYMBOL(input_unregister_handler);
1620 
1621 /**
1622  * input_register_handle - register a new input handle
1623  * @handle: handle to register
1624  *
1625  * This function puts a new input handle onto device's
1626  * and handler's lists so that events can flow through
1627  * it once it is opened using input_open_device().
1628  *
1629  * This function is supposed to be called from handler's
1630  * connect() method.
1631  */
1632 int input_register_handle(struct input_handle *handle)
1633 {
1634 	struct input_handler *handler = handle->handler;
1635 	struct input_dev *dev = handle->dev;
1636 	int error;
1637 
1638 	/*
1639 	 * We take dev->mutex here to prevent race with
1640 	 * input_release_device().
1641 	 */
1642 	error = mutex_lock_interruptible(&dev->mutex);
1643 	if (error)
1644 		return error;
1645 	list_add_tail_rcu(&handle->d_node, &dev->h_list);
1646 	mutex_unlock(&dev->mutex);
1647 
1648 	/*
1649 	 * Since we are supposed to be called from ->connect()
1650 	 * which is mutually exclusive with ->disconnect()
1651 	 * we can't be racing with input_unregister_handle()
1652 	 * and so separate lock is not needed here.
1653 	 */
1654 	list_add_tail(&handle->h_node, &handler->h_list);
1655 
1656 	if (handler->start)
1657 		handler->start(handle);
1658 
1659 	return 0;
1660 }
1661 EXPORT_SYMBOL(input_register_handle);
1662 
1663 /**
1664  * input_unregister_handle - unregister an input handle
1665  * @handle: handle to unregister
1666  *
1667  * This function removes input handle from device's
1668  * and handler's lists.
1669  *
1670  * This function is supposed to be called from handler's
1671  * disconnect() method.
1672  */
1673 void input_unregister_handle(struct input_handle *handle)
1674 {
1675 	struct input_dev *dev = handle->dev;
1676 
1677 	list_del_init(&handle->h_node);
1678 
1679 	/*
1680 	 * Take dev->mutex to prevent race with input_release_device().
1681 	 */
1682 	mutex_lock(&dev->mutex);
1683 	list_del_rcu(&handle->d_node);
1684 	mutex_unlock(&dev->mutex);
1685 	synchronize_rcu();
1686 }
1687 EXPORT_SYMBOL(input_unregister_handle);
1688 
1689 static int input_open_file(struct inode *inode, struct file *file)
1690 {
1691 	struct input_handler *handler;
1692 	const struct file_operations *old_fops, *new_fops = NULL;
1693 	int err;
1694 
1695 	lock_kernel();
1696 	/* No load-on-demand here? */
1697 	handler = input_table[iminor(inode) >> 5];
1698 	if (!handler || !(new_fops = fops_get(handler->fops))) {
1699 		err = -ENODEV;
1700 		goto out;
1701 	}
1702 
1703 	/*
1704 	 * That's _really_ odd. Usually NULL ->open means "nothing special",
1705 	 * not "no device". Oh, well...
1706 	 */
1707 	if (!new_fops->open) {
1708 		fops_put(new_fops);
1709 		err = -ENODEV;
1710 		goto out;
1711 	}
1712 	old_fops = file->f_op;
1713 	file->f_op = new_fops;
1714 
1715 	err = new_fops->open(inode, file);
1716 
1717 	if (err) {
1718 		fops_put(file->f_op);
1719 		file->f_op = fops_get(old_fops);
1720 	}
1721 	fops_put(old_fops);
1722 out:
1723 	unlock_kernel();
1724 	return err;
1725 }
1726 
1727 static const struct file_operations input_fops = {
1728 	.owner = THIS_MODULE,
1729 	.open = input_open_file,
1730 };
1731 
1732 static void __init input_init_abs_bypass(void)
1733 {
1734 	const unsigned int *p;
1735 
1736 	for (p = input_abs_bypass_init_data; *p; p++)
1737 		input_abs_bypass[BIT_WORD(*p)] |= BIT_MASK(*p);
1738 }
1739 
1740 static int __init input_init(void)
1741 {
1742 	int err;
1743 
1744 	input_init_abs_bypass();
1745 
1746 	err = class_register(&input_class);
1747 	if (err) {
1748 		printk(KERN_ERR "input: unable to register input_dev class\n");
1749 		return err;
1750 	}
1751 
1752 	err = input_proc_init();
1753 	if (err)
1754 		goto fail1;
1755 
1756 	err = register_chrdev(INPUT_MAJOR, "input", &input_fops);
1757 	if (err) {
1758 		printk(KERN_ERR "input: unable to register char major %d", INPUT_MAJOR);
1759 		goto fail2;
1760 	}
1761 
1762 	return 0;
1763 
1764  fail2:	input_proc_exit();
1765  fail1:	class_unregister(&input_class);
1766 	return err;
1767 }
1768 
1769 static void __exit input_exit(void)
1770 {
1771 	input_proc_exit();
1772 	unregister_chrdev(INPUT_MAJOR, "input");
1773 	class_unregister(&input_class);
1774 }
1775 
1776 subsys_initcall(input_init);
1777 module_exit(input_exit);
1778