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