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