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#define pr_fmt(fmt) KBUILD_BASENAME ": " fmt
14
15#include <linux/init.h>
16#include <linux/types.h>
17#include <linux/idr.h>
18#include <linux/input/mt.h>
19#include <linux/module.h>
20#include <linux/slab.h>
21#include <linux/random.h>
22#include <linux/major.h>
23#include <linux/proc_fs.h>
24#include <linux/sched.h>
25#include <linux/seq_file.h>
26#include <linux/poll.h>
27#include <linux/device.h>
28#include <linux/mutex.h>
29#include <linux/rcupdate.h>
30#include "input-compat.h"
31
32MODULE_AUTHOR("Vojtech Pavlik <vojtech@suse.cz>");
33MODULE_DESCRIPTION("Input core");
34MODULE_LICENSE("GPL");
35
36#define INPUT_MAX_CHAR_DEVICES		1024
37#define INPUT_FIRST_DYNAMIC_DEV		256
38static DEFINE_IDA(input_ida);
39
40static LIST_HEAD(input_dev_list);
41static LIST_HEAD(input_handler_list);
42
43/*
44 * input_mutex protects access to both input_dev_list and input_handler_list.
45 * This also causes input_[un]register_device and input_[un]register_handler
46 * be mutually exclusive which simplifies locking in drivers implementing
47 * input handlers.
48 */
49static DEFINE_MUTEX(input_mutex);
50
51static const struct input_value input_value_sync = { EV_SYN, SYN_REPORT, 1 };
52
53static inline int is_event_supported(unsigned int code,
54				     unsigned long *bm, unsigned int max)
55{
56	return code <= max && test_bit(code, bm);
57}
58
59static int input_defuzz_abs_event(int value, int old_val, int fuzz)
60{
61	if (fuzz) {
62		if (value > old_val - fuzz / 2 && value < old_val + fuzz / 2)
63			return old_val;
64
65		if (value > old_val - fuzz && value < old_val + fuzz)
66			return (old_val * 3 + value) / 4;
67
68		if (value > old_val - fuzz * 2 && value < old_val + fuzz * 2)
69			return (old_val + value) / 2;
70	}
71
72	return value;
73}
74
75static void input_start_autorepeat(struct input_dev *dev, int code)
76{
77	if (test_bit(EV_REP, dev->evbit) &&
78	    dev->rep[REP_PERIOD] && dev->rep[REP_DELAY] &&
79	    dev->timer.data) {
80		dev->repeat_key = code;
81		mod_timer(&dev->timer,
82			  jiffies + msecs_to_jiffies(dev->rep[REP_DELAY]));
83	}
84}
85
86static void input_stop_autorepeat(struct input_dev *dev)
87{
88	del_timer(&dev->timer);
89}
90
91/*
92 * Pass event first through all filters and then, if event has not been
93 * filtered out, through all open handles. This function is called with
94 * dev->event_lock held and interrupts disabled.
95 */
96static unsigned int input_to_handler(struct input_handle *handle,
97			struct input_value *vals, unsigned int count)
98{
99	struct input_handler *handler = handle->handler;
100	struct input_value *end = vals;
101	struct input_value *v;
102
103	if (handler->filter) {
104		for (v = vals; v != vals + count; v++) {
105			if (handler->filter(handle, v->type, v->code, v->value))
106				continue;
107			if (end != v)
108				*end = *v;
109			end++;
110		}
111		count = end - vals;
112	}
113
114	if (!count)
115		return 0;
116
117	if (handler->events)
118		handler->events(handle, vals, count);
119	else if (handler->event)
120		for (v = vals; v != vals + count; v++)
121			handler->event(handle, v->type, v->code, v->value);
122
123	return count;
124}
125
126/*
127 * Pass values first through all filters and then, if event has not been
128 * filtered out, through all open handles. This function is called with
129 * dev->event_lock held and interrupts disabled.
130 */
131static void input_pass_values(struct input_dev *dev,
132			      struct input_value *vals, unsigned int count)
133{
134	struct input_handle *handle;
135	struct input_value *v;
136
137	if (!count)
138		return;
139
140	rcu_read_lock();
141
142	handle = rcu_dereference(dev->grab);
143	if (handle) {
144		count = input_to_handler(handle, vals, count);
145	} else {
146		list_for_each_entry_rcu(handle, &dev->h_list, d_node)
147			if (handle->open) {
148				count = input_to_handler(handle, vals, count);
149				if (!count)
150					break;
151			}
152	}
153
154	rcu_read_unlock();
155
156	add_input_randomness(vals->type, vals->code, vals->value);
157
158	/* trigger auto repeat for key events */
159	if (test_bit(EV_REP, dev->evbit) && test_bit(EV_KEY, dev->evbit)) {
160		for (v = vals; v != vals + count; v++) {
161			if (v->type == EV_KEY && v->value != 2) {
162				if (v->value)
163					input_start_autorepeat(dev, v->code);
164				else
165					input_stop_autorepeat(dev);
166			}
167		}
168	}
169}
170
171static void input_pass_event(struct input_dev *dev,
172			     unsigned int type, unsigned int code, int value)
173{
174	struct input_value vals[] = { { type, code, value } };
175
176	input_pass_values(dev, vals, ARRAY_SIZE(vals));
177}
178
179/*
180 * Generate software autorepeat event. Note that we take
181 * dev->event_lock here to avoid racing with input_event
182 * which may cause keys get "stuck".
183 */
184static void input_repeat_key(unsigned long data)
185{
186	struct input_dev *dev = (void *) data;
187	unsigned long flags;
188
189	spin_lock_irqsave(&dev->event_lock, flags);
190
191	if (test_bit(dev->repeat_key, dev->key) &&
192	    is_event_supported(dev->repeat_key, dev->keybit, KEY_MAX)) {
193		struct input_value vals[] =  {
194			{ EV_KEY, dev->repeat_key, 2 },
195			input_value_sync
196		};
197
198		input_pass_values(dev, vals, ARRAY_SIZE(vals));
199
200		if (dev->rep[REP_PERIOD])
201			mod_timer(&dev->timer, jiffies +
202					msecs_to_jiffies(dev->rep[REP_PERIOD]));
203	}
204
205	spin_unlock_irqrestore(&dev->event_lock, flags);
206}
207
208#define INPUT_IGNORE_EVENT	0
209#define INPUT_PASS_TO_HANDLERS	1
210#define INPUT_PASS_TO_DEVICE	2
211#define INPUT_SLOT		4
212#define INPUT_FLUSH		8
213#define INPUT_PASS_TO_ALL	(INPUT_PASS_TO_HANDLERS | INPUT_PASS_TO_DEVICE)
214
215static int input_handle_abs_event(struct input_dev *dev,
216				  unsigned int code, int *pval)
217{
218	struct input_mt *mt = dev->mt;
219	bool is_mt_event;
220	int *pold;
221
222	if (code == ABS_MT_SLOT) {
223		/*
224		 * "Stage" the event; we'll flush it later, when we
225		 * get actual touch data.
226		 */
227		if (mt && *pval >= 0 && *pval < mt->num_slots)
228			mt->slot = *pval;
229
230		return INPUT_IGNORE_EVENT;
231	}
232
233	is_mt_event = input_is_mt_value(code);
234
235	if (!is_mt_event) {
236		pold = &dev->absinfo[code].value;
237	} else if (mt) {
238		pold = &mt->slots[mt->slot].abs[code - ABS_MT_FIRST];
239	} else {
240		/*
241		 * Bypass filtering for multi-touch events when
242		 * not employing slots.
243		 */
244		pold = NULL;
245	}
246
247	if (pold) {
248		*pval = input_defuzz_abs_event(*pval, *pold,
249						dev->absinfo[code].fuzz);
250		if (*pold == *pval)
251			return INPUT_IGNORE_EVENT;
252
253		*pold = *pval;
254	}
255
256	/* Flush pending "slot" event */
257	if (is_mt_event && mt && mt->slot != input_abs_get_val(dev, ABS_MT_SLOT)) {
258		input_abs_set_val(dev, ABS_MT_SLOT, mt->slot);
259		return INPUT_PASS_TO_HANDLERS | INPUT_SLOT;
260	}
261
262	return INPUT_PASS_TO_HANDLERS;
263}
264
265static int input_get_disposition(struct input_dev *dev,
266			  unsigned int type, unsigned int code, int *pval)
267{
268	int disposition = INPUT_IGNORE_EVENT;
269	int value = *pval;
270
271	switch (type) {
272
273	case EV_SYN:
274		switch (code) {
275		case SYN_CONFIG:
276			disposition = INPUT_PASS_TO_ALL;
277			break;
278
279		case SYN_REPORT:
280			disposition = INPUT_PASS_TO_HANDLERS | INPUT_FLUSH;
281			break;
282		case SYN_MT_REPORT:
283			disposition = INPUT_PASS_TO_HANDLERS;
284			break;
285		}
286		break;
287
288	case EV_KEY:
289		if (is_event_supported(code, dev->keybit, KEY_MAX)) {
290
291			/* auto-repeat bypasses state updates */
292			if (value == 2) {
293				disposition = INPUT_PASS_TO_HANDLERS;
294				break;
295			}
296
297			if (!!test_bit(code, dev->key) != !!value) {
298
299				__change_bit(code, dev->key);
300				disposition = INPUT_PASS_TO_HANDLERS;
301			}
302		}
303		break;
304
305	case EV_SW:
306		if (is_event_supported(code, dev->swbit, SW_MAX) &&
307		    !!test_bit(code, dev->sw) != !!value) {
308
309			__change_bit(code, dev->sw);
310			disposition = INPUT_PASS_TO_HANDLERS;
311		}
312		break;
313
314	case EV_ABS:
315		if (is_event_supported(code, dev->absbit, ABS_MAX))
316			disposition = input_handle_abs_event(dev, code, &value);
317
318		break;
319
320	case EV_REL:
321		if (is_event_supported(code, dev->relbit, REL_MAX) && value)
322			disposition = INPUT_PASS_TO_HANDLERS;
323
324		break;
325
326	case EV_MSC:
327		if (is_event_supported(code, dev->mscbit, MSC_MAX))
328			disposition = INPUT_PASS_TO_ALL;
329
330		break;
331
332	case EV_LED:
333		if (is_event_supported(code, dev->ledbit, LED_MAX) &&
334		    !!test_bit(code, dev->led) != !!value) {
335
336			__change_bit(code, dev->led);
337			disposition = INPUT_PASS_TO_ALL;
338		}
339		break;
340
341	case EV_SND:
342		if (is_event_supported(code, dev->sndbit, SND_MAX)) {
343
344			if (!!test_bit(code, dev->snd) != !!value)
345				__change_bit(code, dev->snd);
346			disposition = INPUT_PASS_TO_ALL;
347		}
348		break;
349
350	case EV_REP:
351		if (code <= REP_MAX && value >= 0 && dev->rep[code] != value) {
352			dev->rep[code] = value;
353			disposition = INPUT_PASS_TO_ALL;
354		}
355		break;
356
357	case EV_FF:
358		if (value >= 0)
359			disposition = INPUT_PASS_TO_ALL;
360		break;
361
362	case EV_PWR:
363		disposition = INPUT_PASS_TO_ALL;
364		break;
365	}
366
367	*pval = value;
368	return disposition;
369}
370
371static void input_handle_event(struct input_dev *dev,
372			       unsigned int type, unsigned int code, int value)
373{
374	int disposition;
375
376	disposition = input_get_disposition(dev, type, code, &value);
377
378	if ((disposition & INPUT_PASS_TO_DEVICE) && dev->event)
379		dev->event(dev, type, code, value);
380
381	if (!dev->vals)
382		return;
383
384	if (disposition & INPUT_PASS_TO_HANDLERS) {
385		struct input_value *v;
386
387		if (disposition & INPUT_SLOT) {
388			v = &dev->vals[dev->num_vals++];
389			v->type = EV_ABS;
390			v->code = ABS_MT_SLOT;
391			v->value = dev->mt->slot;
392		}
393
394		v = &dev->vals[dev->num_vals++];
395		v->type = type;
396		v->code = code;
397		v->value = value;
398	}
399
400	if (disposition & INPUT_FLUSH) {
401		if (dev->num_vals >= 2)
402			input_pass_values(dev, dev->vals, dev->num_vals);
403		dev->num_vals = 0;
404	} else if (dev->num_vals >= dev->max_vals - 2) {
405		dev->vals[dev->num_vals++] = input_value_sync;
406		input_pass_values(dev, dev->vals, dev->num_vals);
407		dev->num_vals = 0;
408	}
409
410}
411
412/**
413 * input_event() - report new input event
414 * @dev: device that generated the event
415 * @type: type of the event
416 * @code: event code
417 * @value: value of the event
418 *
419 * This function should be used by drivers implementing various input
420 * devices to report input events. See also input_inject_event().
421 *
422 * NOTE: input_event() may be safely used right after input device was
423 * allocated with input_allocate_device(), even before it is registered
424 * with input_register_device(), but the event will not reach any of the
425 * input handlers. Such early invocation of input_event() may be used
426 * to 'seed' initial state of a switch or initial position of absolute
427 * axis, etc.
428 */
429void input_event(struct input_dev *dev,
430		 unsigned int type, unsigned int code, int value)
431{
432	unsigned long flags;
433
434	if (is_event_supported(type, dev->evbit, EV_MAX)) {
435
436		spin_lock_irqsave(&dev->event_lock, flags);
437		input_handle_event(dev, type, code, value);
438		spin_unlock_irqrestore(&dev->event_lock, flags);
439	}
440}
441EXPORT_SYMBOL(input_event);
442
443/**
444 * input_inject_event() - send input event from input handler
445 * @handle: input handle to send event through
446 * @type: type of the event
447 * @code: event code
448 * @value: value of the event
449 *
450 * Similar to input_event() but will ignore event if device is
451 * "grabbed" and handle injecting event is not the one that owns
452 * the device.
453 */
454void input_inject_event(struct input_handle *handle,
455			unsigned int type, unsigned int code, int value)
456{
457	struct input_dev *dev = handle->dev;
458	struct input_handle *grab;
459	unsigned long flags;
460
461	if (is_event_supported(type, dev->evbit, EV_MAX)) {
462		spin_lock_irqsave(&dev->event_lock, flags);
463
464		rcu_read_lock();
465		grab = rcu_dereference(dev->grab);
466		if (!grab || grab == handle)
467			input_handle_event(dev, type, code, value);
468		rcu_read_unlock();
469
470		spin_unlock_irqrestore(&dev->event_lock, flags);
471	}
472}
473EXPORT_SYMBOL(input_inject_event);
474
475/**
476 * input_alloc_absinfo - allocates array of input_absinfo structs
477 * @dev: the input device emitting absolute events
478 *
479 * If the absinfo struct the caller asked for is already allocated, this
480 * functions will not do anything.
481 */
482void input_alloc_absinfo(struct input_dev *dev)
483{
484	if (!dev->absinfo)
485		dev->absinfo = kcalloc(ABS_CNT, sizeof(struct input_absinfo),
486					GFP_KERNEL);
487
488	WARN(!dev->absinfo, "%s(): kcalloc() failed?\n", __func__);
489}
490EXPORT_SYMBOL(input_alloc_absinfo);
491
492void input_set_abs_params(struct input_dev *dev, unsigned int axis,
493			  int min, int max, int fuzz, int flat)
494{
495	struct input_absinfo *absinfo;
496
497	input_alloc_absinfo(dev);
498	if (!dev->absinfo)
499		return;
500
501	absinfo = &dev->absinfo[axis];
502	absinfo->minimum = min;
503	absinfo->maximum = max;
504	absinfo->fuzz = fuzz;
505	absinfo->flat = flat;
506
507	__set_bit(EV_ABS, dev->evbit);
508	__set_bit(axis, dev->absbit);
509}
510EXPORT_SYMBOL(input_set_abs_params);
511
512
513/**
514 * input_grab_device - grabs device for exclusive use
515 * @handle: input handle that wants to own the device
516 *
517 * When a device is grabbed by an input handle all events generated by
518 * the device are delivered only to this handle. Also events injected
519 * by other input handles are ignored while device is grabbed.
520 */
521int input_grab_device(struct input_handle *handle)
522{
523	struct input_dev *dev = handle->dev;
524	int retval;
525
526	retval = mutex_lock_interruptible(&dev->mutex);
527	if (retval)
528		return retval;
529
530	if (dev->grab) {
531		retval = -EBUSY;
532		goto out;
533	}
534
535	rcu_assign_pointer(dev->grab, handle);
536
537 out:
538	mutex_unlock(&dev->mutex);
539	return retval;
540}
541EXPORT_SYMBOL(input_grab_device);
542
543static void __input_release_device(struct input_handle *handle)
544{
545	struct input_dev *dev = handle->dev;
546	struct input_handle *grabber;
547
548	grabber = rcu_dereference_protected(dev->grab,
549					    lockdep_is_held(&dev->mutex));
550	if (grabber == handle) {
551		rcu_assign_pointer(dev->grab, NULL);
552		/* Make sure input_pass_event() notices that grab is gone */
553		synchronize_rcu();
554
555		list_for_each_entry(handle, &dev->h_list, d_node)
556			if (handle->open && handle->handler->start)
557				handle->handler->start(handle);
558	}
559}
560
561/**
562 * input_release_device - release previously grabbed device
563 * @handle: input handle that owns the device
564 *
565 * Releases previously grabbed device so that other input handles can
566 * start receiving input events. Upon release all handlers attached
567 * to the device have their start() method called so they have a change
568 * to synchronize device state with the rest of the system.
569 */
570void input_release_device(struct input_handle *handle)
571{
572	struct input_dev *dev = handle->dev;
573
574	mutex_lock(&dev->mutex);
575	__input_release_device(handle);
576	mutex_unlock(&dev->mutex);
577}
578EXPORT_SYMBOL(input_release_device);
579
580/**
581 * input_open_device - open input device
582 * @handle: handle through which device is being accessed
583 *
584 * This function should be called by input handlers when they
585 * want to start receive events from given input device.
586 */
587int input_open_device(struct input_handle *handle)
588{
589	struct input_dev *dev = handle->dev;
590	int retval;
591
592	retval = mutex_lock_interruptible(&dev->mutex);
593	if (retval)
594		return retval;
595
596	if (dev->going_away) {
597		retval = -ENODEV;
598		goto out;
599	}
600
601	handle->open++;
602
603	if (!dev->users++ && dev->open)
604		retval = dev->open(dev);
605
606	if (retval) {
607		dev->users--;
608		if (!--handle->open) {
609			/*
610			 * Make sure we are not delivering any more events
611			 * through this handle
612			 */
613			synchronize_rcu();
614		}
615	}
616
617 out:
618	mutex_unlock(&dev->mutex);
619	return retval;
620}
621EXPORT_SYMBOL(input_open_device);
622
623int input_flush_device(struct input_handle *handle, struct file *file)
624{
625	struct input_dev *dev = handle->dev;
626	int retval;
627
628	retval = mutex_lock_interruptible(&dev->mutex);
629	if (retval)
630		return retval;
631
632	if (dev->flush)
633		retval = dev->flush(dev, file);
634
635	mutex_unlock(&dev->mutex);
636	return retval;
637}
638EXPORT_SYMBOL(input_flush_device);
639
640/**
641 * input_close_device - close input device
642 * @handle: handle through which device is being accessed
643 *
644 * This function should be called by input handlers when they
645 * want to stop receive events from given input device.
646 */
647void input_close_device(struct input_handle *handle)
648{
649	struct input_dev *dev = handle->dev;
650
651	mutex_lock(&dev->mutex);
652
653	__input_release_device(handle);
654
655	if (!--dev->users && dev->close)
656		dev->close(dev);
657
658	if (!--handle->open) {
659		/*
660		 * synchronize_rcu() makes sure that input_pass_event()
661		 * completed and that no more input events are delivered
662		 * through this handle
663		 */
664		synchronize_rcu();
665	}
666
667	mutex_unlock(&dev->mutex);
668}
669EXPORT_SYMBOL(input_close_device);
670
671/*
672 * Simulate keyup events for all keys that are marked as pressed.
673 * The function must be called with dev->event_lock held.
674 */
675static void input_dev_release_keys(struct input_dev *dev)
676{
677	int code;
678
679	if (is_event_supported(EV_KEY, dev->evbit, EV_MAX)) {
680		for (code = 0; code <= KEY_MAX; code++) {
681			if (is_event_supported(code, dev->keybit, KEY_MAX) &&
682			    __test_and_clear_bit(code, dev->key)) {
683				input_pass_event(dev, EV_KEY, code, 0);
684			}
685		}
686		input_pass_event(dev, EV_SYN, SYN_REPORT, 1);
687	}
688}
689
690/*
691 * Prepare device for unregistering
692 */
693static void input_disconnect_device(struct input_dev *dev)
694{
695	struct input_handle *handle;
696
697	/*
698	 * Mark device as going away. Note that we take dev->mutex here
699	 * not to protect access to dev->going_away but rather to ensure
700	 * that there are no threads in the middle of input_open_device()
701	 */
702	mutex_lock(&dev->mutex);
703	dev->going_away = true;
704	mutex_unlock(&dev->mutex);
705
706	spin_lock_irq(&dev->event_lock);
707
708	/*
709	 * Simulate keyup events for all pressed keys so that handlers
710	 * are not left with "stuck" keys. The driver may continue
711	 * generate events even after we done here but they will not
712	 * reach any handlers.
713	 */
714	input_dev_release_keys(dev);
715
716	list_for_each_entry(handle, &dev->h_list, d_node)
717		handle->open = 0;
718
719	spin_unlock_irq(&dev->event_lock);
720}
721
722/**
723 * input_scancode_to_scalar() - converts scancode in &struct input_keymap_entry
724 * @ke: keymap entry containing scancode to be converted.
725 * @scancode: pointer to the location where converted scancode should
726 *	be stored.
727 *
728 * This function is used to convert scancode stored in &struct keymap_entry
729 * into scalar form understood by legacy keymap handling methods. These
730 * methods expect scancodes to be represented as 'unsigned int'.
731 */
732int input_scancode_to_scalar(const struct input_keymap_entry *ke,
733			     unsigned int *scancode)
734{
735	switch (ke->len) {
736	case 1:
737		*scancode = *((u8 *)ke->scancode);
738		break;
739
740	case 2:
741		*scancode = *((u16 *)ke->scancode);
742		break;
743
744	case 4:
745		*scancode = *((u32 *)ke->scancode);
746		break;
747
748	default:
749		return -EINVAL;
750	}
751
752	return 0;
753}
754EXPORT_SYMBOL(input_scancode_to_scalar);
755
756/*
757 * Those routines handle the default case where no [gs]etkeycode() is
758 * defined. In this case, an array indexed by the scancode is used.
759 */
760
761static unsigned int input_fetch_keycode(struct input_dev *dev,
762					unsigned int index)
763{
764	switch (dev->keycodesize) {
765	case 1:
766		return ((u8 *)dev->keycode)[index];
767
768	case 2:
769		return ((u16 *)dev->keycode)[index];
770
771	default:
772		return ((u32 *)dev->keycode)[index];
773	}
774}
775
776static int input_default_getkeycode(struct input_dev *dev,
777				    struct input_keymap_entry *ke)
778{
779	unsigned int index;
780	int error;
781
782	if (!dev->keycodesize)
783		return -EINVAL;
784
785	if (ke->flags & INPUT_KEYMAP_BY_INDEX)
786		index = ke->index;
787	else {
788		error = input_scancode_to_scalar(ke, &index);
789		if (error)
790			return error;
791	}
792
793	if (index >= dev->keycodemax)
794		return -EINVAL;
795
796	ke->keycode = input_fetch_keycode(dev, index);
797	ke->index = index;
798	ke->len = sizeof(index);
799	memcpy(ke->scancode, &index, sizeof(index));
800
801	return 0;
802}
803
804static int input_default_setkeycode(struct input_dev *dev,
805				    const struct input_keymap_entry *ke,
806				    unsigned int *old_keycode)
807{
808	unsigned int index;
809	int error;
810	int i;
811
812	if (!dev->keycodesize)
813		return -EINVAL;
814
815	if (ke->flags & INPUT_KEYMAP_BY_INDEX) {
816		index = ke->index;
817	} else {
818		error = input_scancode_to_scalar(ke, &index);
819		if (error)
820			return error;
821	}
822
823	if (index >= dev->keycodemax)
824		return -EINVAL;
825
826	if (dev->keycodesize < sizeof(ke->keycode) &&
827			(ke->keycode >> (dev->keycodesize * 8)))
828		return -EINVAL;
829
830	switch (dev->keycodesize) {
831		case 1: {
832			u8 *k = (u8 *)dev->keycode;
833			*old_keycode = k[index];
834			k[index] = ke->keycode;
835			break;
836		}
837		case 2: {
838			u16 *k = (u16 *)dev->keycode;
839			*old_keycode = k[index];
840			k[index] = ke->keycode;
841			break;
842		}
843		default: {
844			u32 *k = (u32 *)dev->keycode;
845			*old_keycode = k[index];
846			k[index] = ke->keycode;
847			break;
848		}
849	}
850
851	__clear_bit(*old_keycode, dev->keybit);
852	__set_bit(ke->keycode, dev->keybit);
853
854	for (i = 0; i < dev->keycodemax; i++) {
855		if (input_fetch_keycode(dev, i) == *old_keycode) {
856			__set_bit(*old_keycode, dev->keybit);
857			break; /* Setting the bit twice is useless, so break */
858		}
859	}
860
861	return 0;
862}
863
864/**
865 * input_get_keycode - retrieve keycode currently mapped to a given scancode
866 * @dev: input device which keymap is being queried
867 * @ke: keymap entry
868 *
869 * This function should be called by anyone interested in retrieving current
870 * keymap. Presently evdev handlers use it.
871 */
872int input_get_keycode(struct input_dev *dev, struct input_keymap_entry *ke)
873{
874	unsigned long flags;
875	int retval;
876
877	spin_lock_irqsave(&dev->event_lock, flags);
878	retval = dev->getkeycode(dev, ke);
879	spin_unlock_irqrestore(&dev->event_lock, flags);
880
881	return retval;
882}
883EXPORT_SYMBOL(input_get_keycode);
884
885/**
886 * input_set_keycode - attribute a keycode to a given scancode
887 * @dev: input device which keymap is being updated
888 * @ke: new keymap entry
889 *
890 * This function should be called by anyone needing to update current
891 * keymap. Presently keyboard and evdev handlers use it.
892 */
893int input_set_keycode(struct input_dev *dev,
894		      const struct input_keymap_entry *ke)
895{
896	unsigned long flags;
897	unsigned int old_keycode;
898	int retval;
899
900	if (ke->keycode > KEY_MAX)
901		return -EINVAL;
902
903	spin_lock_irqsave(&dev->event_lock, flags);
904
905	retval = dev->setkeycode(dev, ke, &old_keycode);
906	if (retval)
907		goto out;
908
909	/* Make sure KEY_RESERVED did not get enabled. */
910	__clear_bit(KEY_RESERVED, dev->keybit);
911
912	/*
913	 * Simulate keyup event if keycode is not present
914	 * in the keymap anymore
915	 */
916	if (test_bit(EV_KEY, dev->evbit) &&
917	    !is_event_supported(old_keycode, dev->keybit, KEY_MAX) &&
918	    __test_and_clear_bit(old_keycode, dev->key)) {
919		struct input_value vals[] =  {
920			{ EV_KEY, old_keycode, 0 },
921			input_value_sync
922		};
923
924		input_pass_values(dev, vals, ARRAY_SIZE(vals));
925	}
926
927 out:
928	spin_unlock_irqrestore(&dev->event_lock, flags);
929
930	return retval;
931}
932EXPORT_SYMBOL(input_set_keycode);
933
934static const struct input_device_id *input_match_device(struct input_handler *handler,
935							struct input_dev *dev)
936{
937	const struct input_device_id *id;
938
939	for (id = handler->id_table; id->flags || id->driver_info; id++) {
940
941		if (id->flags & INPUT_DEVICE_ID_MATCH_BUS)
942			if (id->bustype != dev->id.bustype)
943				continue;
944
945		if (id->flags & INPUT_DEVICE_ID_MATCH_VENDOR)
946			if (id->vendor != dev->id.vendor)
947				continue;
948
949		if (id->flags & INPUT_DEVICE_ID_MATCH_PRODUCT)
950			if (id->product != dev->id.product)
951				continue;
952
953		if (id->flags & INPUT_DEVICE_ID_MATCH_VERSION)
954			if (id->version != dev->id.version)
955				continue;
956
957		if (!bitmap_subset(id->evbit, dev->evbit, EV_MAX))
958			continue;
959
960		if (!bitmap_subset(id->keybit, dev->keybit, KEY_MAX))
961			continue;
962
963		if (!bitmap_subset(id->relbit, dev->relbit, REL_MAX))
964			continue;
965
966		if (!bitmap_subset(id->absbit, dev->absbit, ABS_MAX))
967			continue;
968
969		if (!bitmap_subset(id->mscbit, dev->mscbit, MSC_MAX))
970			continue;
971
972		if (!bitmap_subset(id->ledbit, dev->ledbit, LED_MAX))
973			continue;
974
975		if (!bitmap_subset(id->sndbit, dev->sndbit, SND_MAX))
976			continue;
977
978		if (!bitmap_subset(id->ffbit, dev->ffbit, FF_MAX))
979			continue;
980
981		if (!bitmap_subset(id->swbit, dev->swbit, SW_MAX))
982			continue;
983
984		if (!handler->match || handler->match(handler, dev))
985			return id;
986	}
987
988	return NULL;
989}
990
991static int input_attach_handler(struct input_dev *dev, struct input_handler *handler)
992{
993	const struct input_device_id *id;
994	int error;
995
996	id = input_match_device(handler, dev);
997	if (!id)
998		return -ENODEV;
999
1000	error = handler->connect(handler, dev, id);
1001	if (error && error != -ENODEV)
1002		pr_err("failed to attach handler %s to device %s, error: %d\n",
1003		       handler->name, kobject_name(&dev->dev.kobj), error);
1004
1005	return error;
1006}
1007
1008#ifdef CONFIG_COMPAT
1009
1010static int input_bits_to_string(char *buf, int buf_size,
1011				unsigned long bits, bool skip_empty)
1012{
1013	int len = 0;
1014
1015	if (INPUT_COMPAT_TEST) {
1016		u32 dword = bits >> 32;
1017		if (dword || !skip_empty)
1018			len += snprintf(buf, buf_size, "%x ", dword);
1019
1020		dword = bits & 0xffffffffUL;
1021		if (dword || !skip_empty || len)
1022			len += snprintf(buf + len, max(buf_size - len, 0),
1023					"%x", dword);
1024	} else {
1025		if (bits || !skip_empty)
1026			len += snprintf(buf, buf_size, "%lx", bits);
1027	}
1028
1029	return len;
1030}
1031
1032#else /* !CONFIG_COMPAT */
1033
1034static int input_bits_to_string(char *buf, int buf_size,
1035				unsigned long bits, bool skip_empty)
1036{
1037	return bits || !skip_empty ?
1038		snprintf(buf, buf_size, "%lx", bits) : 0;
1039}
1040
1041#endif
1042
1043#ifdef CONFIG_PROC_FS
1044
1045static struct proc_dir_entry *proc_bus_input_dir;
1046static DECLARE_WAIT_QUEUE_HEAD(input_devices_poll_wait);
1047static int input_devices_state;
1048
1049static inline void input_wakeup_procfs_readers(void)
1050{
1051	input_devices_state++;
1052	wake_up(&input_devices_poll_wait);
1053}
1054
1055static unsigned int input_proc_devices_poll(struct file *file, poll_table *wait)
1056{
1057	poll_wait(file, &input_devices_poll_wait, wait);
1058	if (file->f_version != input_devices_state) {
1059		file->f_version = input_devices_state;
1060		return POLLIN | POLLRDNORM;
1061	}
1062
1063	return 0;
1064}
1065
1066union input_seq_state {
1067	struct {
1068		unsigned short pos;
1069		bool mutex_acquired;
1070	};
1071	void *p;
1072};
1073
1074static void *input_devices_seq_start(struct seq_file *seq, loff_t *pos)
1075{
1076	union input_seq_state *state = (union input_seq_state *)&seq->private;
1077	int error;
1078
1079	/* We need to fit into seq->private pointer */
1080	BUILD_BUG_ON(sizeof(union input_seq_state) != sizeof(seq->private));
1081
1082	error = mutex_lock_interruptible(&input_mutex);
1083	if (error) {
1084		state->mutex_acquired = false;
1085		return ERR_PTR(error);
1086	}
1087
1088	state->mutex_acquired = true;
1089
1090	return seq_list_start(&input_dev_list, *pos);
1091}
1092
1093static void *input_devices_seq_next(struct seq_file *seq, void *v, loff_t *pos)
1094{
1095	return seq_list_next(v, &input_dev_list, pos);
1096}
1097
1098static void input_seq_stop(struct seq_file *seq, void *v)
1099{
1100	union input_seq_state *state = (union input_seq_state *)&seq->private;
1101
1102	if (state->mutex_acquired)
1103		mutex_unlock(&input_mutex);
1104}
1105
1106static void input_seq_print_bitmap(struct seq_file *seq, const char *name,
1107				   unsigned long *bitmap, int max)
1108{
1109	int i;
1110	bool skip_empty = true;
1111	char buf[18];
1112
1113	seq_printf(seq, "B: %s=", name);
1114
1115	for (i = BITS_TO_LONGS(max) - 1; i >= 0; i--) {
1116		if (input_bits_to_string(buf, sizeof(buf),
1117					 bitmap[i], skip_empty)) {
1118			skip_empty = false;
1119			seq_printf(seq, "%s%s", buf, i > 0 ? " " : "");
1120		}
1121	}
1122
1123	/*
1124	 * If no output was produced print a single 0.
1125	 */
1126	if (skip_empty)
1127		seq_puts(seq, "0");
1128
1129	seq_putc(seq, '\n');
1130}
1131
1132static int input_devices_seq_show(struct seq_file *seq, void *v)
1133{
1134	struct input_dev *dev = container_of(v, struct input_dev, node);
1135	const char *path = kobject_get_path(&dev->dev.kobj, GFP_KERNEL);
1136	struct input_handle *handle;
1137
1138	seq_printf(seq, "I: Bus=%04x Vendor=%04x Product=%04x Version=%04x\n",
1139		   dev->id.bustype, dev->id.vendor, dev->id.product, dev->id.version);
1140
1141	seq_printf(seq, "N: Name=\"%s\"\n", dev->name ? dev->name : "");
1142	seq_printf(seq, "P: Phys=%s\n", dev->phys ? dev->phys : "");
1143	seq_printf(seq, "S: Sysfs=%s\n", path ? path : "");
1144	seq_printf(seq, "U: Uniq=%s\n", dev->uniq ? dev->uniq : "");
1145	seq_printf(seq, "H: Handlers=");
1146
1147	list_for_each_entry(handle, &dev->h_list, d_node)
1148		seq_printf(seq, "%s ", handle->name);
1149	seq_putc(seq, '\n');
1150
1151	input_seq_print_bitmap(seq, "PROP", dev->propbit, INPUT_PROP_MAX);
1152
1153	input_seq_print_bitmap(seq, "EV", dev->evbit, EV_MAX);
1154	if (test_bit(EV_KEY, dev->evbit))
1155		input_seq_print_bitmap(seq, "KEY", dev->keybit, KEY_MAX);
1156	if (test_bit(EV_REL, dev->evbit))
1157		input_seq_print_bitmap(seq, "REL", dev->relbit, REL_MAX);
1158	if (test_bit(EV_ABS, dev->evbit))
1159		input_seq_print_bitmap(seq, "ABS", dev->absbit, ABS_MAX);
1160	if (test_bit(EV_MSC, dev->evbit))
1161		input_seq_print_bitmap(seq, "MSC", dev->mscbit, MSC_MAX);
1162	if (test_bit(EV_LED, dev->evbit))
1163		input_seq_print_bitmap(seq, "LED", dev->ledbit, LED_MAX);
1164	if (test_bit(EV_SND, dev->evbit))
1165		input_seq_print_bitmap(seq, "SND", dev->sndbit, SND_MAX);
1166	if (test_bit(EV_FF, dev->evbit))
1167		input_seq_print_bitmap(seq, "FF", dev->ffbit, FF_MAX);
1168	if (test_bit(EV_SW, dev->evbit))
1169		input_seq_print_bitmap(seq, "SW", dev->swbit, SW_MAX);
1170
1171	seq_putc(seq, '\n');
1172
1173	kfree(path);
1174	return 0;
1175}
1176
1177static const struct seq_operations input_devices_seq_ops = {
1178	.start	= input_devices_seq_start,
1179	.next	= input_devices_seq_next,
1180	.stop	= input_seq_stop,
1181	.show	= input_devices_seq_show,
1182};
1183
1184static int input_proc_devices_open(struct inode *inode, struct file *file)
1185{
1186	return seq_open(file, &input_devices_seq_ops);
1187}
1188
1189static const struct file_operations input_devices_fileops = {
1190	.owner		= THIS_MODULE,
1191	.open		= input_proc_devices_open,
1192	.poll		= input_proc_devices_poll,
1193	.read		= seq_read,
1194	.llseek		= seq_lseek,
1195	.release	= seq_release,
1196};
1197
1198static void *input_handlers_seq_start(struct seq_file *seq, loff_t *pos)
1199{
1200	union input_seq_state *state = (union input_seq_state *)&seq->private;
1201	int error;
1202
1203	/* We need to fit into seq->private pointer */
1204	BUILD_BUG_ON(sizeof(union input_seq_state) != sizeof(seq->private));
1205
1206	error = mutex_lock_interruptible(&input_mutex);
1207	if (error) {
1208		state->mutex_acquired = false;
1209		return ERR_PTR(error);
1210	}
1211
1212	state->mutex_acquired = true;
1213	state->pos = *pos;
1214
1215	return seq_list_start(&input_handler_list, *pos);
1216}
1217
1218static void *input_handlers_seq_next(struct seq_file *seq, void *v, loff_t *pos)
1219{
1220	union input_seq_state *state = (union input_seq_state *)&seq->private;
1221
1222	state->pos = *pos + 1;
1223	return seq_list_next(v, &input_handler_list, pos);
1224}
1225
1226static int input_handlers_seq_show(struct seq_file *seq, void *v)
1227{
1228	struct input_handler *handler = container_of(v, struct input_handler, node);
1229	union input_seq_state *state = (union input_seq_state *)&seq->private;
1230
1231	seq_printf(seq, "N: Number=%u Name=%s", state->pos, handler->name);
1232	if (handler->filter)
1233		seq_puts(seq, " (filter)");
1234	if (handler->legacy_minors)
1235		seq_printf(seq, " Minor=%d", handler->minor);
1236	seq_putc(seq, '\n');
1237
1238	return 0;
1239}
1240
1241static const struct seq_operations input_handlers_seq_ops = {
1242	.start	= input_handlers_seq_start,
1243	.next	= input_handlers_seq_next,
1244	.stop	= input_seq_stop,
1245	.show	= input_handlers_seq_show,
1246};
1247
1248static int input_proc_handlers_open(struct inode *inode, struct file *file)
1249{
1250	return seq_open(file, &input_handlers_seq_ops);
1251}
1252
1253static const struct file_operations input_handlers_fileops = {
1254	.owner		= THIS_MODULE,
1255	.open		= input_proc_handlers_open,
1256	.read		= seq_read,
1257	.llseek		= seq_lseek,
1258	.release	= seq_release,
1259};
1260
1261static int __init input_proc_init(void)
1262{
1263	struct proc_dir_entry *entry;
1264
1265	proc_bus_input_dir = proc_mkdir("bus/input", NULL);
1266	if (!proc_bus_input_dir)
1267		return -ENOMEM;
1268
1269	entry = proc_create("devices", 0, proc_bus_input_dir,
1270			    &input_devices_fileops);
1271	if (!entry)
1272		goto fail1;
1273
1274	entry = proc_create("handlers", 0, proc_bus_input_dir,
1275			    &input_handlers_fileops);
1276	if (!entry)
1277		goto fail2;
1278
1279	return 0;
1280
1281 fail2:	remove_proc_entry("devices", proc_bus_input_dir);
1282 fail1: remove_proc_entry("bus/input", NULL);
1283	return -ENOMEM;
1284}
1285
1286static void input_proc_exit(void)
1287{
1288	remove_proc_entry("devices", proc_bus_input_dir);
1289	remove_proc_entry("handlers", proc_bus_input_dir);
1290	remove_proc_entry("bus/input", NULL);
1291}
1292
1293#else /* !CONFIG_PROC_FS */
1294static inline void input_wakeup_procfs_readers(void) { }
1295static inline int input_proc_init(void) { return 0; }
1296static inline void input_proc_exit(void) { }
1297#endif
1298
1299#define INPUT_DEV_STRING_ATTR_SHOW(name)				\
1300static ssize_t input_dev_show_##name(struct device *dev,		\
1301				     struct device_attribute *attr,	\
1302				     char *buf)				\
1303{									\
1304	struct input_dev *input_dev = to_input_dev(dev);		\
1305									\
1306	return scnprintf(buf, PAGE_SIZE, "%s\n",			\
1307			 input_dev->name ? input_dev->name : "");	\
1308}									\
1309static DEVICE_ATTR(name, S_IRUGO, input_dev_show_##name, NULL)
1310
1311INPUT_DEV_STRING_ATTR_SHOW(name);
1312INPUT_DEV_STRING_ATTR_SHOW(phys);
1313INPUT_DEV_STRING_ATTR_SHOW(uniq);
1314
1315static int input_print_modalias_bits(char *buf, int size,
1316				     char name, unsigned long *bm,
1317				     unsigned int min_bit, unsigned int max_bit)
1318{
1319	int len = 0, i;
1320
1321	len += snprintf(buf, max(size, 0), "%c", name);
1322	for (i = min_bit; i < max_bit; i++)
1323		if (bm[BIT_WORD(i)] & BIT_MASK(i))
1324			len += snprintf(buf + len, max(size - len, 0), "%X,", i);
1325	return len;
1326}
1327
1328static int input_print_modalias(char *buf, int size, struct input_dev *id,
1329				int add_cr)
1330{
1331	int len;
1332
1333	len = snprintf(buf, max(size, 0),
1334		       "input:b%04Xv%04Xp%04Xe%04X-",
1335		       id->id.bustype, id->id.vendor,
1336		       id->id.product, id->id.version);
1337
1338	len += input_print_modalias_bits(buf + len, size - len,
1339				'e', id->evbit, 0, EV_MAX);
1340	len += input_print_modalias_bits(buf + len, size - len,
1341				'k', id->keybit, KEY_MIN_INTERESTING, KEY_MAX);
1342	len += input_print_modalias_bits(buf + len, size - len,
1343				'r', id->relbit, 0, REL_MAX);
1344	len += input_print_modalias_bits(buf + len, size - len,
1345				'a', id->absbit, 0, ABS_MAX);
1346	len += input_print_modalias_bits(buf + len, size - len,
1347				'm', id->mscbit, 0, MSC_MAX);
1348	len += input_print_modalias_bits(buf + len, size - len,
1349				'l', id->ledbit, 0, LED_MAX);
1350	len += input_print_modalias_bits(buf + len, size - len,
1351				's', id->sndbit, 0, SND_MAX);
1352	len += input_print_modalias_bits(buf + len, size - len,
1353				'f', id->ffbit, 0, FF_MAX);
1354	len += input_print_modalias_bits(buf + len, size - len,
1355				'w', id->swbit, 0, SW_MAX);
1356
1357	if (add_cr)
1358		len += snprintf(buf + len, max(size - len, 0), "\n");
1359
1360	return len;
1361}
1362
1363static ssize_t input_dev_show_modalias(struct device *dev,
1364				       struct device_attribute *attr,
1365				       char *buf)
1366{
1367	struct input_dev *id = to_input_dev(dev);
1368	ssize_t len;
1369
1370	len = input_print_modalias(buf, PAGE_SIZE, id, 1);
1371
1372	return min_t(int, len, PAGE_SIZE);
1373}
1374static DEVICE_ATTR(modalias, S_IRUGO, input_dev_show_modalias, NULL);
1375
1376static int input_print_bitmap(char *buf, int buf_size, unsigned long *bitmap,
1377			      int max, int add_cr);
1378
1379static ssize_t input_dev_show_properties(struct device *dev,
1380					 struct device_attribute *attr,
1381					 char *buf)
1382{
1383	struct input_dev *input_dev = to_input_dev(dev);
1384	int len = input_print_bitmap(buf, PAGE_SIZE, input_dev->propbit,
1385				     INPUT_PROP_MAX, true);
1386	return min_t(int, len, PAGE_SIZE);
1387}
1388static DEVICE_ATTR(properties, S_IRUGO, input_dev_show_properties, NULL);
1389
1390static struct attribute *input_dev_attrs[] = {
1391	&dev_attr_name.attr,
1392	&dev_attr_phys.attr,
1393	&dev_attr_uniq.attr,
1394	&dev_attr_modalias.attr,
1395	&dev_attr_properties.attr,
1396	NULL
1397};
1398
1399static struct attribute_group input_dev_attr_group = {
1400	.attrs	= input_dev_attrs,
1401};
1402
1403#define INPUT_DEV_ID_ATTR(name)						\
1404static ssize_t input_dev_show_id_##name(struct device *dev,		\
1405					struct device_attribute *attr,	\
1406					char *buf)			\
1407{									\
1408	struct input_dev *input_dev = to_input_dev(dev);		\
1409	return scnprintf(buf, PAGE_SIZE, "%04x\n", input_dev->id.name);	\
1410}									\
1411static DEVICE_ATTR(name, S_IRUGO, input_dev_show_id_##name, NULL)
1412
1413INPUT_DEV_ID_ATTR(bustype);
1414INPUT_DEV_ID_ATTR(vendor);
1415INPUT_DEV_ID_ATTR(product);
1416INPUT_DEV_ID_ATTR(version);
1417
1418static struct attribute *input_dev_id_attrs[] = {
1419	&dev_attr_bustype.attr,
1420	&dev_attr_vendor.attr,
1421	&dev_attr_product.attr,
1422	&dev_attr_version.attr,
1423	NULL
1424};
1425
1426static struct attribute_group input_dev_id_attr_group = {
1427	.name	= "id",
1428	.attrs	= input_dev_id_attrs,
1429};
1430
1431static int input_print_bitmap(char *buf, int buf_size, unsigned long *bitmap,
1432			      int max, int add_cr)
1433{
1434	int i;
1435	int len = 0;
1436	bool skip_empty = true;
1437
1438	for (i = BITS_TO_LONGS(max) - 1; i >= 0; i--) {
1439		len += input_bits_to_string(buf + len, max(buf_size - len, 0),
1440					    bitmap[i], skip_empty);
1441		if (len) {
1442			skip_empty = false;
1443			if (i > 0)
1444				len += snprintf(buf + len, max(buf_size - len, 0), " ");
1445		}
1446	}
1447
1448	/*
1449	 * If no output was produced print a single 0.
1450	 */
1451	if (len == 0)
1452		len = snprintf(buf, buf_size, "%d", 0);
1453
1454	if (add_cr)
1455		len += snprintf(buf + len, max(buf_size - len, 0), "\n");
1456
1457	return len;
1458}
1459
1460#define INPUT_DEV_CAP_ATTR(ev, bm)					\
1461static ssize_t input_dev_show_cap_##bm(struct device *dev,		\
1462				       struct device_attribute *attr,	\
1463				       char *buf)			\
1464{									\
1465	struct input_dev *input_dev = to_input_dev(dev);		\
1466	int len = input_print_bitmap(buf, PAGE_SIZE,			\
1467				     input_dev->bm##bit, ev##_MAX,	\
1468				     true);				\
1469	return min_t(int, len, PAGE_SIZE);				\
1470}									\
1471static DEVICE_ATTR(bm, S_IRUGO, input_dev_show_cap_##bm, NULL)
1472
1473INPUT_DEV_CAP_ATTR(EV, ev);
1474INPUT_DEV_CAP_ATTR(KEY, key);
1475INPUT_DEV_CAP_ATTR(REL, rel);
1476INPUT_DEV_CAP_ATTR(ABS, abs);
1477INPUT_DEV_CAP_ATTR(MSC, msc);
1478INPUT_DEV_CAP_ATTR(LED, led);
1479INPUT_DEV_CAP_ATTR(SND, snd);
1480INPUT_DEV_CAP_ATTR(FF, ff);
1481INPUT_DEV_CAP_ATTR(SW, sw);
1482
1483static struct attribute *input_dev_caps_attrs[] = {
1484	&dev_attr_ev.attr,
1485	&dev_attr_key.attr,
1486	&dev_attr_rel.attr,
1487	&dev_attr_abs.attr,
1488	&dev_attr_msc.attr,
1489	&dev_attr_led.attr,
1490	&dev_attr_snd.attr,
1491	&dev_attr_ff.attr,
1492	&dev_attr_sw.attr,
1493	NULL
1494};
1495
1496static struct attribute_group input_dev_caps_attr_group = {
1497	.name	= "capabilities",
1498	.attrs	= input_dev_caps_attrs,
1499};
1500
1501static const struct attribute_group *input_dev_attr_groups[] = {
1502	&input_dev_attr_group,
1503	&input_dev_id_attr_group,
1504	&input_dev_caps_attr_group,
1505	NULL
1506};
1507
1508static void input_dev_release(struct device *device)
1509{
1510	struct input_dev *dev = to_input_dev(device);
1511
1512	input_ff_destroy(dev);
1513	input_mt_destroy_slots(dev);
1514	kfree(dev->absinfo);
1515	kfree(dev->vals);
1516	kfree(dev);
1517
1518	module_put(THIS_MODULE);
1519}
1520
1521/*
1522 * Input uevent interface - loading event handlers based on
1523 * device bitfields.
1524 */
1525static int input_add_uevent_bm_var(struct kobj_uevent_env *env,
1526				   const char *name, unsigned long *bitmap, int max)
1527{
1528	int len;
1529
1530	if (add_uevent_var(env, "%s", name))
1531		return -ENOMEM;
1532
1533	len = input_print_bitmap(&env->buf[env->buflen - 1],
1534				 sizeof(env->buf) - env->buflen,
1535				 bitmap, max, false);
1536	if (len >= (sizeof(env->buf) - env->buflen))
1537		return -ENOMEM;
1538
1539	env->buflen += len;
1540	return 0;
1541}
1542
1543static int input_add_uevent_modalias_var(struct kobj_uevent_env *env,
1544					 struct input_dev *dev)
1545{
1546	int len;
1547
1548	if (add_uevent_var(env, "MODALIAS="))
1549		return -ENOMEM;
1550
1551	len = input_print_modalias(&env->buf[env->buflen - 1],
1552				   sizeof(env->buf) - env->buflen,
1553				   dev, 0);
1554	if (len >= (sizeof(env->buf) - env->buflen))
1555		return -ENOMEM;
1556
1557	env->buflen += len;
1558	return 0;
1559}
1560
1561#define INPUT_ADD_HOTPLUG_VAR(fmt, val...)				\
1562	do {								\
1563		int err = add_uevent_var(env, fmt, val);		\
1564		if (err)						\
1565			return err;					\
1566	} while (0)
1567
1568#define INPUT_ADD_HOTPLUG_BM_VAR(name, bm, max)				\
1569	do {								\
1570		int err = input_add_uevent_bm_var(env, name, bm, max);	\
1571		if (err)						\
1572			return err;					\
1573	} while (0)
1574
1575#define INPUT_ADD_HOTPLUG_MODALIAS_VAR(dev)				\
1576	do {								\
1577		int err = input_add_uevent_modalias_var(env, dev);	\
1578		if (err)						\
1579			return err;					\
1580	} while (0)
1581
1582static int input_dev_uevent(struct device *device, struct kobj_uevent_env *env)
1583{
1584	struct input_dev *dev = to_input_dev(device);
1585
1586	INPUT_ADD_HOTPLUG_VAR("PRODUCT=%x/%x/%x/%x",
1587				dev->id.bustype, dev->id.vendor,
1588				dev->id.product, dev->id.version);
1589	if (dev->name)
1590		INPUT_ADD_HOTPLUG_VAR("NAME=\"%s\"", dev->name);
1591	if (dev->phys)
1592		INPUT_ADD_HOTPLUG_VAR("PHYS=\"%s\"", dev->phys);
1593	if (dev->uniq)
1594		INPUT_ADD_HOTPLUG_VAR("UNIQ=\"%s\"", dev->uniq);
1595
1596	INPUT_ADD_HOTPLUG_BM_VAR("PROP=", dev->propbit, INPUT_PROP_MAX);
1597
1598	INPUT_ADD_HOTPLUG_BM_VAR("EV=", dev->evbit, EV_MAX);
1599	if (test_bit(EV_KEY, dev->evbit))
1600		INPUT_ADD_HOTPLUG_BM_VAR("KEY=", dev->keybit, KEY_MAX);
1601	if (test_bit(EV_REL, dev->evbit))
1602		INPUT_ADD_HOTPLUG_BM_VAR("REL=", dev->relbit, REL_MAX);
1603	if (test_bit(EV_ABS, dev->evbit))
1604		INPUT_ADD_HOTPLUG_BM_VAR("ABS=", dev->absbit, ABS_MAX);
1605	if (test_bit(EV_MSC, dev->evbit))
1606		INPUT_ADD_HOTPLUG_BM_VAR("MSC=", dev->mscbit, MSC_MAX);
1607	if (test_bit(EV_LED, dev->evbit))
1608		INPUT_ADD_HOTPLUG_BM_VAR("LED=", dev->ledbit, LED_MAX);
1609	if (test_bit(EV_SND, dev->evbit))
1610		INPUT_ADD_HOTPLUG_BM_VAR("SND=", dev->sndbit, SND_MAX);
1611	if (test_bit(EV_FF, dev->evbit))
1612		INPUT_ADD_HOTPLUG_BM_VAR("FF=", dev->ffbit, FF_MAX);
1613	if (test_bit(EV_SW, dev->evbit))
1614		INPUT_ADD_HOTPLUG_BM_VAR("SW=", dev->swbit, SW_MAX);
1615
1616	INPUT_ADD_HOTPLUG_MODALIAS_VAR(dev);
1617
1618	return 0;
1619}
1620
1621#define INPUT_DO_TOGGLE(dev, type, bits, on)				\
1622	do {								\
1623		int i;							\
1624		bool active;						\
1625									\
1626		if (!test_bit(EV_##type, dev->evbit))			\
1627			break;						\
1628									\
1629		for (i = 0; i < type##_MAX; i++) {			\
1630			if (!test_bit(i, dev->bits##bit))		\
1631				continue;				\
1632									\
1633			active = test_bit(i, dev->bits);		\
1634			if (!active && !on)				\
1635				continue;				\
1636									\
1637			dev->event(dev, EV_##type, i, on ? active : 0);	\
1638		}							\
1639	} while (0)
1640
1641static void input_dev_toggle(struct input_dev *dev, bool activate)
1642{
1643	if (!dev->event)
1644		return;
1645
1646	INPUT_DO_TOGGLE(dev, LED, led, activate);
1647	INPUT_DO_TOGGLE(dev, SND, snd, activate);
1648
1649	if (activate && test_bit(EV_REP, dev->evbit)) {
1650		dev->event(dev, EV_REP, REP_PERIOD, dev->rep[REP_PERIOD]);
1651		dev->event(dev, EV_REP, REP_DELAY, dev->rep[REP_DELAY]);
1652	}
1653}
1654
1655/**
1656 * input_reset_device() - reset/restore the state of input device
1657 * @dev: input device whose state needs to be reset
1658 *
1659 * This function tries to reset the state of an opened input device and
1660 * bring internal state and state if the hardware in sync with each other.
1661 * We mark all keys as released, restore LED state, repeat rate, etc.
1662 */
1663void input_reset_device(struct input_dev *dev)
1664{
1665	unsigned long flags;
1666
1667	mutex_lock(&dev->mutex);
1668	spin_lock_irqsave(&dev->event_lock, flags);
1669
1670	input_dev_toggle(dev, true);
1671	input_dev_release_keys(dev);
1672
1673	spin_unlock_irqrestore(&dev->event_lock, flags);
1674	mutex_unlock(&dev->mutex);
1675}
1676EXPORT_SYMBOL(input_reset_device);
1677
1678#ifdef CONFIG_PM_SLEEP
1679static int input_dev_suspend(struct device *dev)
1680{
1681	struct input_dev *input_dev = to_input_dev(dev);
1682
1683	spin_lock_irq(&input_dev->event_lock);
1684
1685	/*
1686	 * Keys that are pressed now are unlikely to be
1687	 * still pressed when we resume.
1688	 */
1689	input_dev_release_keys(input_dev);
1690
1691	/* Turn off LEDs and sounds, if any are active. */
1692	input_dev_toggle(input_dev, false);
1693
1694	spin_unlock_irq(&input_dev->event_lock);
1695
1696	return 0;
1697}
1698
1699static int input_dev_resume(struct device *dev)
1700{
1701	struct input_dev *input_dev = to_input_dev(dev);
1702
1703	spin_lock_irq(&input_dev->event_lock);
1704
1705	/* Restore state of LEDs and sounds, if any were active. */
1706	input_dev_toggle(input_dev, true);
1707
1708	spin_unlock_irq(&input_dev->event_lock);
1709
1710	return 0;
1711}
1712
1713static int input_dev_freeze(struct device *dev)
1714{
1715	struct input_dev *input_dev = to_input_dev(dev);
1716
1717	spin_lock_irq(&input_dev->event_lock);
1718
1719	/*
1720	 * Keys that are pressed now are unlikely to be
1721	 * still pressed when we resume.
1722	 */
1723	input_dev_release_keys(input_dev);
1724
1725	spin_unlock_irq(&input_dev->event_lock);
1726
1727	return 0;
1728}
1729
1730static int input_dev_poweroff(struct device *dev)
1731{
1732	struct input_dev *input_dev = to_input_dev(dev);
1733
1734	spin_lock_irq(&input_dev->event_lock);
1735
1736	/* Turn off LEDs and sounds, if any are active. */
1737	input_dev_toggle(input_dev, false);
1738
1739	spin_unlock_irq(&input_dev->event_lock);
1740
1741	return 0;
1742}
1743
1744static const struct dev_pm_ops input_dev_pm_ops = {
1745	.suspend	= input_dev_suspend,
1746	.resume		= input_dev_resume,
1747	.freeze		= input_dev_freeze,
1748	.poweroff	= input_dev_poweroff,
1749	.restore	= input_dev_resume,
1750};
1751#endif /* CONFIG_PM */
1752
1753static struct device_type input_dev_type = {
1754	.groups		= input_dev_attr_groups,
1755	.release	= input_dev_release,
1756	.uevent		= input_dev_uevent,
1757#ifdef CONFIG_PM_SLEEP
1758	.pm		= &input_dev_pm_ops,
1759#endif
1760};
1761
1762static char *input_devnode(struct device *dev, umode_t *mode)
1763{
1764	return kasprintf(GFP_KERNEL, "input/%s", dev_name(dev));
1765}
1766
1767struct class input_class = {
1768	.name		= "input",
1769	.devnode	= input_devnode,
1770};
1771EXPORT_SYMBOL_GPL(input_class);
1772
1773/**
1774 * input_allocate_device - allocate memory for new input device
1775 *
1776 * Returns prepared struct input_dev or %NULL.
1777 *
1778 * NOTE: Use input_free_device() to free devices that have not been
1779 * registered; input_unregister_device() should be used for already
1780 * registered devices.
1781 */
1782struct input_dev *input_allocate_device(void)
1783{
1784	static atomic_t input_no = ATOMIC_INIT(-1);
1785	struct input_dev *dev;
1786
1787	dev = kzalloc(sizeof(struct input_dev), GFP_KERNEL);
1788	if (dev) {
1789		dev->dev.type = &input_dev_type;
1790		dev->dev.class = &input_class;
1791		device_initialize(&dev->dev);
1792		mutex_init(&dev->mutex);
1793		spin_lock_init(&dev->event_lock);
1794		init_timer(&dev->timer);
1795		INIT_LIST_HEAD(&dev->h_list);
1796		INIT_LIST_HEAD(&dev->node);
1797
1798		dev_set_name(&dev->dev, "input%lu",
1799			     (unsigned long)atomic_inc_return(&input_no));
1800
1801		__module_get(THIS_MODULE);
1802	}
1803
1804	return dev;
1805}
1806EXPORT_SYMBOL(input_allocate_device);
1807
1808struct input_devres {
1809	struct input_dev *input;
1810};
1811
1812static int devm_input_device_match(struct device *dev, void *res, void *data)
1813{
1814	struct input_devres *devres = res;
1815
1816	return devres->input == data;
1817}
1818
1819static void devm_input_device_release(struct device *dev, void *res)
1820{
1821	struct input_devres *devres = res;
1822	struct input_dev *input = devres->input;
1823
1824	dev_dbg(dev, "%s: dropping reference to %s\n",
1825		__func__, dev_name(&input->dev));
1826	input_put_device(input);
1827}
1828
1829/**
1830 * devm_input_allocate_device - allocate managed input device
1831 * @dev: device owning the input device being created
1832 *
1833 * Returns prepared struct input_dev or %NULL.
1834 *
1835 * Managed input devices do not need to be explicitly unregistered or
1836 * freed as it will be done automatically when owner device unbinds from
1837 * its driver (or binding fails). Once managed input device is allocated,
1838 * it is ready to be set up and registered in the same fashion as regular
1839 * input device. There are no special devm_input_device_[un]register()
1840 * variants, regular ones work with both managed and unmanaged devices,
1841 * should you need them. In most cases however, managed input device need
1842 * not be explicitly unregistered or freed.
1843 *
1844 * NOTE: the owner device is set up as parent of input device and users
1845 * should not override it.
1846 */
1847struct input_dev *devm_input_allocate_device(struct device *dev)
1848{
1849	struct input_dev *input;
1850	struct input_devres *devres;
1851
1852	devres = devres_alloc(devm_input_device_release,
1853			      sizeof(struct input_devres), GFP_KERNEL);
1854	if (!devres)
1855		return NULL;
1856
1857	input = input_allocate_device();
1858	if (!input) {
1859		devres_free(devres);
1860		return NULL;
1861	}
1862
1863	input->dev.parent = dev;
1864	input->devres_managed = true;
1865
1866	devres->input = input;
1867	devres_add(dev, devres);
1868
1869	return input;
1870}
1871EXPORT_SYMBOL(devm_input_allocate_device);
1872
1873/**
1874 * input_free_device - free memory occupied by input_dev structure
1875 * @dev: input device to free
1876 *
1877 * This function should only be used if input_register_device()
1878 * was not called yet or if it failed. Once device was registered
1879 * use input_unregister_device() and memory will be freed once last
1880 * reference to the device is dropped.
1881 *
1882 * Device should be allocated by input_allocate_device().
1883 *
1884 * NOTE: If there are references to the input device then memory
1885 * will not be freed until last reference is dropped.
1886 */
1887void input_free_device(struct input_dev *dev)
1888{
1889	if (dev) {
1890		if (dev->devres_managed)
1891			WARN_ON(devres_destroy(dev->dev.parent,
1892						devm_input_device_release,
1893						devm_input_device_match,
1894						dev));
1895		input_put_device(dev);
1896	}
1897}
1898EXPORT_SYMBOL(input_free_device);
1899
1900/**
1901 * input_set_capability - mark device as capable of a certain event
1902 * @dev: device that is capable of emitting or accepting event
1903 * @type: type of the event (EV_KEY, EV_REL, etc...)
1904 * @code: event code
1905 *
1906 * In addition to setting up corresponding bit in appropriate capability
1907 * bitmap the function also adjusts dev->evbit.
1908 */
1909void input_set_capability(struct input_dev *dev, unsigned int type, unsigned int code)
1910{
1911	switch (type) {
1912	case EV_KEY:
1913		__set_bit(code, dev->keybit);
1914		break;
1915
1916	case EV_REL:
1917		__set_bit(code, dev->relbit);
1918		break;
1919
1920	case EV_ABS:
1921		input_alloc_absinfo(dev);
1922		if (!dev->absinfo)
1923			return;
1924
1925		__set_bit(code, dev->absbit);
1926		break;
1927
1928	case EV_MSC:
1929		__set_bit(code, dev->mscbit);
1930		break;
1931
1932	case EV_SW:
1933		__set_bit(code, dev->swbit);
1934		break;
1935
1936	case EV_LED:
1937		__set_bit(code, dev->ledbit);
1938		break;
1939
1940	case EV_SND:
1941		__set_bit(code, dev->sndbit);
1942		break;
1943
1944	case EV_FF:
1945		__set_bit(code, dev->ffbit);
1946		break;
1947
1948	case EV_PWR:
1949		/* do nothing */
1950		break;
1951
1952	default:
1953		pr_err("input_set_capability: unknown type %u (code %u)\n",
1954		       type, code);
1955		dump_stack();
1956		return;
1957	}
1958
1959	__set_bit(type, dev->evbit);
1960}
1961EXPORT_SYMBOL(input_set_capability);
1962
1963static unsigned int input_estimate_events_per_packet(struct input_dev *dev)
1964{
1965	int mt_slots;
1966	int i;
1967	unsigned int events;
1968
1969	if (dev->mt) {
1970		mt_slots = dev->mt->num_slots;
1971	} else if (test_bit(ABS_MT_TRACKING_ID, dev->absbit)) {
1972		mt_slots = dev->absinfo[ABS_MT_TRACKING_ID].maximum -
1973			   dev->absinfo[ABS_MT_TRACKING_ID].minimum + 1,
1974		mt_slots = clamp(mt_slots, 2, 32);
1975	} else if (test_bit(ABS_MT_POSITION_X, dev->absbit)) {
1976		mt_slots = 2;
1977	} else {
1978		mt_slots = 0;
1979	}
1980
1981	events = mt_slots + 1; /* count SYN_MT_REPORT and SYN_REPORT */
1982
1983	if (test_bit(EV_ABS, dev->evbit)) {
1984		for (i = 0; i < ABS_CNT; i++) {
1985			if (test_bit(i, dev->absbit)) {
1986				if (input_is_mt_axis(i))
1987					events += mt_slots;
1988				else
1989					events++;
1990			}
1991		}
1992	}
1993
1994	if (test_bit(EV_REL, dev->evbit)) {
1995		for (i = 0; i < REL_CNT; i++)
1996			if (test_bit(i, dev->relbit))
1997				events++;
1998	}
1999
2000	/* Make room for KEY and MSC events */
2001	events += 7;
2002
2003	return events;
2004}
2005
2006#define INPUT_CLEANSE_BITMASK(dev, type, bits)				\
2007	do {								\
2008		if (!test_bit(EV_##type, dev->evbit))			\
2009			memset(dev->bits##bit, 0,			\
2010				sizeof(dev->bits##bit));		\
2011	} while (0)
2012
2013static void input_cleanse_bitmasks(struct input_dev *dev)
2014{
2015	INPUT_CLEANSE_BITMASK(dev, KEY, key);
2016	INPUT_CLEANSE_BITMASK(dev, REL, rel);
2017	INPUT_CLEANSE_BITMASK(dev, ABS, abs);
2018	INPUT_CLEANSE_BITMASK(dev, MSC, msc);
2019	INPUT_CLEANSE_BITMASK(dev, LED, led);
2020	INPUT_CLEANSE_BITMASK(dev, SND, snd);
2021	INPUT_CLEANSE_BITMASK(dev, FF, ff);
2022	INPUT_CLEANSE_BITMASK(dev, SW, sw);
2023}
2024
2025static void __input_unregister_device(struct input_dev *dev)
2026{
2027	struct input_handle *handle, *next;
2028
2029	input_disconnect_device(dev);
2030
2031	mutex_lock(&input_mutex);
2032
2033	list_for_each_entry_safe(handle, next, &dev->h_list, d_node)
2034		handle->handler->disconnect(handle);
2035	WARN_ON(!list_empty(&dev->h_list));
2036
2037	del_timer_sync(&dev->timer);
2038	list_del_init(&dev->node);
2039
2040	input_wakeup_procfs_readers();
2041
2042	mutex_unlock(&input_mutex);
2043
2044	device_del(&dev->dev);
2045}
2046
2047static void devm_input_device_unregister(struct device *dev, void *res)
2048{
2049	struct input_devres *devres = res;
2050	struct input_dev *input = devres->input;
2051
2052	dev_dbg(dev, "%s: unregistering device %s\n",
2053		__func__, dev_name(&input->dev));
2054	__input_unregister_device(input);
2055}
2056
2057/**
2058 * input_register_device - register device with input core
2059 * @dev: device to be registered
2060 *
2061 * This function registers device with input core. The device must be
2062 * allocated with input_allocate_device() and all it's capabilities
2063 * set up before registering.
2064 * If function fails the device must be freed with input_free_device().
2065 * Once device has been successfully registered it can be unregistered
2066 * with input_unregister_device(); input_free_device() should not be
2067 * called in this case.
2068 *
2069 * Note that this function is also used to register managed input devices
2070 * (ones allocated with devm_input_allocate_device()). Such managed input
2071 * devices need not be explicitly unregistered or freed, their tear down
2072 * is controlled by the devres infrastructure. It is also worth noting
2073 * that tear down of managed input devices is internally a 2-step process:
2074 * registered managed input device is first unregistered, but stays in
2075 * memory and can still handle input_event() calls (although events will
2076 * not be delivered anywhere). The freeing of managed input device will
2077 * happen later, when devres stack is unwound to the point where device
2078 * allocation was made.
2079 */
2080int input_register_device(struct input_dev *dev)
2081{
2082	struct input_devres *devres = NULL;
2083	struct input_handler *handler;
2084	unsigned int packet_size;
2085	const char *path;
2086	int error;
2087
2088	if (dev->devres_managed) {
2089		devres = devres_alloc(devm_input_device_unregister,
2090				      sizeof(struct input_devres), GFP_KERNEL);
2091		if (!devres)
2092			return -ENOMEM;
2093
2094		devres->input = dev;
2095	}
2096
2097	/* Every input device generates EV_SYN/SYN_REPORT events. */
2098	__set_bit(EV_SYN, dev->evbit);
2099
2100	/* KEY_RESERVED is not supposed to be transmitted to userspace. */
2101	__clear_bit(KEY_RESERVED, dev->keybit);
2102
2103	/* Make sure that bitmasks not mentioned in dev->evbit are clean. */
2104	input_cleanse_bitmasks(dev);
2105
2106	packet_size = input_estimate_events_per_packet(dev);
2107	if (dev->hint_events_per_packet < packet_size)
2108		dev->hint_events_per_packet = packet_size;
2109
2110	dev->max_vals = dev->hint_events_per_packet + 2;
2111	dev->vals = kcalloc(dev->max_vals, sizeof(*dev->vals), GFP_KERNEL);
2112	if (!dev->vals) {
2113		error = -ENOMEM;
2114		goto err_devres_free;
2115	}
2116
2117	/*
2118	 * If delay and period are pre-set by the driver, then autorepeating
2119	 * is handled by the driver itself and we don't do it in input.c.
2120	 */
2121	if (!dev->rep[REP_DELAY] && !dev->rep[REP_PERIOD]) {
2122		dev->timer.data = (long) dev;
2123		dev->timer.function = input_repeat_key;
2124		dev->rep[REP_DELAY] = 250;
2125		dev->rep[REP_PERIOD] = 33;
2126	}
2127
2128	if (!dev->getkeycode)
2129		dev->getkeycode = input_default_getkeycode;
2130
2131	if (!dev->setkeycode)
2132		dev->setkeycode = input_default_setkeycode;
2133
2134	error = device_add(&dev->dev);
2135	if (error)
2136		goto err_free_vals;
2137
2138	path = kobject_get_path(&dev->dev.kobj, GFP_KERNEL);
2139	pr_info("%s as %s\n",
2140		dev->name ? dev->name : "Unspecified device",
2141		path ? path : "N/A");
2142	kfree(path);
2143
2144	error = mutex_lock_interruptible(&input_mutex);
2145	if (error)
2146		goto err_device_del;
2147
2148	list_add_tail(&dev->node, &input_dev_list);
2149
2150	list_for_each_entry(handler, &input_handler_list, node)
2151		input_attach_handler(dev, handler);
2152
2153	input_wakeup_procfs_readers();
2154
2155	mutex_unlock(&input_mutex);
2156
2157	if (dev->devres_managed) {
2158		dev_dbg(dev->dev.parent, "%s: registering %s with devres.\n",
2159			__func__, dev_name(&dev->dev));
2160		devres_add(dev->dev.parent, devres);
2161	}
2162	return 0;
2163
2164err_device_del:
2165	device_del(&dev->dev);
2166err_free_vals:
2167	kfree(dev->vals);
2168	dev->vals = NULL;
2169err_devres_free:
2170	devres_free(devres);
2171	return error;
2172}
2173EXPORT_SYMBOL(input_register_device);
2174
2175/**
2176 * input_unregister_device - unregister previously registered device
2177 * @dev: device to be unregistered
2178 *
2179 * This function unregisters an input device. Once device is unregistered
2180 * the caller should not try to access it as it may get freed at any moment.
2181 */
2182void input_unregister_device(struct input_dev *dev)
2183{
2184	if (dev->devres_managed) {
2185		WARN_ON(devres_destroy(dev->dev.parent,
2186					devm_input_device_unregister,
2187					devm_input_device_match,
2188					dev));
2189		__input_unregister_device(dev);
2190		/*
2191		 * We do not do input_put_device() here because it will be done
2192		 * when 2nd devres fires up.
2193		 */
2194	} else {
2195		__input_unregister_device(dev);
2196		input_put_device(dev);
2197	}
2198}
2199EXPORT_SYMBOL(input_unregister_device);
2200
2201/**
2202 * input_register_handler - register a new input handler
2203 * @handler: handler to be registered
2204 *
2205 * This function registers a new input handler (interface) for input
2206 * devices in the system and attaches it to all input devices that
2207 * are compatible with the handler.
2208 */
2209int input_register_handler(struct input_handler *handler)
2210{
2211	struct input_dev *dev;
2212	int error;
2213
2214	error = mutex_lock_interruptible(&input_mutex);
2215	if (error)
2216		return error;
2217
2218	INIT_LIST_HEAD(&handler->h_list);
2219
2220	list_add_tail(&handler->node, &input_handler_list);
2221
2222	list_for_each_entry(dev, &input_dev_list, node)
2223		input_attach_handler(dev, handler);
2224
2225	input_wakeup_procfs_readers();
2226
2227	mutex_unlock(&input_mutex);
2228	return 0;
2229}
2230EXPORT_SYMBOL(input_register_handler);
2231
2232/**
2233 * input_unregister_handler - unregisters an input handler
2234 * @handler: handler to be unregistered
2235 *
2236 * This function disconnects a handler from its input devices and
2237 * removes it from lists of known handlers.
2238 */
2239void input_unregister_handler(struct input_handler *handler)
2240{
2241	struct input_handle *handle, *next;
2242
2243	mutex_lock(&input_mutex);
2244
2245	list_for_each_entry_safe(handle, next, &handler->h_list, h_node)
2246		handler->disconnect(handle);
2247	WARN_ON(!list_empty(&handler->h_list));
2248
2249	list_del_init(&handler->node);
2250
2251	input_wakeup_procfs_readers();
2252
2253	mutex_unlock(&input_mutex);
2254}
2255EXPORT_SYMBOL(input_unregister_handler);
2256
2257/**
2258 * input_handler_for_each_handle - handle iterator
2259 * @handler: input handler to iterate
2260 * @data: data for the callback
2261 * @fn: function to be called for each handle
2262 *
2263 * Iterate over @bus's list of devices, and call @fn for each, passing
2264 * it @data and stop when @fn returns a non-zero value. The function is
2265 * using RCU to traverse the list and therefore may be usind in atonic
2266 * contexts. The @fn callback is invoked from RCU critical section and
2267 * thus must not sleep.
2268 */
2269int input_handler_for_each_handle(struct input_handler *handler, void *data,
2270				  int (*fn)(struct input_handle *, void *))
2271{
2272	struct input_handle *handle;
2273	int retval = 0;
2274
2275	rcu_read_lock();
2276
2277	list_for_each_entry_rcu(handle, &handler->h_list, h_node) {
2278		retval = fn(handle, data);
2279		if (retval)
2280			break;
2281	}
2282
2283	rcu_read_unlock();
2284
2285	return retval;
2286}
2287EXPORT_SYMBOL(input_handler_for_each_handle);
2288
2289/**
2290 * input_register_handle - register a new input handle
2291 * @handle: handle to register
2292 *
2293 * This function puts a new input handle onto device's
2294 * and handler's lists so that events can flow through
2295 * it once it is opened using input_open_device().
2296 *
2297 * This function is supposed to be called from handler's
2298 * connect() method.
2299 */
2300int input_register_handle(struct input_handle *handle)
2301{
2302	struct input_handler *handler = handle->handler;
2303	struct input_dev *dev = handle->dev;
2304	int error;
2305
2306	/*
2307	 * We take dev->mutex here to prevent race with
2308	 * input_release_device().
2309	 */
2310	error = mutex_lock_interruptible(&dev->mutex);
2311	if (error)
2312		return error;
2313
2314	/*
2315	 * Filters go to the head of the list, normal handlers
2316	 * to the tail.
2317	 */
2318	if (handler->filter)
2319		list_add_rcu(&handle->d_node, &dev->h_list);
2320	else
2321		list_add_tail_rcu(&handle->d_node, &dev->h_list);
2322
2323	mutex_unlock(&dev->mutex);
2324
2325	/*
2326	 * Since we are supposed to be called from ->connect()
2327	 * which is mutually exclusive with ->disconnect()
2328	 * we can't be racing with input_unregister_handle()
2329	 * and so separate lock is not needed here.
2330	 */
2331	list_add_tail_rcu(&handle->h_node, &handler->h_list);
2332
2333	if (handler->start)
2334		handler->start(handle);
2335
2336	return 0;
2337}
2338EXPORT_SYMBOL(input_register_handle);
2339
2340/**
2341 * input_unregister_handle - unregister an input handle
2342 * @handle: handle to unregister
2343 *
2344 * This function removes input handle from device's
2345 * and handler's lists.
2346 *
2347 * This function is supposed to be called from handler's
2348 * disconnect() method.
2349 */
2350void input_unregister_handle(struct input_handle *handle)
2351{
2352	struct input_dev *dev = handle->dev;
2353
2354	list_del_rcu(&handle->h_node);
2355
2356	/*
2357	 * Take dev->mutex to prevent race with input_release_device().
2358	 */
2359	mutex_lock(&dev->mutex);
2360	list_del_rcu(&handle->d_node);
2361	mutex_unlock(&dev->mutex);
2362
2363	synchronize_rcu();
2364}
2365EXPORT_SYMBOL(input_unregister_handle);
2366
2367/**
2368 * input_get_new_minor - allocates a new input minor number
2369 * @legacy_base: beginning or the legacy range to be searched
2370 * @legacy_num: size of legacy range
2371 * @allow_dynamic: whether we can also take ID from the dynamic range
2372 *
2373 * This function allocates a new device minor for from input major namespace.
2374 * Caller can request legacy minor by specifying @legacy_base and @legacy_num
2375 * parameters and whether ID can be allocated from dynamic range if there are
2376 * no free IDs in legacy range.
2377 */
2378int input_get_new_minor(int legacy_base, unsigned int legacy_num,
2379			bool allow_dynamic)
2380{
2381	/*
2382	 * This function should be called from input handler's ->connect()
2383	 * methods, which are serialized with input_mutex, so no additional
2384	 * locking is needed here.
2385	 */
2386	if (legacy_base >= 0) {
2387		int minor = ida_simple_get(&input_ida,
2388					   legacy_base,
2389					   legacy_base + legacy_num,
2390					   GFP_KERNEL);
2391		if (minor >= 0 || !allow_dynamic)
2392			return minor;
2393	}
2394
2395	return ida_simple_get(&input_ida,
2396			      INPUT_FIRST_DYNAMIC_DEV, INPUT_MAX_CHAR_DEVICES,
2397			      GFP_KERNEL);
2398}
2399EXPORT_SYMBOL(input_get_new_minor);
2400
2401/**
2402 * input_free_minor - release previously allocated minor
2403 * @minor: minor to be released
2404 *
2405 * This function releases previously allocated input minor so that it can be
2406 * reused later.
2407 */
2408void input_free_minor(unsigned int minor)
2409{
2410	ida_simple_remove(&input_ida, minor);
2411}
2412EXPORT_SYMBOL(input_free_minor);
2413
2414static int __init input_init(void)
2415{
2416	int err;
2417
2418	err = class_register(&input_class);
2419	if (err) {
2420		pr_err("unable to register input_dev class\n");
2421		return err;
2422	}
2423
2424	err = input_proc_init();
2425	if (err)
2426		goto fail1;
2427
2428	err = register_chrdev_region(MKDEV(INPUT_MAJOR, 0),
2429				     INPUT_MAX_CHAR_DEVICES, "input");
2430	if (err) {
2431		pr_err("unable to register char major %d", INPUT_MAJOR);
2432		goto fail2;
2433	}
2434
2435	return 0;
2436
2437 fail2:	input_proc_exit();
2438 fail1:	class_unregister(&input_class);
2439	return err;
2440}
2441
2442static void __exit input_exit(void)
2443{
2444	input_proc_exit();
2445	unregister_chrdev_region(MKDEV(INPUT_MAJOR, 0),
2446				 INPUT_MAX_CHAR_DEVICES);
2447	class_unregister(&input_class);
2448}
2449
2450subsys_initcall(input_init);
2451module_exit(input_exit);
2452