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