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