OpenCores
URL https://opencores.org/ocsvn/test_project/test_project/trunk

Subversion Repositories test_project

[/] [test_project/] [trunk/] [linux_sd_driver/] [drivers/] [input/] [input.c] - Blame information for rev 62

Details | Compare with Previous | View Log

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

powered by: WebSVN 2.1.0

© copyright 1999-2025 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.