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 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_and_clear_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 >= 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 >= dev->keycodemax) 544 return -EINVAL; 545 546 if (!dev->keycodesize) 547 return -EINVAL; 548 549 if (dev->keycodesize < sizeof(keycode) && (keycode >> (dev->keycodesize * 8))) 550 return -EINVAL; 551 552 switch (dev->keycodesize) { 553 case 1: { 554 u8 *k = (u8 *)dev->keycode; 555 old_keycode = k[scancode]; 556 k[scancode] = keycode; 557 break; 558 } 559 case 2: { 560 u16 *k = (u16 *)dev->keycode; 561 old_keycode = k[scancode]; 562 k[scancode] = keycode; 563 break; 564 } 565 default: { 566 u32 *k = (u32 *)dev->keycode; 567 old_keycode = k[scancode]; 568 k[scancode] = keycode; 569 break; 570 } 571 } 572 573 clear_bit(old_keycode, dev->keybit); 574 set_bit(keycode, dev->keybit); 575 576 for (i = 0; i < dev->keycodemax; i++) { 577 if (input_fetch_keycode(dev, i) == old_keycode) { 578 set_bit(old_keycode, dev->keybit); 579 break; /* Setting the bit twice is useless, so break */ 580 } 581 } 582 583 return 0; 584 } 585 586 /** 587 * input_get_keycode - retrieve keycode currently mapped to a given scancode 588 * @dev: input device which keymap is being queried 589 * @scancode: scancode (or its equivalent for device in question) for which 590 * keycode is needed 591 * @keycode: result 592 * 593 * This function should be called by anyone interested in retrieving current 594 * keymap. Presently keyboard and evdev handlers use it. 595 */ 596 int input_get_keycode(struct input_dev *dev, int scancode, int *keycode) 597 { 598 if (scancode < 0) 599 return -EINVAL; 600 601 return dev->getkeycode(dev, scancode, keycode); 602 } 603 EXPORT_SYMBOL(input_get_keycode); 604 605 /** 606 * input_get_keycode - assign new keycode to a given scancode 607 * @dev: input device which keymap is being updated 608 * @scancode: scancode (or its equivalent for device in question) 609 * @keycode: new keycode to be assigned to the scancode 610 * 611 * This function should be called by anyone needing to update current 612 * keymap. Presently keyboard and evdev handlers use it. 613 */ 614 int input_set_keycode(struct input_dev *dev, int scancode, int keycode) 615 { 616 unsigned long flags; 617 int old_keycode; 618 int retval; 619 620 if (scancode < 0) 621 return -EINVAL; 622 623 if (keycode < 0 || keycode > KEY_MAX) 624 return -EINVAL; 625 626 spin_lock_irqsave(&dev->event_lock, flags); 627 628 retval = dev->getkeycode(dev, scancode, &old_keycode); 629 if (retval) 630 goto out; 631 632 retval = dev->setkeycode(dev, scancode, keycode); 633 if (retval) 634 goto out; 635 636 /* 637 * Simulate keyup event if keycode is not present 638 * in the keymap anymore 639 */ 640 if (test_bit(EV_KEY, dev->evbit) && 641 !is_event_supported(old_keycode, dev->keybit, KEY_MAX) && 642 __test_and_clear_bit(old_keycode, dev->key)) { 643 644 input_pass_event(dev, EV_KEY, old_keycode, 0); 645 if (dev->sync) 646 input_pass_event(dev, EV_SYN, SYN_REPORT, 1); 647 } 648 649 out: 650 spin_unlock_irqrestore(&dev->event_lock, flags); 651 652 return retval; 653 } 654 EXPORT_SYMBOL(input_set_keycode); 655 656 #define MATCH_BIT(bit, max) \ 657 for (i = 0; i < BITS_TO_LONGS(max); i++) \ 658 if ((id->bit[i] & dev->bit[i]) != id->bit[i]) \ 659 break; \ 660 if (i != BITS_TO_LONGS(max)) \ 661 continue; 662 663 static const struct input_device_id *input_match_device(const struct input_device_id *id, 664 struct input_dev *dev) 665 { 666 int i; 667 668 for (; id->flags || id->driver_info; id++) { 669 670 if (id->flags & INPUT_DEVICE_ID_MATCH_BUS) 671 if (id->bustype != dev->id.bustype) 672 continue; 673 674 if (id->flags & INPUT_DEVICE_ID_MATCH_VENDOR) 675 if (id->vendor != dev->id.vendor) 676 continue; 677 678 if (id->flags & INPUT_DEVICE_ID_MATCH_PRODUCT) 679 if (id->product != dev->id.product) 680 continue; 681 682 if (id->flags & INPUT_DEVICE_ID_MATCH_VERSION) 683 if (id->version != dev->id.version) 684 continue; 685 686 MATCH_BIT(evbit, EV_MAX); 687 MATCH_BIT(keybit, KEY_MAX); 688 MATCH_BIT(relbit, REL_MAX); 689 MATCH_BIT(absbit, ABS_MAX); 690 MATCH_BIT(mscbit, MSC_MAX); 691 MATCH_BIT(ledbit, LED_MAX); 692 MATCH_BIT(sndbit, SND_MAX); 693 MATCH_BIT(ffbit, FF_MAX); 694 MATCH_BIT(swbit, SW_MAX); 695 696 return id; 697 } 698 699 return NULL; 700 } 701 702 static int input_attach_handler(struct input_dev *dev, struct input_handler *handler) 703 { 704 const struct input_device_id *id; 705 int error; 706 707 if (handler->blacklist && input_match_device(handler->blacklist, dev)) 708 return -ENODEV; 709 710 id = input_match_device(handler->id_table, dev); 711 if (!id) 712 return -ENODEV; 713 714 error = handler->connect(handler, dev, id); 715 if (error && error != -ENODEV) 716 printk(KERN_ERR 717 "input: failed to attach handler %s to device %s, " 718 "error: %d\n", 719 handler->name, kobject_name(&dev->dev.kobj), error); 720 721 return error; 722 } 723 724 725 #ifdef CONFIG_PROC_FS 726 727 static struct proc_dir_entry *proc_bus_input_dir; 728 static DECLARE_WAIT_QUEUE_HEAD(input_devices_poll_wait); 729 static int input_devices_state; 730 731 static inline void input_wakeup_procfs_readers(void) 732 { 733 input_devices_state++; 734 wake_up(&input_devices_poll_wait); 735 } 736 737 static unsigned int input_proc_devices_poll(struct file *file, poll_table *wait) 738 { 739 int state = input_devices_state; 740 741 poll_wait(file, &input_devices_poll_wait, wait); 742 if (state != input_devices_state) 743 return POLLIN | POLLRDNORM; 744 745 return 0; 746 } 747 748 static void *input_devices_seq_start(struct seq_file *seq, loff_t *pos) 749 { 750 if (mutex_lock_interruptible(&input_mutex)) 751 return NULL; 752 753 return seq_list_start(&input_dev_list, *pos); 754 } 755 756 static void *input_devices_seq_next(struct seq_file *seq, void *v, loff_t *pos) 757 { 758 return seq_list_next(v, &input_dev_list, pos); 759 } 760 761 static void input_devices_seq_stop(struct seq_file *seq, void *v) 762 { 763 mutex_unlock(&input_mutex); 764 } 765 766 static void input_seq_print_bitmap(struct seq_file *seq, const char *name, 767 unsigned long *bitmap, int max) 768 { 769 int i; 770 771 for (i = BITS_TO_LONGS(max) - 1; i > 0; i--) 772 if (bitmap[i]) 773 break; 774 775 seq_printf(seq, "B: %s=", name); 776 for (; i >= 0; i--) 777 seq_printf(seq, "%lx%s", bitmap[i], i > 0 ? " " : ""); 778 seq_putc(seq, '\n'); 779 } 780 781 static int input_devices_seq_show(struct seq_file *seq, void *v) 782 { 783 struct input_dev *dev = container_of(v, struct input_dev, node); 784 const char *path = kobject_get_path(&dev->dev.kobj, GFP_KERNEL); 785 struct input_handle *handle; 786 787 seq_printf(seq, "I: Bus=%04x Vendor=%04x Product=%04x Version=%04x\n", 788 dev->id.bustype, dev->id.vendor, dev->id.product, dev->id.version); 789 790 seq_printf(seq, "N: Name=\"%s\"\n", dev->name ? dev->name : ""); 791 seq_printf(seq, "P: Phys=%s\n", dev->phys ? dev->phys : ""); 792 seq_printf(seq, "S: Sysfs=%s\n", path ? path : ""); 793 seq_printf(seq, "U: Uniq=%s\n", dev->uniq ? dev->uniq : ""); 794 seq_printf(seq, "H: Handlers="); 795 796 list_for_each_entry(handle, &dev->h_list, d_node) 797 seq_printf(seq, "%s ", handle->name); 798 seq_putc(seq, '\n'); 799 800 input_seq_print_bitmap(seq, "EV", dev->evbit, EV_MAX); 801 if (test_bit(EV_KEY, dev->evbit)) 802 input_seq_print_bitmap(seq, "KEY", dev->keybit, KEY_MAX); 803 if (test_bit(EV_REL, dev->evbit)) 804 input_seq_print_bitmap(seq, "REL", dev->relbit, REL_MAX); 805 if (test_bit(EV_ABS, dev->evbit)) 806 input_seq_print_bitmap(seq, "ABS", dev->absbit, ABS_MAX); 807 if (test_bit(EV_MSC, dev->evbit)) 808 input_seq_print_bitmap(seq, "MSC", dev->mscbit, MSC_MAX); 809 if (test_bit(EV_LED, dev->evbit)) 810 input_seq_print_bitmap(seq, "LED", dev->ledbit, LED_MAX); 811 if (test_bit(EV_SND, dev->evbit)) 812 input_seq_print_bitmap(seq, "SND", dev->sndbit, SND_MAX); 813 if (test_bit(EV_FF, dev->evbit)) 814 input_seq_print_bitmap(seq, "FF", dev->ffbit, FF_MAX); 815 if (test_bit(EV_SW, dev->evbit)) 816 input_seq_print_bitmap(seq, "SW", dev->swbit, SW_MAX); 817 818 seq_putc(seq, '\n'); 819 820 kfree(path); 821 return 0; 822 } 823 824 static const struct seq_operations input_devices_seq_ops = { 825 .start = input_devices_seq_start, 826 .next = input_devices_seq_next, 827 .stop = input_devices_seq_stop, 828 .show = input_devices_seq_show, 829 }; 830 831 static int input_proc_devices_open(struct inode *inode, struct file *file) 832 { 833 return seq_open(file, &input_devices_seq_ops); 834 } 835 836 static const struct file_operations input_devices_fileops = { 837 .owner = THIS_MODULE, 838 .open = input_proc_devices_open, 839 .poll = input_proc_devices_poll, 840 .read = seq_read, 841 .llseek = seq_lseek, 842 .release = seq_release, 843 }; 844 845 static void *input_handlers_seq_start(struct seq_file *seq, loff_t *pos) 846 { 847 if (mutex_lock_interruptible(&input_mutex)) 848 return NULL; 849 850 seq->private = (void *)(unsigned long)*pos; 851 return seq_list_start(&input_handler_list, *pos); 852 } 853 854 static void *input_handlers_seq_next(struct seq_file *seq, void *v, loff_t *pos) 855 { 856 seq->private = (void *)(unsigned long)(*pos + 1); 857 return seq_list_next(v, &input_handler_list, pos); 858 } 859 860 static void input_handlers_seq_stop(struct seq_file *seq, void *v) 861 { 862 mutex_unlock(&input_mutex); 863 } 864 865 static int input_handlers_seq_show(struct seq_file *seq, void *v) 866 { 867 struct input_handler *handler = container_of(v, struct input_handler, node); 868 869 seq_printf(seq, "N: Number=%ld Name=%s", 870 (unsigned long)seq->private, handler->name); 871 if (handler->fops) 872 seq_printf(seq, " Minor=%d", handler->minor); 873 seq_putc(seq, '\n'); 874 875 return 0; 876 } 877 static const struct seq_operations input_handlers_seq_ops = { 878 .start = input_handlers_seq_start, 879 .next = input_handlers_seq_next, 880 .stop = input_handlers_seq_stop, 881 .show = input_handlers_seq_show, 882 }; 883 884 static int input_proc_handlers_open(struct inode *inode, struct file *file) 885 { 886 return seq_open(file, &input_handlers_seq_ops); 887 } 888 889 static const struct file_operations input_handlers_fileops = { 890 .owner = THIS_MODULE, 891 .open = input_proc_handlers_open, 892 .read = seq_read, 893 .llseek = seq_lseek, 894 .release = seq_release, 895 }; 896 897 static int __init input_proc_init(void) 898 { 899 struct proc_dir_entry *entry; 900 901 proc_bus_input_dir = proc_mkdir("input", proc_bus); 902 if (!proc_bus_input_dir) 903 return -ENOMEM; 904 905 proc_bus_input_dir->owner = THIS_MODULE; 906 907 entry = create_proc_entry("devices", 0, proc_bus_input_dir); 908 if (!entry) 909 goto fail1; 910 911 entry->owner = THIS_MODULE; 912 entry->proc_fops = &input_devices_fileops; 913 914 entry = create_proc_entry("handlers", 0, proc_bus_input_dir); 915 if (!entry) 916 goto fail2; 917 918 entry->owner = THIS_MODULE; 919 entry->proc_fops = &input_handlers_fileops; 920 921 return 0; 922 923 fail2: remove_proc_entry("devices", proc_bus_input_dir); 924 fail1: remove_proc_entry("input", proc_bus); 925 return -ENOMEM; 926 } 927 928 static void input_proc_exit(void) 929 { 930 remove_proc_entry("devices", proc_bus_input_dir); 931 remove_proc_entry("handlers", proc_bus_input_dir); 932 remove_proc_entry("input", proc_bus); 933 } 934 935 #else /* !CONFIG_PROC_FS */ 936 static inline void input_wakeup_procfs_readers(void) { } 937 static inline int input_proc_init(void) { return 0; } 938 static inline void input_proc_exit(void) { } 939 #endif 940 941 #define INPUT_DEV_STRING_ATTR_SHOW(name) \ 942 static ssize_t input_dev_show_##name(struct device *dev, \ 943 struct device_attribute *attr, \ 944 char *buf) \ 945 { \ 946 struct input_dev *input_dev = to_input_dev(dev); \ 947 \ 948 return scnprintf(buf, PAGE_SIZE, "%s\n", \ 949 input_dev->name ? input_dev->name : ""); \ 950 } \ 951 static DEVICE_ATTR(name, S_IRUGO, input_dev_show_##name, NULL) 952 953 INPUT_DEV_STRING_ATTR_SHOW(name); 954 INPUT_DEV_STRING_ATTR_SHOW(phys); 955 INPUT_DEV_STRING_ATTR_SHOW(uniq); 956 957 static int input_print_modalias_bits(char *buf, int size, 958 char name, unsigned long *bm, 959 unsigned int min_bit, unsigned int max_bit) 960 { 961 int len = 0, i; 962 963 len += snprintf(buf, max(size, 0), "%c", name); 964 for (i = min_bit; i < max_bit; i++) 965 if (bm[BIT_WORD(i)] & BIT_MASK(i)) 966 len += snprintf(buf + len, max(size - len, 0), "%X,", i); 967 return len; 968 } 969 970 static int input_print_modalias(char *buf, int size, struct input_dev *id, 971 int add_cr) 972 { 973 int len; 974 975 len = snprintf(buf, max(size, 0), 976 "input:b%04Xv%04Xp%04Xe%04X-", 977 id->id.bustype, id->id.vendor, 978 id->id.product, id->id.version); 979 980 len += input_print_modalias_bits(buf + len, size - len, 981 'e', id->evbit, 0, EV_MAX); 982 len += input_print_modalias_bits(buf + len, size - len, 983 'k', id->keybit, KEY_MIN_INTERESTING, KEY_MAX); 984 len += input_print_modalias_bits(buf + len, size - len, 985 'r', id->relbit, 0, REL_MAX); 986 len += input_print_modalias_bits(buf + len, size - len, 987 'a', id->absbit, 0, ABS_MAX); 988 len += input_print_modalias_bits(buf + len, size - len, 989 'm', id->mscbit, 0, MSC_MAX); 990 len += input_print_modalias_bits(buf + len, size - len, 991 'l', id->ledbit, 0, LED_MAX); 992 len += input_print_modalias_bits(buf + len, size - len, 993 's', id->sndbit, 0, SND_MAX); 994 len += input_print_modalias_bits(buf + len, size - len, 995 'f', id->ffbit, 0, FF_MAX); 996 len += input_print_modalias_bits(buf + len, size - len, 997 'w', id->swbit, 0, SW_MAX); 998 999 if (add_cr) 1000 len += snprintf(buf + len, max(size - len, 0), "\n"); 1001 1002 return len; 1003 } 1004 1005 static ssize_t input_dev_show_modalias(struct device *dev, 1006 struct device_attribute *attr, 1007 char *buf) 1008 { 1009 struct input_dev *id = to_input_dev(dev); 1010 ssize_t len; 1011 1012 len = input_print_modalias(buf, PAGE_SIZE, id, 1); 1013 1014 return min_t(int, len, PAGE_SIZE); 1015 } 1016 static DEVICE_ATTR(modalias, S_IRUGO, input_dev_show_modalias, NULL); 1017 1018 static struct attribute *input_dev_attrs[] = { 1019 &dev_attr_name.attr, 1020 &dev_attr_phys.attr, 1021 &dev_attr_uniq.attr, 1022 &dev_attr_modalias.attr, 1023 NULL 1024 }; 1025 1026 static struct attribute_group input_dev_attr_group = { 1027 .attrs = input_dev_attrs, 1028 }; 1029 1030 #define INPUT_DEV_ID_ATTR(name) \ 1031 static ssize_t input_dev_show_id_##name(struct device *dev, \ 1032 struct device_attribute *attr, \ 1033 char *buf) \ 1034 { \ 1035 struct input_dev *input_dev = to_input_dev(dev); \ 1036 return scnprintf(buf, PAGE_SIZE, "%04x\n", input_dev->id.name); \ 1037 } \ 1038 static DEVICE_ATTR(name, S_IRUGO, input_dev_show_id_##name, NULL) 1039 1040 INPUT_DEV_ID_ATTR(bustype); 1041 INPUT_DEV_ID_ATTR(vendor); 1042 INPUT_DEV_ID_ATTR(product); 1043 INPUT_DEV_ID_ATTR(version); 1044 1045 static struct attribute *input_dev_id_attrs[] = { 1046 &dev_attr_bustype.attr, 1047 &dev_attr_vendor.attr, 1048 &dev_attr_product.attr, 1049 &dev_attr_version.attr, 1050 NULL 1051 }; 1052 1053 static struct attribute_group input_dev_id_attr_group = { 1054 .name = "id", 1055 .attrs = input_dev_id_attrs, 1056 }; 1057 1058 static int input_print_bitmap(char *buf, int buf_size, unsigned long *bitmap, 1059 int max, int add_cr) 1060 { 1061 int i; 1062 int len = 0; 1063 1064 for (i = BITS_TO_LONGS(max) - 1; i > 0; i--) 1065 if (bitmap[i]) 1066 break; 1067 1068 for (; i >= 0; i--) 1069 len += snprintf(buf + len, max(buf_size - len, 0), 1070 "%lx%s", bitmap[i], i > 0 ? " " : ""); 1071 1072 if (add_cr) 1073 len += snprintf(buf + len, max(buf_size - len, 0), "\n"); 1074 1075 return len; 1076 } 1077 1078 #define INPUT_DEV_CAP_ATTR(ev, bm) \ 1079 static ssize_t input_dev_show_cap_##bm(struct device *dev, \ 1080 struct device_attribute *attr, \ 1081 char *buf) \ 1082 { \ 1083 struct input_dev *input_dev = to_input_dev(dev); \ 1084 int len = input_print_bitmap(buf, PAGE_SIZE, \ 1085 input_dev->bm##bit, ev##_MAX, 1); \ 1086 return min_t(int, len, PAGE_SIZE); \ 1087 } \ 1088 static DEVICE_ATTR(bm, S_IRUGO, input_dev_show_cap_##bm, NULL) 1089 1090 INPUT_DEV_CAP_ATTR(EV, ev); 1091 INPUT_DEV_CAP_ATTR(KEY, key); 1092 INPUT_DEV_CAP_ATTR(REL, rel); 1093 INPUT_DEV_CAP_ATTR(ABS, abs); 1094 INPUT_DEV_CAP_ATTR(MSC, msc); 1095 INPUT_DEV_CAP_ATTR(LED, led); 1096 INPUT_DEV_CAP_ATTR(SND, snd); 1097 INPUT_DEV_CAP_ATTR(FF, ff); 1098 INPUT_DEV_CAP_ATTR(SW, sw); 1099 1100 static struct attribute *input_dev_caps_attrs[] = { 1101 &dev_attr_ev.attr, 1102 &dev_attr_key.attr, 1103 &dev_attr_rel.attr, 1104 &dev_attr_abs.attr, 1105 &dev_attr_msc.attr, 1106 &dev_attr_led.attr, 1107 &dev_attr_snd.attr, 1108 &dev_attr_ff.attr, 1109 &dev_attr_sw.attr, 1110 NULL 1111 }; 1112 1113 static struct attribute_group input_dev_caps_attr_group = { 1114 .name = "capabilities", 1115 .attrs = input_dev_caps_attrs, 1116 }; 1117 1118 static struct attribute_group *input_dev_attr_groups[] = { 1119 &input_dev_attr_group, 1120 &input_dev_id_attr_group, 1121 &input_dev_caps_attr_group, 1122 NULL 1123 }; 1124 1125 static void input_dev_release(struct device *device) 1126 { 1127 struct input_dev *dev = to_input_dev(device); 1128 1129 input_ff_destroy(dev); 1130 kfree(dev); 1131 1132 module_put(THIS_MODULE); 1133 } 1134 1135 /* 1136 * Input uevent interface - loading event handlers based on 1137 * device bitfields. 1138 */ 1139 static int input_add_uevent_bm_var(struct kobj_uevent_env *env, 1140 const char *name, unsigned long *bitmap, int max) 1141 { 1142 int len; 1143 1144 if (add_uevent_var(env, "%s=", name)) 1145 return -ENOMEM; 1146 1147 len = input_print_bitmap(&env->buf[env->buflen - 1], 1148 sizeof(env->buf) - env->buflen, 1149 bitmap, max, 0); 1150 if (len >= (sizeof(env->buf) - env->buflen)) 1151 return -ENOMEM; 1152 1153 env->buflen += len; 1154 return 0; 1155 } 1156 1157 static int input_add_uevent_modalias_var(struct kobj_uevent_env *env, 1158 struct input_dev *dev) 1159 { 1160 int len; 1161 1162 if (add_uevent_var(env, "MODALIAS=")) 1163 return -ENOMEM; 1164 1165 len = input_print_modalias(&env->buf[env->buflen - 1], 1166 sizeof(env->buf) - env->buflen, 1167 dev, 0); 1168 if (len >= (sizeof(env->buf) - env->buflen)) 1169 return -ENOMEM; 1170 1171 env->buflen += len; 1172 return 0; 1173 } 1174 1175 #define INPUT_ADD_HOTPLUG_VAR(fmt, val...) \ 1176 do { \ 1177 int err = add_uevent_var(env, fmt, val); \ 1178 if (err) \ 1179 return err; \ 1180 } while (0) 1181 1182 #define INPUT_ADD_HOTPLUG_BM_VAR(name, bm, max) \ 1183 do { \ 1184 int err = input_add_uevent_bm_var(env, name, bm, max); \ 1185 if (err) \ 1186 return err; \ 1187 } while (0) 1188 1189 #define INPUT_ADD_HOTPLUG_MODALIAS_VAR(dev) \ 1190 do { \ 1191 int err = input_add_uevent_modalias_var(env, dev); \ 1192 if (err) \ 1193 return err; \ 1194 } while (0) 1195 1196 static int input_dev_uevent(struct device *device, struct kobj_uevent_env *env) 1197 { 1198 struct input_dev *dev = to_input_dev(device); 1199 1200 INPUT_ADD_HOTPLUG_VAR("PRODUCT=%x/%x/%x/%x", 1201 dev->id.bustype, dev->id.vendor, 1202 dev->id.product, dev->id.version); 1203 if (dev->name) 1204 INPUT_ADD_HOTPLUG_VAR("NAME=\"%s\"", dev->name); 1205 if (dev->phys) 1206 INPUT_ADD_HOTPLUG_VAR("PHYS=\"%s\"", dev->phys); 1207 if (dev->uniq) 1208 INPUT_ADD_HOTPLUG_VAR("UNIQ=\"%s\"", dev->uniq); 1209 1210 INPUT_ADD_HOTPLUG_BM_VAR("EV=", dev->evbit, EV_MAX); 1211 if (test_bit(EV_KEY, dev->evbit)) 1212 INPUT_ADD_HOTPLUG_BM_VAR("KEY=", dev->keybit, KEY_MAX); 1213 if (test_bit(EV_REL, dev->evbit)) 1214 INPUT_ADD_HOTPLUG_BM_VAR("REL=", dev->relbit, REL_MAX); 1215 if (test_bit(EV_ABS, dev->evbit)) 1216 INPUT_ADD_HOTPLUG_BM_VAR("ABS=", dev->absbit, ABS_MAX); 1217 if (test_bit(EV_MSC, dev->evbit)) 1218 INPUT_ADD_HOTPLUG_BM_VAR("MSC=", dev->mscbit, MSC_MAX); 1219 if (test_bit(EV_LED, dev->evbit)) 1220 INPUT_ADD_HOTPLUG_BM_VAR("LED=", dev->ledbit, LED_MAX); 1221 if (test_bit(EV_SND, dev->evbit)) 1222 INPUT_ADD_HOTPLUG_BM_VAR("SND=", dev->sndbit, SND_MAX); 1223 if (test_bit(EV_FF, dev->evbit)) 1224 INPUT_ADD_HOTPLUG_BM_VAR("FF=", dev->ffbit, FF_MAX); 1225 if (test_bit(EV_SW, dev->evbit)) 1226 INPUT_ADD_HOTPLUG_BM_VAR("SW=", dev->swbit, SW_MAX); 1227 1228 INPUT_ADD_HOTPLUG_MODALIAS_VAR(dev); 1229 1230 return 0; 1231 } 1232 1233 static struct device_type input_dev_type = { 1234 .groups = input_dev_attr_groups, 1235 .release = input_dev_release, 1236 .uevent = input_dev_uevent, 1237 }; 1238 1239 struct class input_class = { 1240 .name = "input", 1241 }; 1242 EXPORT_SYMBOL_GPL(input_class); 1243 1244 /** 1245 * input_allocate_device - allocate memory for new input device 1246 * 1247 * Returns prepared struct input_dev or NULL. 1248 * 1249 * NOTE: Use input_free_device() to free devices that have not been 1250 * registered; input_unregister_device() should be used for already 1251 * registered devices. 1252 */ 1253 struct input_dev *input_allocate_device(void) 1254 { 1255 struct input_dev *dev; 1256 1257 dev = kzalloc(sizeof(struct input_dev), GFP_KERNEL); 1258 if (dev) { 1259 dev->dev.type = &input_dev_type; 1260 dev->dev.class = &input_class; 1261 device_initialize(&dev->dev); 1262 mutex_init(&dev->mutex); 1263 spin_lock_init(&dev->event_lock); 1264 INIT_LIST_HEAD(&dev->h_list); 1265 INIT_LIST_HEAD(&dev->node); 1266 1267 __module_get(THIS_MODULE); 1268 } 1269 1270 return dev; 1271 } 1272 EXPORT_SYMBOL(input_allocate_device); 1273 1274 /** 1275 * input_free_device - free memory occupied by input_dev structure 1276 * @dev: input device to free 1277 * 1278 * This function should only be used if input_register_device() 1279 * was not called yet or if it failed. Once device was registered 1280 * use input_unregister_device() and memory will be freed once last 1281 * reference to the device is dropped. 1282 * 1283 * Device should be allocated by input_allocate_device(). 1284 * 1285 * NOTE: If there are references to the input device then memory 1286 * will not be freed until last reference is dropped. 1287 */ 1288 void input_free_device(struct input_dev *dev) 1289 { 1290 if (dev) 1291 input_put_device(dev); 1292 } 1293 EXPORT_SYMBOL(input_free_device); 1294 1295 /** 1296 * input_set_capability - mark device as capable of a certain event 1297 * @dev: device that is capable of emitting or accepting event 1298 * @type: type of the event (EV_KEY, EV_REL, etc...) 1299 * @code: event code 1300 * 1301 * In addition to setting up corresponding bit in appropriate capability 1302 * bitmap the function also adjusts dev->evbit. 1303 */ 1304 void input_set_capability(struct input_dev *dev, unsigned int type, unsigned int code) 1305 { 1306 switch (type) { 1307 case EV_KEY: 1308 __set_bit(code, dev->keybit); 1309 break; 1310 1311 case EV_REL: 1312 __set_bit(code, dev->relbit); 1313 break; 1314 1315 case EV_ABS: 1316 __set_bit(code, dev->absbit); 1317 break; 1318 1319 case EV_MSC: 1320 __set_bit(code, dev->mscbit); 1321 break; 1322 1323 case EV_SW: 1324 __set_bit(code, dev->swbit); 1325 break; 1326 1327 case EV_LED: 1328 __set_bit(code, dev->ledbit); 1329 break; 1330 1331 case EV_SND: 1332 __set_bit(code, dev->sndbit); 1333 break; 1334 1335 case EV_FF: 1336 __set_bit(code, dev->ffbit); 1337 break; 1338 1339 case EV_PWR: 1340 /* do nothing */ 1341 break; 1342 1343 default: 1344 printk(KERN_ERR 1345 "input_set_capability: unknown type %u (code %u)\n", 1346 type, code); 1347 dump_stack(); 1348 return; 1349 } 1350 1351 __set_bit(type, dev->evbit); 1352 } 1353 EXPORT_SYMBOL(input_set_capability); 1354 1355 /** 1356 * input_register_device - register device with input core 1357 * @dev: device to be registered 1358 * 1359 * This function registers device with input core. The device must be 1360 * allocated with input_allocate_device() and all it's capabilities 1361 * set up before registering. 1362 * If function fails the device must be freed with input_free_device(). 1363 * Once device has been successfully registered it can be unregistered 1364 * with input_unregister_device(); input_free_device() should not be 1365 * called in this case. 1366 */ 1367 int input_register_device(struct input_dev *dev) 1368 { 1369 static atomic_t input_no = ATOMIC_INIT(0); 1370 struct input_handler *handler; 1371 const char *path; 1372 int error; 1373 1374 __set_bit(EV_SYN, dev->evbit); 1375 1376 /* 1377 * If delay and period are pre-set by the driver, then autorepeating 1378 * is handled by the driver itself and we don't do it in input.c. 1379 */ 1380 1381 init_timer(&dev->timer); 1382 if (!dev->rep[REP_DELAY] && !dev->rep[REP_PERIOD]) { 1383 dev->timer.data = (long) dev; 1384 dev->timer.function = input_repeat_key; 1385 dev->rep[REP_DELAY] = 250; 1386 dev->rep[REP_PERIOD] = 33; 1387 } 1388 1389 if (!dev->getkeycode) 1390 dev->getkeycode = input_default_getkeycode; 1391 1392 if (!dev->setkeycode) 1393 dev->setkeycode = input_default_setkeycode; 1394 1395 snprintf(dev->dev.bus_id, sizeof(dev->dev.bus_id), 1396 "input%ld", (unsigned long) atomic_inc_return(&input_no) - 1); 1397 1398 error = device_add(&dev->dev); 1399 if (error) 1400 return error; 1401 1402 path = kobject_get_path(&dev->dev.kobj, GFP_KERNEL); 1403 printk(KERN_INFO "input: %s as %s\n", 1404 dev->name ? dev->name : "Unspecified device", path ? path : "N/A"); 1405 kfree(path); 1406 1407 error = mutex_lock_interruptible(&input_mutex); 1408 if (error) { 1409 device_del(&dev->dev); 1410 return error; 1411 } 1412 1413 list_add_tail(&dev->node, &input_dev_list); 1414 1415 list_for_each_entry(handler, &input_handler_list, node) 1416 input_attach_handler(dev, handler); 1417 1418 input_wakeup_procfs_readers(); 1419 1420 mutex_unlock(&input_mutex); 1421 1422 return 0; 1423 } 1424 EXPORT_SYMBOL(input_register_device); 1425 1426 /** 1427 * input_unregister_device - unregister previously registered device 1428 * @dev: device to be unregistered 1429 * 1430 * This function unregisters an input device. Once device is unregistered 1431 * the caller should not try to access it as it may get freed at any moment. 1432 */ 1433 void input_unregister_device(struct input_dev *dev) 1434 { 1435 struct input_handle *handle, *next; 1436 1437 input_disconnect_device(dev); 1438 1439 mutex_lock(&input_mutex); 1440 1441 list_for_each_entry_safe(handle, next, &dev->h_list, d_node) 1442 handle->handler->disconnect(handle); 1443 WARN_ON(!list_empty(&dev->h_list)); 1444 1445 del_timer_sync(&dev->timer); 1446 list_del_init(&dev->node); 1447 1448 input_wakeup_procfs_readers(); 1449 1450 mutex_unlock(&input_mutex); 1451 1452 device_unregister(&dev->dev); 1453 } 1454 EXPORT_SYMBOL(input_unregister_device); 1455 1456 /** 1457 * input_register_handler - register a new input handler 1458 * @handler: handler to be registered 1459 * 1460 * This function registers a new input handler (interface) for input 1461 * devices in the system and attaches it to all input devices that 1462 * are compatible with the handler. 1463 */ 1464 int input_register_handler(struct input_handler *handler) 1465 { 1466 struct input_dev *dev; 1467 int retval; 1468 1469 retval = mutex_lock_interruptible(&input_mutex); 1470 if (retval) 1471 return retval; 1472 1473 INIT_LIST_HEAD(&handler->h_list); 1474 1475 if (handler->fops != NULL) { 1476 if (input_table[handler->minor >> 5]) { 1477 retval = -EBUSY; 1478 goto out; 1479 } 1480 input_table[handler->minor >> 5] = handler; 1481 } 1482 1483 list_add_tail(&handler->node, &input_handler_list); 1484 1485 list_for_each_entry(dev, &input_dev_list, node) 1486 input_attach_handler(dev, handler); 1487 1488 input_wakeup_procfs_readers(); 1489 1490 out: 1491 mutex_unlock(&input_mutex); 1492 return retval; 1493 } 1494 EXPORT_SYMBOL(input_register_handler); 1495 1496 /** 1497 * input_unregister_handler - unregisters an input handler 1498 * @handler: handler to be unregistered 1499 * 1500 * This function disconnects a handler from its input devices and 1501 * removes it from lists of known handlers. 1502 */ 1503 void input_unregister_handler(struct input_handler *handler) 1504 { 1505 struct input_handle *handle, *next; 1506 1507 mutex_lock(&input_mutex); 1508 1509 list_for_each_entry_safe(handle, next, &handler->h_list, h_node) 1510 handler->disconnect(handle); 1511 WARN_ON(!list_empty(&handler->h_list)); 1512 1513 list_del_init(&handler->node); 1514 1515 if (handler->fops != NULL) 1516 input_table[handler->minor >> 5] = NULL; 1517 1518 input_wakeup_procfs_readers(); 1519 1520 mutex_unlock(&input_mutex); 1521 } 1522 EXPORT_SYMBOL(input_unregister_handler); 1523 1524 /** 1525 * input_register_handle - register a new input handle 1526 * @handle: handle to register 1527 * 1528 * This function puts a new input handle onto device's 1529 * and handler's lists so that events can flow through 1530 * it once it is opened using input_open_device(). 1531 * 1532 * This function is supposed to be called from handler's 1533 * connect() method. 1534 */ 1535 int input_register_handle(struct input_handle *handle) 1536 { 1537 struct input_handler *handler = handle->handler; 1538 struct input_dev *dev = handle->dev; 1539 int error; 1540 1541 /* 1542 * We take dev->mutex here to prevent race with 1543 * input_release_device(). 1544 */ 1545 error = mutex_lock_interruptible(&dev->mutex); 1546 if (error) 1547 return error; 1548 list_add_tail_rcu(&handle->d_node, &dev->h_list); 1549 mutex_unlock(&dev->mutex); 1550 synchronize_rcu(); 1551 1552 /* 1553 * Since we are supposed to be called from ->connect() 1554 * which is mutually exclusive with ->disconnect() 1555 * we can't be racing with input_unregister_handle() 1556 * and so separate lock is not needed here. 1557 */ 1558 list_add_tail(&handle->h_node, &handler->h_list); 1559 1560 if (handler->start) 1561 handler->start(handle); 1562 1563 return 0; 1564 } 1565 EXPORT_SYMBOL(input_register_handle); 1566 1567 /** 1568 * input_unregister_handle - unregister an input handle 1569 * @handle: handle to unregister 1570 * 1571 * This function removes input handle from device's 1572 * and handler's lists. 1573 * 1574 * This function is supposed to be called from handler's 1575 * disconnect() method. 1576 */ 1577 void input_unregister_handle(struct input_handle *handle) 1578 { 1579 struct input_dev *dev = handle->dev; 1580 1581 list_del_init(&handle->h_node); 1582 1583 /* 1584 * Take dev->mutex to prevent race with input_release_device(). 1585 */ 1586 mutex_lock(&dev->mutex); 1587 list_del_rcu(&handle->d_node); 1588 mutex_unlock(&dev->mutex); 1589 synchronize_rcu(); 1590 } 1591 EXPORT_SYMBOL(input_unregister_handle); 1592 1593 static int input_open_file(struct inode *inode, struct file *file) 1594 { 1595 struct input_handler *handler = input_table[iminor(inode) >> 5]; 1596 const struct file_operations *old_fops, *new_fops = NULL; 1597 int err; 1598 1599 /* No load-on-demand here? */ 1600 if (!handler || !(new_fops = fops_get(handler->fops))) 1601 return -ENODEV; 1602 1603 /* 1604 * That's _really_ odd. Usually NULL ->open means "nothing special", 1605 * not "no device". Oh, well... 1606 */ 1607 if (!new_fops->open) { 1608 fops_put(new_fops); 1609 return -ENODEV; 1610 } 1611 old_fops = file->f_op; 1612 file->f_op = new_fops; 1613 1614 err = new_fops->open(inode, file); 1615 1616 if (err) { 1617 fops_put(file->f_op); 1618 file->f_op = fops_get(old_fops); 1619 } 1620 fops_put(old_fops); 1621 return err; 1622 } 1623 1624 static const struct file_operations input_fops = { 1625 .owner = THIS_MODULE, 1626 .open = input_open_file, 1627 }; 1628 1629 static int __init input_init(void) 1630 { 1631 int err; 1632 1633 err = class_register(&input_class); 1634 if (err) { 1635 printk(KERN_ERR "input: unable to register input_dev class\n"); 1636 return err; 1637 } 1638 1639 err = input_proc_init(); 1640 if (err) 1641 goto fail1; 1642 1643 err = register_chrdev(INPUT_MAJOR, "input", &input_fops); 1644 if (err) { 1645 printk(KERN_ERR "input: unable to register char major %d", INPUT_MAJOR); 1646 goto fail2; 1647 } 1648 1649 return 0; 1650 1651 fail2: input_proc_exit(); 1652 fail1: class_unregister(&input_class); 1653 return err; 1654 } 1655 1656 static void __exit input_exit(void) 1657 { 1658 input_proc_exit(); 1659 unregister_chrdev(INPUT_MAJOR, "input"); 1660 class_unregister(&input_class); 1661 } 1662 1663 subsys_initcall(input_init); 1664 module_exit(input_exit); 1665