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