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