5edc41aa08f8cf56336365f75b514b2274d31dd5
[linux-2.6.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 #include <linux/init.h>
14 #include <linux/types.h>
15 #include <linux/input.h>
16 #include <linux/module.h>
17 #include <linux/slab.h>
18 #include <linux/random.h>
19 #include <linux/major.h>
20 #include <linux/proc_fs.h>
21 #include <linux/sched.h>
22 #include <linux/seq_file.h>
23 #include <linux/poll.h>
24 #include <linux/device.h>
25 #include <linux/mutex.h>
26 #include <linux/rcupdate.h>
27 #include <linux/smp_lock.h>
28 #include "input-compat.h"
29
30 MODULE_AUTHOR("Vojtech Pavlik <vojtech@suse.cz>");
31 MODULE_DESCRIPTION("Input core");
32 MODULE_LICENSE("GPL");
33
34 #define INPUT_DEVICES   256
35
36 static LIST_HEAD(input_dev_list);
37 static LIST_HEAD(input_handler_list);
38
39 /*
40  * input_mutex protects access to both input_dev_list and input_handler_list.
41  * This also causes input_[un]register_device and input_[un]register_handler
42  * be mutually exclusive which simplifies locking in drivers implementing
43  * input handlers.
44  */
45 static DEFINE_MUTEX(input_mutex);
46
47 static struct input_handler *input_table[8];
48
49 static inline int is_event_supported(unsigned int code,
50                                      unsigned long *bm, unsigned int max)
51 {
52         return code <= max && test_bit(code, bm);
53 }
54
55 static int input_defuzz_abs_event(int value, int old_val, int fuzz)
56 {
57         if (fuzz) {
58                 if (value > old_val - fuzz / 2 && value < old_val + fuzz / 2)
59                         return old_val;
60
61                 if (value > old_val - fuzz && value < old_val + fuzz)
62                         return (old_val * 3 + value) / 4;
63
64                 if (value > old_val - fuzz * 2 && value < old_val + fuzz * 2)
65                         return (old_val + value) / 2;
66         }
67
68         return value;
69 }
70
71 /*
72  * Pass event first through all filters and then, if event has not been
73  * filtered out, through all open handles. This function is called with
74  * dev->event_lock held and interrupts disabled.
75  */
76 static void input_pass_event(struct input_dev *dev,
77                              struct input_handler *src_handler,
78                              unsigned int type, unsigned int code, int value)
79 {
80         struct input_handler *handler;
81         struct input_handle *handle;
82
83         rcu_read_lock();
84
85         handle = rcu_dereference(dev->grab);
86         if (handle)
87                 handle->handler->event(handle, type, code, value);
88         else {
89                 bool filtered = false;
90
91                 list_for_each_entry_rcu(handle, &dev->h_list, d_node) {
92                         if (!handle->open)
93                                 continue;
94
95                         handler = handle->handler;
96
97                         /*
98                          * If this is the handler that injected this
99                          * particular event we want to skip it to avoid
100                          * filters firing again and again.
101                          */
102                         if (handler == src_handler)
103                                 continue;
104
105                         if (!handler->filter) {
106                                 if (filtered)
107                                         break;
108
109                                 handler->event(handle, type, code, value);
110
111                         } else if (handler->filter(handle, type, code, value))
112                                 filtered = true;
113                 }
114         }
115
116         rcu_read_unlock();
117 }
118
119 /*
120  * Generate software autorepeat event. Note that we take
121  * dev->event_lock here to avoid racing with input_event
122  * which may cause keys get "stuck".
123  */
124 static void input_repeat_key(unsigned long data)
125 {
126         struct input_dev *dev = (void *) data;
127         unsigned long flags;
128
129         spin_lock_irqsave(&dev->event_lock, flags);
130
131         if (test_bit(dev->repeat_key, dev->key) &&
132             is_event_supported(dev->repeat_key, dev->keybit, KEY_MAX)) {
133
134                 input_pass_event(dev, NULL, EV_KEY, dev->repeat_key, 2);
135
136                 if (dev->sync) {
137                         /*
138                          * Only send SYN_REPORT if we are not in a middle
139                          * of driver parsing a new hardware packet.
140                          * Otherwise assume that the driver will send
141                          * SYN_REPORT once it's done.
142                          */
143                         input_pass_event(dev, NULL, EV_SYN, SYN_REPORT, 1);
144                 }
145
146                 if (dev->rep[REP_PERIOD])
147                         mod_timer(&dev->timer, jiffies +
148                                         msecs_to_jiffies(dev->rep[REP_PERIOD]));
149         }
150
151         spin_unlock_irqrestore(&dev->event_lock, flags);
152 }
153
154 static void input_start_autorepeat(struct input_dev *dev, int code)
155 {
156         if (test_bit(EV_REP, dev->evbit) &&
157             dev->rep[REP_PERIOD] && dev->rep[REP_DELAY] &&
158             dev->timer.data) {
159                 dev->repeat_key = code;
160                 mod_timer(&dev->timer,
161                           jiffies + msecs_to_jiffies(dev->rep[REP_DELAY]));
162         }
163 }
164
165 static void input_stop_autorepeat(struct input_dev *dev)
166 {
167         del_timer(&dev->timer);
168 }
169
170 #define INPUT_IGNORE_EVENT      0
171 #define INPUT_PASS_TO_HANDLERS  1
172 #define INPUT_PASS_TO_DEVICE    2
173 #define INPUT_PASS_TO_ALL       (INPUT_PASS_TO_HANDLERS | INPUT_PASS_TO_DEVICE)
174
175 static int input_handle_abs_event(struct input_dev *dev,
176                                   struct input_handler *src_handler,
177                                   unsigned int code, int *pval)
178 {
179         bool is_mt_event;
180         int *pold;
181
182         if (code == ABS_MT_SLOT) {
183                 /*
184                  * "Stage" the event; we'll flush it later, when we
185                  * get actual touch data.
186                  */
187                 if (*pval >= 0 && *pval < dev->mtsize)
188                         dev->slot = *pval;
189
190                 return INPUT_IGNORE_EVENT;
191         }
192
193         is_mt_event = code >= ABS_MT_FIRST && code <= ABS_MT_LAST;
194
195         if (!is_mt_event) {
196                 pold = &dev->absinfo[code].value;
197         } else if (dev->mt) {
198                 struct input_mt_slot *mtslot = &dev->mt[dev->slot];
199                 pold = &mtslot->abs[code - ABS_MT_FIRST];
200         } else {
201                 /*
202                  * Bypass filtering for multi-touch events when
203                  * not employing slots.
204                  */
205                 pold = NULL;
206         }
207
208         if (pold) {
209                 *pval = input_defuzz_abs_event(*pval, *pold,
210                                                 dev->absinfo[code].fuzz);
211                 if (*pold == *pval)
212                         return INPUT_IGNORE_EVENT;
213
214                 *pold = *pval;
215         }
216
217         /* Flush pending "slot" event */
218         if (is_mt_event && dev->slot != input_abs_get_val(dev, ABS_MT_SLOT)) {
219                 input_abs_set_val(dev, ABS_MT_SLOT, dev->slot);
220                 input_pass_event(dev, src_handler,
221                                  EV_ABS, ABS_MT_SLOT, dev->slot);
222         }
223
224         return INPUT_PASS_TO_HANDLERS;
225 }
226
227 static void input_handle_event(struct input_dev *dev,
228                                struct input_handler *src_handler,
229                                unsigned int type, unsigned int code, int value)
230 {
231         int disposition = INPUT_IGNORE_EVENT;
232
233         switch (type) {
234
235         case EV_SYN:
236                 switch (code) {
237                 case SYN_CONFIG:
238                         disposition = INPUT_PASS_TO_ALL;
239                         break;
240
241                 case SYN_REPORT:
242                         if (!dev->sync) {
243                                 dev->sync = true;
244                                 disposition = INPUT_PASS_TO_HANDLERS;
245                         }
246                         break;
247                 case SYN_MT_REPORT:
248                         dev->sync = false;
249                         disposition = INPUT_PASS_TO_HANDLERS;
250                         break;
251                 }
252                 break;
253
254         case EV_KEY:
255                 if (is_event_supported(code, dev->keybit, KEY_MAX) &&
256                     !!test_bit(code, dev->key) != value) {
257
258                         if (value != 2) {
259                                 __change_bit(code, dev->key);
260                                 if (value)
261                                         input_start_autorepeat(dev, code);
262                                 else
263                                         input_stop_autorepeat(dev);
264                         }
265
266                         disposition = INPUT_PASS_TO_HANDLERS;
267                 }
268                 break;
269
270         case EV_SW:
271                 if (is_event_supported(code, dev->swbit, SW_MAX) &&
272                     !!test_bit(code, dev->sw) != value) {
273
274                         __change_bit(code, dev->sw);
275                         disposition = INPUT_PASS_TO_HANDLERS;
276                 }
277                 break;
278
279         case EV_ABS:
280                 if (is_event_supported(code, dev->absbit, ABS_MAX))
281                         disposition = input_handle_abs_event(dev, src_handler,
282                                                              code, &value);
283
284                 break;
285
286         case EV_REL:
287                 if (is_event_supported(code, dev->relbit, REL_MAX) && value)
288                         disposition = INPUT_PASS_TO_HANDLERS;
289
290                 break;
291
292         case EV_MSC:
293                 if (is_event_supported(code, dev->mscbit, MSC_MAX))
294                         disposition = INPUT_PASS_TO_ALL;
295
296                 break;
297
298         case EV_LED:
299                 if (is_event_supported(code, dev->ledbit, LED_MAX) &&
300                     !!test_bit(code, dev->led) != value) {
301
302                         __change_bit(code, dev->led);
303                         disposition = INPUT_PASS_TO_ALL;
304                 }
305                 break;
306
307         case EV_SND:
308                 if (is_event_supported(code, dev->sndbit, SND_MAX)) {
309
310                         if (!!test_bit(code, dev->snd) != !!value)
311                                 __change_bit(code, dev->snd);
312                         disposition = INPUT_PASS_TO_ALL;
313                 }
314                 break;
315
316         case EV_REP:
317                 if (code <= REP_MAX && value >= 0 && dev->rep[code] != value) {
318                         dev->rep[code] = value;
319                         disposition = INPUT_PASS_TO_ALL;
320                 }
321                 break;
322
323         case EV_FF:
324                 if (value >= 0)
325                         disposition = INPUT_PASS_TO_ALL;
326                 break;
327
328         case EV_PWR:
329                 disposition = INPUT_PASS_TO_ALL;
330                 break;
331         }
332
333         if (disposition != INPUT_IGNORE_EVENT && type != EV_SYN)
334                 dev->sync = false;
335
336         if ((disposition & INPUT_PASS_TO_DEVICE) && dev->event)
337                 dev->event(dev, type, code, value);
338
339         if (disposition & INPUT_PASS_TO_HANDLERS)
340                 input_pass_event(dev, src_handler, type, code, value);
341 }
342
343 /**
344  * input_event() - report new input event
345  * @dev: device that generated the event
346  * @type: type of the event
347  * @code: event code
348  * @value: value of the event
349  *
350  * This function should be used by drivers implementing various input
351  * devices to report input events. See also input_inject_event().
352  *
353  * NOTE: input_event() may be safely used right after input device was
354  * allocated with input_allocate_device(), even before it is registered
355  * with input_register_device(), but the event will not reach any of the
356  * input handlers. Such early invocation of input_event() may be used
357  * to 'seed' initial state of a switch or initial position of absolute
358  * axis, etc.
359  */
360 void input_event(struct input_dev *dev,
361                  unsigned int type, unsigned int code, int value)
362 {
363         unsigned long flags;
364
365         if (is_event_supported(type, dev->evbit, EV_MAX)) {
366
367                 spin_lock_irqsave(&dev->event_lock, flags);
368                 add_input_randomness(type, code, value);
369                 input_handle_event(dev, NULL, type, code, value);
370                 spin_unlock_irqrestore(&dev->event_lock, flags);
371         }
372 }
373 EXPORT_SYMBOL(input_event);
374
375 /**
376  * input_inject_event() - send input event from input handler
377  * @handle: input handle to send event through
378  * @type: type of the event
379  * @code: event code
380  * @value: value of the event
381  *
382  * Similar to input_event() but will ignore event if device is
383  * "grabbed" and handle injecting event is not the one that owns
384  * the device.
385  */
386 void input_inject_event(struct input_handle *handle,
387                         unsigned int type, unsigned int code, int value)
388 {
389         struct input_dev *dev = handle->dev;
390         struct input_handle *grab;
391         unsigned long flags;
392
393         if (is_event_supported(type, dev->evbit, EV_MAX)) {
394                 spin_lock_irqsave(&dev->event_lock, flags);
395
396                 rcu_read_lock();
397                 grab = rcu_dereference(dev->grab);
398                 if (!grab || grab == handle)
399                         input_handle_event(dev, handle->handler,
400                                            type, code, value);
401                 rcu_read_unlock();
402
403                 spin_unlock_irqrestore(&dev->event_lock, flags);
404         }
405 }
406 EXPORT_SYMBOL(input_inject_event);
407
408 /**
409  * input_alloc_absinfo - allocates array of input_absinfo structs
410  * @dev: the input device emitting absolute events
411  *
412  * If the absinfo struct the caller asked for is already allocated, this
413  * functions will not do anything.
414  */
415 void input_alloc_absinfo(struct input_dev *dev)
416 {
417         if (!dev->absinfo)
418                 dev->absinfo = kcalloc(ABS_CNT, sizeof(struct input_absinfo),
419                                         GFP_KERNEL);
420
421         WARN(!dev->absinfo, "%s(): kcalloc() failed?\n", __func__);
422 }
423 EXPORT_SYMBOL(input_alloc_absinfo);
424
425 void input_set_abs_params(struct input_dev *dev, unsigned int axis,
426                           int min, int max, int fuzz, int flat)
427 {
428         struct input_absinfo *absinfo;
429
430         input_alloc_absinfo(dev);
431         if (!dev->absinfo)
432                 return;
433
434         absinfo = &dev->absinfo[axis];
435         absinfo->minimum = min;
436         absinfo->maximum = max;
437         absinfo->fuzz = fuzz;
438         absinfo->flat = flat;
439
440         dev->absbit[BIT_WORD(axis)] |= BIT_MASK(axis);
441 }
442 EXPORT_SYMBOL(input_set_abs_params);
443
444
445 /**
446  * input_grab_device - grabs device for exclusive use
447  * @handle: input handle that wants to own the device
448  *
449  * When a device is grabbed by an input handle all events generated by
450  * the device are delivered only to this handle. Also events injected
451  * by other input handles are ignored while device is grabbed.
452  */
453 int input_grab_device(struct input_handle *handle)
454 {
455         struct input_dev *dev = handle->dev;
456         int retval;
457
458         retval = mutex_lock_interruptible(&dev->mutex);
459         if (retval)
460                 return retval;
461
462         if (dev->grab) {
463                 retval = -EBUSY;
464                 goto out;
465         }
466
467         rcu_assign_pointer(dev->grab, handle);
468         synchronize_rcu();
469
470  out:
471         mutex_unlock(&dev->mutex);
472         return retval;
473 }
474 EXPORT_SYMBOL(input_grab_device);
475
476 static void __input_release_device(struct input_handle *handle)
477 {
478         struct input_dev *dev = handle->dev;
479
480         if (dev->grab == handle) {
481                 rcu_assign_pointer(dev->grab, NULL);
482                 /* Make sure input_pass_event() notices that grab is gone */
483                 synchronize_rcu();
484
485                 list_for_each_entry(handle, &dev->h_list, d_node)
486                         if (handle->open && handle->handler->start)
487                                 handle->handler->start(handle);
488         }
489 }
490
491 /**
492  * input_release_device - release previously grabbed device
493  * @handle: input handle that owns the device
494  *
495  * Releases previously grabbed device so that other input handles can
496  * start receiving input events. Upon release all handlers attached
497  * to the device have their start() method called so they have a change
498  * to synchronize device state with the rest of the system.
499  */
500 void input_release_device(struct input_handle *handle)
501 {
502         struct input_dev *dev = handle->dev;
503
504         mutex_lock(&dev->mutex);
505         __input_release_device(handle);
506         mutex_unlock(&dev->mutex);
507 }
508 EXPORT_SYMBOL(input_release_device);
509
510 /**
511  * input_open_device - open input device
512  * @handle: handle through which device is being accessed
513  *
514  * This function should be called by input handlers when they
515  * want to start receive events from given input device.
516  */
517 int input_open_device(struct input_handle *handle)
518 {
519         struct input_dev *dev = handle->dev;
520         int retval;
521
522         retval = mutex_lock_interruptible(&dev->mutex);
523         if (retval)
524                 return retval;
525
526         if (dev->going_away) {
527                 retval = -ENODEV;
528                 goto out;
529         }
530
531         handle->open++;
532
533         if (!dev->users++ && dev->open)
534                 retval = dev->open(dev);
535
536         if (retval) {
537                 dev->users--;
538                 if (!--handle->open) {
539                         /*
540                          * Make sure we are not delivering any more events
541                          * through this handle
542                          */
543                         synchronize_rcu();
544                 }
545         }
546
547  out:
548         mutex_unlock(&dev->mutex);
549         return retval;
550 }
551 EXPORT_SYMBOL(input_open_device);
552
553 int input_flush_device(struct input_handle *handle, struct file *file)
554 {
555         struct input_dev *dev = handle->dev;
556         int retval;
557
558         retval = mutex_lock_interruptible(&dev->mutex);
559         if (retval)
560                 return retval;
561
562         if (dev->flush)
563                 retval = dev->flush(dev, file);
564
565         mutex_unlock(&dev->mutex);
566         return retval;
567 }
568 EXPORT_SYMBOL(input_flush_device);
569
570 /**
571  * input_close_device - close input device
572  * @handle: handle through which device is being accessed
573  *
574  * This function should be called by input handlers when they
575  * want to stop receive events from given input device.
576  */
577 void input_close_device(struct input_handle *handle)
578 {
579         struct input_dev *dev = handle->dev;
580
581         mutex_lock(&dev->mutex);
582
583         __input_release_device(handle);
584
585         if (!--dev->users && dev->close)
586                 dev->close(dev);
587
588         if (!--handle->open) {
589                 /*
590                  * synchronize_rcu() makes sure that input_pass_event()
591                  * completed and that no more input events are delivered
592                  * through this handle
593                  */
594                 synchronize_rcu();
595         }
596
597         mutex_unlock(&dev->mutex);
598 }
599 EXPORT_SYMBOL(input_close_device);
600
601 /*
602  * Simulate keyup events for all keys that are marked as pressed.
603  * The function must be called with dev->event_lock held.
604  */
605 static void input_dev_release_keys(struct input_dev *dev)
606 {
607         int code;
608
609         if (is_event_supported(EV_KEY, dev->evbit, EV_MAX)) {
610                 for (code = 0; code <= KEY_MAX; code++) {
611                         if (is_event_supported(code, dev->keybit, KEY_MAX) &&
612                             __test_and_clear_bit(code, dev->key)) {
613                                 input_pass_event(dev, NULL, EV_KEY, code, 0);
614                         }
615                 }
616                 input_pass_event(dev, NULL, EV_SYN, SYN_REPORT, 1);
617         }
618 }
619
620 /*
621  * Prepare device for unregistering
622  */
623 static void input_disconnect_device(struct input_dev *dev)
624 {
625         struct input_handle *handle;
626
627         /*
628          * Mark device as going away. Note that we take dev->mutex here
629          * not to protect access to dev->going_away but rather to ensure
630          * that there are no threads in the middle of input_open_device()
631          */
632         mutex_lock(&dev->mutex);
633         dev->going_away = true;
634         mutex_unlock(&dev->mutex);
635
636         spin_lock_irq(&dev->event_lock);
637
638         /*
639          * Simulate keyup events for all pressed keys so that handlers
640          * are not left with "stuck" keys. The driver may continue
641          * generate events even after we done here but they will not
642          * reach any handlers.
643          */
644         input_dev_release_keys(dev);
645
646         list_for_each_entry(handle, &dev->h_list, d_node)
647                 handle->open = 0;
648
649         spin_unlock_irq(&dev->event_lock);
650 }
651
652 /**
653  * input_scancode_to_scalar() - converts scancode in &struct input_keymap_entry
654  * @ke: keymap entry containing scancode to be converted.
655  * @scancode: pointer to the location where converted scancode should
656  *      be stored.
657  *
658  * This function is used to convert scancode stored in &struct keymap_entry
659  * into scalar form understood by legacy keymap handling methods. These
660  * methods expect scancodes to be represented as 'unsigned int'.
661  */
662 int input_scancode_to_scalar(const struct input_keymap_entry *ke,
663                              unsigned int *scancode)
664 {
665         switch (ke->len) {
666         case 1:
667                 *scancode = *((u8 *)ke->scancode);
668                 break;
669
670         case 2:
671                 *scancode = *((u16 *)ke->scancode);
672                 break;
673
674         case 4:
675                 *scancode = *((u32 *)ke->scancode);
676                 break;
677
678         default:
679                 return -EINVAL;
680         }
681
682         return 0;
683 }
684 EXPORT_SYMBOL(input_scancode_to_scalar);
685
686 /*
687  * Those routines handle the default case where no [gs]etkeycode() is
688  * defined. In this case, an array indexed by the scancode is used.
689  */
690
691 static unsigned int input_fetch_keycode(struct input_dev *dev,
692                                         unsigned int index)
693 {
694         switch (dev->keycodesize) {
695         case 1:
696                 return ((u8 *)dev->keycode)[index];
697
698         case 2:
699                 return ((u16 *)dev->keycode)[index];
700
701         default:
702                 return ((u32 *)dev->keycode)[index];
703         }
704 }
705
706 static int input_default_getkeycode(struct input_dev *dev,
707                                     struct input_keymap_entry *ke)
708 {
709         unsigned int index;
710         int error;
711
712         if (!dev->keycodesize)
713                 return -EINVAL;
714
715         if (ke->flags & INPUT_KEYMAP_BY_INDEX)
716                 index = ke->index;
717         else {
718                 error = input_scancode_to_scalar(ke, &index);
719                 if (error)
720                         return error;
721         }
722
723         if (index >= dev->keycodemax)
724                 return -EINVAL;
725
726         ke->keycode = input_fetch_keycode(dev, index);
727         ke->index = index;
728         ke->len = sizeof(index);
729         memcpy(ke->scancode, &index, sizeof(index));
730
731         return 0;
732 }
733
734 static int input_default_setkeycode(struct input_dev *dev,
735                                     const struct input_keymap_entry *ke,
736                                     unsigned int *old_keycode)
737 {
738         unsigned int index;
739         int error;
740         int i;
741
742         if (!dev->keycodesize)
743                 return -EINVAL;
744
745         if (ke->flags & INPUT_KEYMAP_BY_INDEX) {
746                 index = ke->index;
747         } else {
748                 error = input_scancode_to_scalar(ke, &index);
749                 if (error)
750                         return error;
751         }
752
753         if (index >= dev->keycodemax)
754                 return -EINVAL;
755
756         if (dev->keycodesize < sizeof(ke->keycode) &&
757                         (ke->keycode >> (dev->keycodesize * 8)))
758                 return -EINVAL;
759
760         switch (dev->keycodesize) {
761                 case 1: {
762                         u8 *k = (u8 *)dev->keycode;
763                         *old_keycode = k[index];
764                         k[index] = ke->keycode;
765                         break;
766                 }
767                 case 2: {
768                         u16 *k = (u16 *)dev->keycode;
769                         *old_keycode = k[index];
770                         k[index] = ke->keycode;
771                         break;
772                 }
773                 default: {
774                         u32 *k = (u32 *)dev->keycode;
775                         *old_keycode = k[index];
776                         k[index] = ke->keycode;
777                         break;
778                 }
779         }
780
781         __clear_bit(*old_keycode, dev->keybit);
782         __set_bit(ke->keycode, dev->keybit);
783
784         for (i = 0; i < dev->keycodemax; i++) {
785                 if (input_fetch_keycode(dev, i) == *old_keycode) {
786                         __set_bit(*old_keycode, dev->keybit);
787                         break; /* Setting the bit twice is useless, so break */
788                 }
789         }
790
791         return 0;
792 }
793
794 /**
795  * input_get_keycode - retrieve keycode currently mapped to a given scancode
796  * @dev: input device which keymap is being queried
797  * @ke: keymap entry
798  *
799  * This function should be called by anyone interested in retrieving current
800  * keymap. Presently evdev handlers use it.
801  */
802 int input_get_keycode(struct input_dev *dev, struct input_keymap_entry *ke)
803 {
804         unsigned long flags;
805         int retval;
806
807         spin_lock_irqsave(&dev->event_lock, flags);
808
809         if (dev->getkeycode) {
810                 /*
811                  * Support for legacy drivers, that don't implement the new
812                  * ioctls
813                  */
814                 u32 scancode = ke->index;
815
816                 memcpy(ke->scancode, &scancode, sizeof(scancode));
817                 ke->len = sizeof(scancode);
818                 retval = dev->getkeycode(dev, scancode, &ke->keycode);
819         } else {
820                 retval = dev->getkeycode_new(dev, ke);
821         }
822
823         spin_unlock_irqrestore(&dev->event_lock, flags);
824         return retval;
825 }
826 EXPORT_SYMBOL(input_get_keycode);
827
828 /**
829  * input_set_keycode - attribute a keycode to a given scancode
830  * @dev: input device which keymap is being updated
831  * @ke: new keymap entry
832  *
833  * This function should be called by anyone needing to update current
834  * keymap. Presently keyboard and evdev handlers use it.
835  */
836 int input_set_keycode(struct input_dev *dev,
837                       const struct input_keymap_entry *ke)
838 {
839         unsigned long flags;
840         unsigned int old_keycode;
841         int retval;
842
843         if (ke->keycode > KEY_MAX)
844                 return -EINVAL;
845
846         spin_lock_irqsave(&dev->event_lock, flags);
847
848         if (dev->setkeycode) {
849                 /*
850                  * Support for legacy drivers, that don't implement the new
851                  * ioctls
852                  */
853                 unsigned int scancode;
854
855                 retval = input_scancode_to_scalar(ke, &scancode);
856                 if (retval)
857                         goto out;
858
859                 /*
860                  * We need to know the old scancode, in order to generate a
861                  * keyup effect, if the set operation happens successfully
862                  */
863                 if (!dev->getkeycode) {
864                         retval = -EINVAL;
865                         goto out;
866                 }
867
868                 retval = dev->getkeycode(dev, scancode, &old_keycode);
869                 if (retval)
870                         goto out;
871
872                 retval = dev->setkeycode(dev, scancode, ke->keycode);
873         } else {
874                 retval = dev->setkeycode_new(dev, ke, &old_keycode);
875         }
876
877         if (retval)
878                 goto out;
879
880         /* Make sure KEY_RESERVED did not get enabled. */
881         __clear_bit(KEY_RESERVED, dev->keybit);
882
883         /*
884          * Simulate keyup event if keycode is not present
885          * in the keymap anymore
886          */
887         if (test_bit(EV_KEY, dev->evbit) &&
888             !is_event_supported(old_keycode, dev->keybit, KEY_MAX) &&
889             __test_and_clear_bit(old_keycode, dev->key)) {
890
891                 input_pass_event(dev, NULL, EV_KEY, old_keycode, 0);
892                 if (dev->sync)
893                         input_pass_event(dev, NULL, EV_SYN, SYN_REPORT, 1);
894         }
895
896  out:
897         spin_unlock_irqrestore(&dev->event_lock, flags);
898
899         return retval;
900 }
901 EXPORT_SYMBOL(input_set_keycode);
902
903 #define MATCH_BIT(bit, max) \
904                 for (i = 0; i < BITS_TO_LONGS(max); i++) \
905                         if ((id->bit[i] & dev->bit[i]) != id->bit[i]) \
906                                 break; \
907                 if (i != BITS_TO_LONGS(max)) \
908                         continue;
909
910 static const struct input_device_id *input_match_device(struct input_handler *handler,
911                                                         struct input_dev *dev)
912 {
913         const struct input_device_id *id;
914         int i;
915
916         for (id = handler->id_table; id->flags || id->driver_info; id++) {
917
918                 if (id->flags & INPUT_DEVICE_ID_MATCH_BUS)
919                         if (id->bustype != dev->id.bustype)
920                                 continue;
921
922                 if (id->flags & INPUT_DEVICE_ID_MATCH_VENDOR)
923                         if (id->vendor != dev->id.vendor)
924                                 continue;
925
926                 if (id->flags & INPUT_DEVICE_ID_MATCH_PRODUCT)
927                         if (id->product != dev->id.product)
928                                 continue;
929
930                 if (id->flags & INPUT_DEVICE_ID_MATCH_VERSION)
931                         if (id->version != dev->id.version)
932                                 continue;
933
934                 MATCH_BIT(evbit,  EV_MAX);
935                 MATCH_BIT(keybit, KEY_MAX);
936                 MATCH_BIT(relbit, REL_MAX);
937                 MATCH_BIT(absbit, ABS_MAX);
938                 MATCH_BIT(mscbit, MSC_MAX);
939                 MATCH_BIT(ledbit, LED_MAX);
940                 MATCH_BIT(sndbit, SND_MAX);
941                 MATCH_BIT(ffbit,  FF_MAX);
942                 MATCH_BIT(swbit,  SW_MAX);
943
944                 if (!handler->match || handler->match(handler, dev))
945                         return id;
946         }
947
948         return NULL;
949 }
950
951 static int input_attach_handler(struct input_dev *dev, struct input_handler *handler)
952 {
953         const struct input_device_id *id;
954         int error;
955
956         id = input_match_device(handler, dev);
957         if (!id)
958                 return -ENODEV;
959
960         error = handler->connect(handler, dev, id);
961         if (error && error != -ENODEV)
962                 printk(KERN_ERR
963                         "input: failed to attach handler %s to device %s, "
964                         "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                 printk(KERN_ERR
1824                         "input_set_capability: unknown type %u (code %u)\n",
1825                         type, code);
1826                 dump_stack();
1827                 return;
1828         }
1829
1830         __set_bit(type, dev->evbit);
1831 }
1832 EXPORT_SYMBOL(input_set_capability);
1833
1834 #define INPUT_CLEANSE_BITMASK(dev, type, bits)                          \
1835         do {                                                            \
1836                 if (!test_bit(EV_##type, dev->evbit))                   \
1837                         memset(dev->bits##bit, 0,                       \
1838                                 sizeof(dev->bits##bit));                \
1839         } while (0)
1840
1841 static void input_cleanse_bitmasks(struct input_dev *dev)
1842 {
1843         INPUT_CLEANSE_BITMASK(dev, KEY, key);
1844         INPUT_CLEANSE_BITMASK(dev, REL, rel);
1845         INPUT_CLEANSE_BITMASK(dev, ABS, abs);
1846         INPUT_CLEANSE_BITMASK(dev, MSC, msc);
1847         INPUT_CLEANSE_BITMASK(dev, LED, led);
1848         INPUT_CLEANSE_BITMASK(dev, SND, snd);
1849         INPUT_CLEANSE_BITMASK(dev, FF, ff);
1850         INPUT_CLEANSE_BITMASK(dev, SW, sw);
1851 }
1852
1853 /**
1854  * input_register_device - register device with input core
1855  * @dev: device to be registered
1856  *
1857  * This function registers device with input core. The device must be
1858  * allocated with input_allocate_device() and all it's capabilities
1859  * set up before registering.
1860  * If function fails the device must be freed with input_free_device().
1861  * Once device has been successfully registered it can be unregistered
1862  * with input_unregister_device(); input_free_device() should not be
1863  * called in this case.
1864  */
1865 int input_register_device(struct input_dev *dev)
1866 {
1867         static atomic_t input_no = ATOMIC_INIT(0);
1868         struct input_handler *handler;
1869         const char *path;
1870         int error;
1871
1872         /* Every input device generates EV_SYN/SYN_REPORT events. */
1873         __set_bit(EV_SYN, dev->evbit);
1874
1875         /* KEY_RESERVED is not supposed to be transmitted to userspace. */
1876         __clear_bit(KEY_RESERVED, dev->keybit);
1877
1878         /* Make sure that bitmasks not mentioned in dev->evbit are clean. */
1879         input_cleanse_bitmasks(dev);
1880
1881         /*
1882          * If delay and period are pre-set by the driver, then autorepeating
1883          * is handled by the driver itself and we don't do it in input.c.
1884          */
1885         init_timer(&dev->timer);
1886         if (!dev->rep[REP_DELAY] && !dev->rep[REP_PERIOD]) {
1887                 dev->timer.data = (long) dev;
1888                 dev->timer.function = input_repeat_key;
1889                 dev->rep[REP_DELAY] = 250;
1890                 dev->rep[REP_PERIOD] = 33;
1891         }
1892
1893         if (!dev->getkeycode && !dev->getkeycode_new)
1894                 dev->getkeycode_new = input_default_getkeycode;
1895
1896         if (!dev->setkeycode && !dev->setkeycode_new)
1897                 dev->setkeycode_new = input_default_setkeycode;
1898
1899         dev_set_name(&dev->dev, "input%ld",
1900                      (unsigned long) atomic_inc_return(&input_no) - 1);
1901
1902         error = device_add(&dev->dev);
1903         if (error)
1904                 return error;
1905
1906         path = kobject_get_path(&dev->dev.kobj, GFP_KERNEL);
1907         printk(KERN_INFO "input: %s as %s\n",
1908                 dev->name ? dev->name : "Unspecified device", 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                 printk(KERN_ERR "input: 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                 printk(KERN_ERR "input: 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);