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