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