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