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