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