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/sched.h> 15 #include <linux/smp_lock.h> 16 #include <linux/input.h> 17 #include <linux/module.h> 18 #include <linux/random.h> 19 #include <linux/major.h> 20 #include <linux/proc_fs.h> 21 #include <linux/seq_file.h> 22 #include <linux/interrupt.h> 23 #include <linux/poll.h> 24 #include <linux/device.h> 25 #include <linux/mutex.h> 26 27 MODULE_AUTHOR("Vojtech Pavlik <vojtech@suse.cz>"); 28 MODULE_DESCRIPTION("Input core"); 29 MODULE_LICENSE("GPL"); 30 31 #define INPUT_DEVICES 256 32 33 static LIST_HEAD(input_dev_list); 34 static LIST_HEAD(input_handler_list); 35 36 static struct input_handler *input_table[8]; 37 38 /** 39 * input_event() - report new input event 40 * @handle: device that generated the event 41 * @type: type of the event 42 * @code: event code 43 * @value: value of the event 44 * 45 * This function should be used by drivers implementing various input devices 46 * See also input_inject_event() 47 */ 48 void input_event(struct input_dev *dev, unsigned int type, unsigned int code, int value) 49 { 50 struct input_handle *handle; 51 52 if (type > EV_MAX || !test_bit(type, dev->evbit)) 53 return; 54 55 add_input_randomness(type, code, value); 56 57 switch (type) { 58 59 case EV_SYN: 60 switch (code) { 61 case SYN_CONFIG: 62 if (dev->event) 63 dev->event(dev, type, code, value); 64 break; 65 66 case SYN_REPORT: 67 if (dev->sync) 68 return; 69 dev->sync = 1; 70 break; 71 } 72 break; 73 74 case EV_KEY: 75 76 if (code > KEY_MAX || !test_bit(code, dev->keybit) || !!test_bit(code, dev->key) == value) 77 return; 78 79 if (value == 2) 80 break; 81 82 change_bit(code, dev->key); 83 84 if (test_bit(EV_REP, dev->evbit) && dev->rep[REP_PERIOD] && dev->rep[REP_DELAY] && dev->timer.data && value) { 85 dev->repeat_key = code; 86 mod_timer(&dev->timer, jiffies + msecs_to_jiffies(dev->rep[REP_DELAY])); 87 } 88 89 break; 90 91 case EV_SW: 92 93 if (code > SW_MAX || !test_bit(code, dev->swbit) || !!test_bit(code, dev->sw) == value) 94 return; 95 96 change_bit(code, dev->sw); 97 98 break; 99 100 case EV_ABS: 101 102 if (code > ABS_MAX || !test_bit(code, dev->absbit)) 103 return; 104 105 if (dev->absfuzz[code]) { 106 if ((value > dev->abs[code] - (dev->absfuzz[code] >> 1)) && 107 (value < dev->abs[code] + (dev->absfuzz[code] >> 1))) 108 return; 109 110 if ((value > dev->abs[code] - dev->absfuzz[code]) && 111 (value < dev->abs[code] + dev->absfuzz[code])) 112 value = (dev->abs[code] * 3 + value) >> 2; 113 114 if ((value > dev->abs[code] - (dev->absfuzz[code] << 1)) && 115 (value < dev->abs[code] + (dev->absfuzz[code] << 1))) 116 value = (dev->abs[code] + value) >> 1; 117 } 118 119 if (dev->abs[code] == value) 120 return; 121 122 dev->abs[code] = value; 123 break; 124 125 case EV_REL: 126 127 if (code > REL_MAX || !test_bit(code, dev->relbit) || (value == 0)) 128 return; 129 130 break; 131 132 case EV_MSC: 133 134 if (code > MSC_MAX || !test_bit(code, dev->mscbit)) 135 return; 136 137 if (dev->event) 138 dev->event(dev, type, code, value); 139 140 break; 141 142 case EV_LED: 143 144 if (code > LED_MAX || !test_bit(code, dev->ledbit) || !!test_bit(code, dev->led) == value) 145 return; 146 147 change_bit(code, dev->led); 148 149 if (dev->event) 150 dev->event(dev, type, code, value); 151 152 break; 153 154 case EV_SND: 155 156 if (code > SND_MAX || !test_bit(code, dev->sndbit)) 157 return; 158 159 if (!!test_bit(code, dev->snd) != !!value) 160 change_bit(code, dev->snd); 161 162 if (dev->event) 163 dev->event(dev, type, code, value); 164 165 break; 166 167 case EV_REP: 168 169 if (code > REP_MAX || value < 0 || dev->rep[code] == value) 170 return; 171 172 dev->rep[code] = value; 173 if (dev->event) 174 dev->event(dev, type, code, value); 175 176 break; 177 178 case EV_FF: 179 if (dev->event) 180 dev->event(dev, type, code, value); 181 break; 182 } 183 184 if (type != EV_SYN) 185 dev->sync = 0; 186 187 if (dev->grab) 188 dev->grab->handler->event(dev->grab, type, code, value); 189 else 190 list_for_each_entry(handle, &dev->h_list, d_node) 191 if (handle->open) 192 handle->handler->event(handle, type, code, value); 193 } 194 EXPORT_SYMBOL(input_event); 195 196 /** 197 * input_inject_event() - send input event from input handler 198 * @handle: input handle to send event through 199 * @type: type of the event 200 * @code: event code 201 * @value: value of the event 202 * 203 * Similar to input_event() but will ignore event if device is "grabbed" and handle 204 * injecting event is not the one that owns the device. 205 */ 206 void input_inject_event(struct input_handle *handle, unsigned int type, unsigned int code, int value) 207 { 208 if (!handle->dev->grab || handle->dev->grab == handle) 209 input_event(handle->dev, type, code, value); 210 } 211 EXPORT_SYMBOL(input_inject_event); 212 213 static void input_repeat_key(unsigned long data) 214 { 215 struct input_dev *dev = (void *) data; 216 217 if (!test_bit(dev->repeat_key, dev->key)) 218 return; 219 220 input_event(dev, EV_KEY, dev->repeat_key, 2); 221 input_sync(dev); 222 223 if (dev->rep[REP_PERIOD]) 224 mod_timer(&dev->timer, jiffies + msecs_to_jiffies(dev->rep[REP_PERIOD])); 225 } 226 227 int input_grab_device(struct input_handle *handle) 228 { 229 if (handle->dev->grab) 230 return -EBUSY; 231 232 handle->dev->grab = handle; 233 return 0; 234 } 235 EXPORT_SYMBOL(input_grab_device); 236 237 void input_release_device(struct input_handle *handle) 238 { 239 struct input_dev *dev = handle->dev; 240 241 if (dev->grab == handle) { 242 dev->grab = NULL; 243 244 list_for_each_entry(handle, &dev->h_list, d_node) 245 if (handle->handler->start) 246 handle->handler->start(handle); 247 } 248 } 249 EXPORT_SYMBOL(input_release_device); 250 251 int input_open_device(struct input_handle *handle) 252 { 253 struct input_dev *dev = handle->dev; 254 int err; 255 256 err = mutex_lock_interruptible(&dev->mutex); 257 if (err) 258 return err; 259 260 handle->open++; 261 262 if (!dev->users++ && dev->open) 263 err = dev->open(dev); 264 265 if (err) 266 handle->open--; 267 268 mutex_unlock(&dev->mutex); 269 270 return err; 271 } 272 EXPORT_SYMBOL(input_open_device); 273 274 int input_flush_device(struct input_handle* handle, struct file* file) 275 { 276 if (handle->dev->flush) 277 return handle->dev->flush(handle->dev, file); 278 279 return 0; 280 } 281 EXPORT_SYMBOL(input_flush_device); 282 283 void input_close_device(struct input_handle *handle) 284 { 285 struct input_dev *dev = handle->dev; 286 287 input_release_device(handle); 288 289 mutex_lock(&dev->mutex); 290 291 if (!--dev->users && dev->close) 292 dev->close(dev); 293 handle->open--; 294 295 mutex_unlock(&dev->mutex); 296 } 297 EXPORT_SYMBOL(input_close_device); 298 299 static void input_link_handle(struct input_handle *handle) 300 { 301 list_add_tail(&handle->d_node, &handle->dev->h_list); 302 list_add_tail(&handle->h_node, &handle->handler->h_list); 303 } 304 305 #define MATCH_BIT(bit, max) \ 306 for (i = 0; i < NBITS(max); i++) \ 307 if ((id->bit[i] & dev->bit[i]) != id->bit[i]) \ 308 break; \ 309 if (i != NBITS(max)) \ 310 continue; 311 312 static struct input_device_id *input_match_device(struct input_device_id *id, struct input_dev *dev) 313 { 314 int i; 315 316 for (; id->flags || id->driver_info; id++) { 317 318 if (id->flags & INPUT_DEVICE_ID_MATCH_BUS) 319 if (id->bustype != dev->id.bustype) 320 continue; 321 322 if (id->flags & INPUT_DEVICE_ID_MATCH_VENDOR) 323 if (id->vendor != dev->id.vendor) 324 continue; 325 326 if (id->flags & INPUT_DEVICE_ID_MATCH_PRODUCT) 327 if (id->product != dev->id.product) 328 continue; 329 330 if (id->flags & INPUT_DEVICE_ID_MATCH_VERSION) 331 if (id->version != dev->id.version) 332 continue; 333 334 MATCH_BIT(evbit, EV_MAX); 335 MATCH_BIT(keybit, KEY_MAX); 336 MATCH_BIT(relbit, REL_MAX); 337 MATCH_BIT(absbit, ABS_MAX); 338 MATCH_BIT(mscbit, MSC_MAX); 339 MATCH_BIT(ledbit, LED_MAX); 340 MATCH_BIT(sndbit, SND_MAX); 341 MATCH_BIT(ffbit, FF_MAX); 342 MATCH_BIT(swbit, SW_MAX); 343 344 return id; 345 } 346 347 return NULL; 348 } 349 350 #ifdef CONFIG_PROC_FS 351 352 static struct proc_dir_entry *proc_bus_input_dir; 353 static DECLARE_WAIT_QUEUE_HEAD(input_devices_poll_wait); 354 static int input_devices_state; 355 356 static inline void input_wakeup_procfs_readers(void) 357 { 358 input_devices_state++; 359 wake_up(&input_devices_poll_wait); 360 } 361 362 static unsigned int input_proc_devices_poll(struct file *file, poll_table *wait) 363 { 364 int state = input_devices_state; 365 366 poll_wait(file, &input_devices_poll_wait, wait); 367 if (state != input_devices_state) 368 return POLLIN | POLLRDNORM; 369 370 return 0; 371 } 372 373 static struct list_head *list_get_nth_element(struct list_head *list, loff_t *pos) 374 { 375 struct list_head *node; 376 loff_t i = 0; 377 378 list_for_each(node, list) 379 if (i++ == *pos) 380 return node; 381 382 return NULL; 383 } 384 385 static struct list_head *list_get_next_element(struct list_head *list, struct list_head *element, loff_t *pos) 386 { 387 if (element->next == list) 388 return NULL; 389 390 ++(*pos); 391 return element->next; 392 } 393 394 static void *input_devices_seq_start(struct seq_file *seq, loff_t *pos) 395 { 396 /* acquire lock here ... Yes, we do need locking, I knowi, I know... */ 397 398 return list_get_nth_element(&input_dev_list, pos); 399 } 400 401 static void *input_devices_seq_next(struct seq_file *seq, void *v, loff_t *pos) 402 { 403 return list_get_next_element(&input_dev_list, v, pos); 404 } 405 406 static void input_devices_seq_stop(struct seq_file *seq, void *v) 407 { 408 /* release lock here */ 409 } 410 411 static void input_seq_print_bitmap(struct seq_file *seq, const char *name, 412 unsigned long *bitmap, int max) 413 { 414 int i; 415 416 for (i = NBITS(max) - 1; i > 0; i--) 417 if (bitmap[i]) 418 break; 419 420 seq_printf(seq, "B: %s=", name); 421 for (; i >= 0; i--) 422 seq_printf(seq, "%lx%s", bitmap[i], i > 0 ? " " : ""); 423 seq_putc(seq, '\n'); 424 } 425 426 static int input_devices_seq_show(struct seq_file *seq, void *v) 427 { 428 struct input_dev *dev = container_of(v, struct input_dev, node); 429 const char *path = kobject_get_path(&dev->cdev.kobj, GFP_KERNEL); 430 struct input_handle *handle; 431 432 seq_printf(seq, "I: Bus=%04x Vendor=%04x Product=%04x Version=%04x\n", 433 dev->id.bustype, dev->id.vendor, dev->id.product, dev->id.version); 434 435 seq_printf(seq, "N: Name=\"%s\"\n", dev->name ? dev->name : ""); 436 seq_printf(seq, "P: Phys=%s\n", dev->phys ? dev->phys : ""); 437 seq_printf(seq, "S: Sysfs=%s\n", path ? path : ""); 438 seq_printf(seq, "H: Handlers="); 439 440 list_for_each_entry(handle, &dev->h_list, d_node) 441 seq_printf(seq, "%s ", handle->name); 442 seq_putc(seq, '\n'); 443 444 input_seq_print_bitmap(seq, "EV", dev->evbit, EV_MAX); 445 if (test_bit(EV_KEY, dev->evbit)) 446 input_seq_print_bitmap(seq, "KEY", dev->keybit, KEY_MAX); 447 if (test_bit(EV_REL, dev->evbit)) 448 input_seq_print_bitmap(seq, "REL", dev->relbit, REL_MAX); 449 if (test_bit(EV_ABS, dev->evbit)) 450 input_seq_print_bitmap(seq, "ABS", dev->absbit, ABS_MAX); 451 if (test_bit(EV_MSC, dev->evbit)) 452 input_seq_print_bitmap(seq, "MSC", dev->mscbit, MSC_MAX); 453 if (test_bit(EV_LED, dev->evbit)) 454 input_seq_print_bitmap(seq, "LED", dev->ledbit, LED_MAX); 455 if (test_bit(EV_SND, dev->evbit)) 456 input_seq_print_bitmap(seq, "SND", dev->sndbit, SND_MAX); 457 if (test_bit(EV_FF, dev->evbit)) 458 input_seq_print_bitmap(seq, "FF", dev->ffbit, FF_MAX); 459 if (test_bit(EV_SW, dev->evbit)) 460 input_seq_print_bitmap(seq, "SW", dev->swbit, SW_MAX); 461 462 seq_putc(seq, '\n'); 463 464 kfree(path); 465 return 0; 466 } 467 468 static struct seq_operations input_devices_seq_ops = { 469 .start = input_devices_seq_start, 470 .next = input_devices_seq_next, 471 .stop = input_devices_seq_stop, 472 .show = input_devices_seq_show, 473 }; 474 475 static int input_proc_devices_open(struct inode *inode, struct file *file) 476 { 477 return seq_open(file, &input_devices_seq_ops); 478 } 479 480 static struct file_operations input_devices_fileops = { 481 .owner = THIS_MODULE, 482 .open = input_proc_devices_open, 483 .poll = input_proc_devices_poll, 484 .read = seq_read, 485 .llseek = seq_lseek, 486 .release = seq_release, 487 }; 488 489 static void *input_handlers_seq_start(struct seq_file *seq, loff_t *pos) 490 { 491 /* acquire lock here ... Yes, we do need locking, I knowi, I know... */ 492 seq->private = (void *)(unsigned long)*pos; 493 return list_get_nth_element(&input_handler_list, pos); 494 } 495 496 static void *input_handlers_seq_next(struct seq_file *seq, void *v, loff_t *pos) 497 { 498 seq->private = (void *)(unsigned long)(*pos + 1); 499 return list_get_next_element(&input_handler_list, v, pos); 500 } 501 502 static void input_handlers_seq_stop(struct seq_file *seq, void *v) 503 { 504 /* release lock here */ 505 } 506 507 static int input_handlers_seq_show(struct seq_file *seq, void *v) 508 { 509 struct input_handler *handler = container_of(v, struct input_handler, node); 510 511 seq_printf(seq, "N: Number=%ld Name=%s", 512 (unsigned long)seq->private, handler->name); 513 if (handler->fops) 514 seq_printf(seq, " Minor=%d", handler->minor); 515 seq_putc(seq, '\n'); 516 517 return 0; 518 } 519 static struct seq_operations input_handlers_seq_ops = { 520 .start = input_handlers_seq_start, 521 .next = input_handlers_seq_next, 522 .stop = input_handlers_seq_stop, 523 .show = input_handlers_seq_show, 524 }; 525 526 static int input_proc_handlers_open(struct inode *inode, struct file *file) 527 { 528 return seq_open(file, &input_handlers_seq_ops); 529 } 530 531 static struct file_operations input_handlers_fileops = { 532 .owner = THIS_MODULE, 533 .open = input_proc_handlers_open, 534 .read = seq_read, 535 .llseek = seq_lseek, 536 .release = seq_release, 537 }; 538 539 static int __init input_proc_init(void) 540 { 541 struct proc_dir_entry *entry; 542 543 proc_bus_input_dir = proc_mkdir("input", proc_bus); 544 if (!proc_bus_input_dir) 545 return -ENOMEM; 546 547 proc_bus_input_dir->owner = THIS_MODULE; 548 549 entry = create_proc_entry("devices", 0, proc_bus_input_dir); 550 if (!entry) 551 goto fail1; 552 553 entry->owner = THIS_MODULE; 554 entry->proc_fops = &input_devices_fileops; 555 556 entry = create_proc_entry("handlers", 0, proc_bus_input_dir); 557 if (!entry) 558 goto fail2; 559 560 entry->owner = THIS_MODULE; 561 entry->proc_fops = &input_handlers_fileops; 562 563 return 0; 564 565 fail2: remove_proc_entry("devices", proc_bus_input_dir); 566 fail1: remove_proc_entry("input", proc_bus); 567 return -ENOMEM; 568 } 569 570 static void input_proc_exit(void) 571 { 572 remove_proc_entry("devices", proc_bus_input_dir); 573 remove_proc_entry("handlers", proc_bus_input_dir); 574 remove_proc_entry("input", proc_bus); 575 } 576 577 #else /* !CONFIG_PROC_FS */ 578 static inline void input_wakeup_procfs_readers(void) { } 579 static inline int input_proc_init(void) { return 0; } 580 static inline void input_proc_exit(void) { } 581 #endif 582 583 #define INPUT_DEV_STRING_ATTR_SHOW(name) \ 584 static ssize_t input_dev_show_##name(struct class_device *dev, char *buf) \ 585 { \ 586 struct input_dev *input_dev = to_input_dev(dev); \ 587 int retval; \ 588 \ 589 retval = mutex_lock_interruptible(&input_dev->mutex); \ 590 if (retval) \ 591 return retval; \ 592 \ 593 retval = scnprintf(buf, PAGE_SIZE, \ 594 "%s\n", input_dev->name ? input_dev->name : ""); \ 595 \ 596 mutex_unlock(&input_dev->mutex); \ 597 \ 598 return retval; \ 599 } \ 600 static CLASS_DEVICE_ATTR(name, S_IRUGO, input_dev_show_##name, NULL); 601 602 INPUT_DEV_STRING_ATTR_SHOW(name); 603 INPUT_DEV_STRING_ATTR_SHOW(phys); 604 INPUT_DEV_STRING_ATTR_SHOW(uniq); 605 606 static int input_print_modalias_bits(char *buf, int size, 607 char name, unsigned long *bm, 608 unsigned int min_bit, unsigned int max_bit) 609 { 610 int len = 0, i; 611 612 len += snprintf(buf, max(size, 0), "%c", name); 613 for (i = min_bit; i < max_bit; i++) 614 if (bm[LONG(i)] & BIT(i)) 615 len += snprintf(buf + len, max(size - len, 0), "%X,", i); 616 return len; 617 } 618 619 static int input_print_modalias(char *buf, int size, struct input_dev *id, 620 int add_cr) 621 { 622 int len; 623 624 len = snprintf(buf, max(size, 0), 625 "input:b%04Xv%04Xp%04Xe%04X-", 626 id->id.bustype, id->id.vendor, 627 id->id.product, id->id.version); 628 629 len += input_print_modalias_bits(buf + len, size - len, 630 'e', id->evbit, 0, EV_MAX); 631 len += input_print_modalias_bits(buf + len, size - len, 632 'k', id->keybit, KEY_MIN_INTERESTING, KEY_MAX); 633 len += input_print_modalias_bits(buf + len, size - len, 634 'r', id->relbit, 0, REL_MAX); 635 len += input_print_modalias_bits(buf + len, size - len, 636 'a', id->absbit, 0, ABS_MAX); 637 len += input_print_modalias_bits(buf + len, size - len, 638 'm', id->mscbit, 0, MSC_MAX); 639 len += input_print_modalias_bits(buf + len, size - len, 640 'l', id->ledbit, 0, LED_MAX); 641 len += input_print_modalias_bits(buf + len, size - len, 642 's', id->sndbit, 0, SND_MAX); 643 len += input_print_modalias_bits(buf + len, size - len, 644 'f', id->ffbit, 0, FF_MAX); 645 len += input_print_modalias_bits(buf + len, size - len, 646 'w', id->swbit, 0, SW_MAX); 647 648 if (add_cr) 649 len += snprintf(buf + len, max(size - len, 0), "\n"); 650 651 return len; 652 } 653 654 static ssize_t input_dev_show_modalias(struct class_device *dev, char *buf) 655 { 656 struct input_dev *id = to_input_dev(dev); 657 ssize_t len; 658 659 len = input_print_modalias(buf, PAGE_SIZE, id, 1); 660 661 return min_t(int, len, PAGE_SIZE); 662 } 663 static CLASS_DEVICE_ATTR(modalias, S_IRUGO, input_dev_show_modalias, NULL); 664 665 static struct attribute *input_dev_attrs[] = { 666 &class_device_attr_name.attr, 667 &class_device_attr_phys.attr, 668 &class_device_attr_uniq.attr, 669 &class_device_attr_modalias.attr, 670 NULL 671 }; 672 673 static struct attribute_group input_dev_attr_group = { 674 .attrs = input_dev_attrs, 675 }; 676 677 #define INPUT_DEV_ID_ATTR(name) \ 678 static ssize_t input_dev_show_id_##name(struct class_device *dev, char *buf) \ 679 { \ 680 struct input_dev *input_dev = to_input_dev(dev); \ 681 return scnprintf(buf, PAGE_SIZE, "%04x\n", input_dev->id.name); \ 682 } \ 683 static CLASS_DEVICE_ATTR(name, S_IRUGO, input_dev_show_id_##name, NULL); 684 685 INPUT_DEV_ID_ATTR(bustype); 686 INPUT_DEV_ID_ATTR(vendor); 687 INPUT_DEV_ID_ATTR(product); 688 INPUT_DEV_ID_ATTR(version); 689 690 static struct attribute *input_dev_id_attrs[] = { 691 &class_device_attr_bustype.attr, 692 &class_device_attr_vendor.attr, 693 &class_device_attr_product.attr, 694 &class_device_attr_version.attr, 695 NULL 696 }; 697 698 static struct attribute_group input_dev_id_attr_group = { 699 .name = "id", 700 .attrs = input_dev_id_attrs, 701 }; 702 703 static int input_print_bitmap(char *buf, int buf_size, unsigned long *bitmap, 704 int max, int add_cr) 705 { 706 int i; 707 int len = 0; 708 709 for (i = NBITS(max) - 1; i > 0; i--) 710 if (bitmap[i]) 711 break; 712 713 for (; i >= 0; i--) 714 len += snprintf(buf + len, max(buf_size - len, 0), 715 "%lx%s", bitmap[i], i > 0 ? " " : ""); 716 717 if (add_cr) 718 len += snprintf(buf + len, max(buf_size - len, 0), "\n"); 719 720 return len; 721 } 722 723 #define INPUT_DEV_CAP_ATTR(ev, bm) \ 724 static ssize_t input_dev_show_cap_##bm(struct class_device *dev, char *buf) \ 725 { \ 726 struct input_dev *input_dev = to_input_dev(dev); \ 727 int len = input_print_bitmap(buf, PAGE_SIZE, \ 728 input_dev->bm##bit, ev##_MAX, 1); \ 729 return min_t(int, len, PAGE_SIZE); \ 730 } \ 731 static CLASS_DEVICE_ATTR(bm, S_IRUGO, input_dev_show_cap_##bm, NULL); 732 733 INPUT_DEV_CAP_ATTR(EV, ev); 734 INPUT_DEV_CAP_ATTR(KEY, key); 735 INPUT_DEV_CAP_ATTR(REL, rel); 736 INPUT_DEV_CAP_ATTR(ABS, abs); 737 INPUT_DEV_CAP_ATTR(MSC, msc); 738 INPUT_DEV_CAP_ATTR(LED, led); 739 INPUT_DEV_CAP_ATTR(SND, snd); 740 INPUT_DEV_CAP_ATTR(FF, ff); 741 INPUT_DEV_CAP_ATTR(SW, sw); 742 743 static struct attribute *input_dev_caps_attrs[] = { 744 &class_device_attr_ev.attr, 745 &class_device_attr_key.attr, 746 &class_device_attr_rel.attr, 747 &class_device_attr_abs.attr, 748 &class_device_attr_msc.attr, 749 &class_device_attr_led.attr, 750 &class_device_attr_snd.attr, 751 &class_device_attr_ff.attr, 752 &class_device_attr_sw.attr, 753 NULL 754 }; 755 756 static struct attribute_group input_dev_caps_attr_group = { 757 .name = "capabilities", 758 .attrs = input_dev_caps_attrs, 759 }; 760 761 static void input_dev_release(struct class_device *class_dev) 762 { 763 struct input_dev *dev = to_input_dev(class_dev); 764 765 kfree(dev); 766 module_put(THIS_MODULE); 767 } 768 769 /* 770 * Input uevent interface - loading event handlers based on 771 * device bitfields. 772 */ 773 static int input_add_uevent_bm_var(char **envp, int num_envp, int *cur_index, 774 char *buffer, int buffer_size, int *cur_len, 775 const char *name, unsigned long *bitmap, int max) 776 { 777 if (*cur_index >= num_envp - 1) 778 return -ENOMEM; 779 780 envp[*cur_index] = buffer + *cur_len; 781 782 *cur_len += snprintf(buffer + *cur_len, max(buffer_size - *cur_len, 0), name); 783 if (*cur_len >= buffer_size) 784 return -ENOMEM; 785 786 *cur_len += input_print_bitmap(buffer + *cur_len, 787 max(buffer_size - *cur_len, 0), 788 bitmap, max, 0) + 1; 789 if (*cur_len > buffer_size) 790 return -ENOMEM; 791 792 (*cur_index)++; 793 return 0; 794 } 795 796 static int input_add_uevent_modalias_var(char **envp, int num_envp, int *cur_index, 797 char *buffer, int buffer_size, int *cur_len, 798 struct input_dev *dev) 799 { 800 if (*cur_index >= num_envp - 1) 801 return -ENOMEM; 802 803 envp[*cur_index] = buffer + *cur_len; 804 805 *cur_len += snprintf(buffer + *cur_len, max(buffer_size - *cur_len, 0), 806 "MODALIAS="); 807 if (*cur_len >= buffer_size) 808 return -ENOMEM; 809 810 *cur_len += input_print_modalias(buffer + *cur_len, 811 max(buffer_size - *cur_len, 0), 812 dev, 0) + 1; 813 if (*cur_len > buffer_size) 814 return -ENOMEM; 815 816 (*cur_index)++; 817 return 0; 818 } 819 820 #define INPUT_ADD_HOTPLUG_VAR(fmt, val...) \ 821 do { \ 822 int err = add_uevent_var(envp, num_envp, &i, \ 823 buffer, buffer_size, &len, \ 824 fmt, val); \ 825 if (err) \ 826 return err; \ 827 } while (0) 828 829 #define INPUT_ADD_HOTPLUG_BM_VAR(name, bm, max) \ 830 do { \ 831 int err = input_add_uevent_bm_var(envp, num_envp, &i, \ 832 buffer, buffer_size, &len, \ 833 name, bm, max); \ 834 if (err) \ 835 return err; \ 836 } while (0) 837 838 #define INPUT_ADD_HOTPLUG_MODALIAS_VAR(dev) \ 839 do { \ 840 int err = input_add_uevent_modalias_var(envp, \ 841 num_envp, &i, \ 842 buffer, buffer_size, &len, \ 843 dev); \ 844 if (err) \ 845 return err; \ 846 } while (0) 847 848 static int input_dev_uevent(struct class_device *cdev, char **envp, 849 int num_envp, char *buffer, int buffer_size) 850 { 851 struct input_dev *dev = to_input_dev(cdev); 852 int i = 0; 853 int len = 0; 854 855 INPUT_ADD_HOTPLUG_VAR("PRODUCT=%x/%x/%x/%x", 856 dev->id.bustype, dev->id.vendor, 857 dev->id.product, dev->id.version); 858 if (dev->name) 859 INPUT_ADD_HOTPLUG_VAR("NAME=\"%s\"", dev->name); 860 if (dev->phys) 861 INPUT_ADD_HOTPLUG_VAR("PHYS=\"%s\"", dev->phys); 862 if (dev->uniq) 863 INPUT_ADD_HOTPLUG_VAR("UNIQ=\"%s\"", dev->uniq); 864 865 INPUT_ADD_HOTPLUG_BM_VAR("EV=", dev->evbit, EV_MAX); 866 if (test_bit(EV_KEY, dev->evbit)) 867 INPUT_ADD_HOTPLUG_BM_VAR("KEY=", dev->keybit, KEY_MAX); 868 if (test_bit(EV_REL, dev->evbit)) 869 INPUT_ADD_HOTPLUG_BM_VAR("REL=", dev->relbit, REL_MAX); 870 if (test_bit(EV_ABS, dev->evbit)) 871 INPUT_ADD_HOTPLUG_BM_VAR("ABS=", dev->absbit, ABS_MAX); 872 if (test_bit(EV_MSC, dev->evbit)) 873 INPUT_ADD_HOTPLUG_BM_VAR("MSC=", dev->mscbit, MSC_MAX); 874 if (test_bit(EV_LED, dev->evbit)) 875 INPUT_ADD_HOTPLUG_BM_VAR("LED=", dev->ledbit, LED_MAX); 876 if (test_bit(EV_SND, dev->evbit)) 877 INPUT_ADD_HOTPLUG_BM_VAR("SND=", dev->sndbit, SND_MAX); 878 if (test_bit(EV_FF, dev->evbit)) 879 INPUT_ADD_HOTPLUG_BM_VAR("FF=", dev->ffbit, FF_MAX); 880 if (test_bit(EV_SW, dev->evbit)) 881 INPUT_ADD_HOTPLUG_BM_VAR("SW=", dev->swbit, SW_MAX); 882 883 INPUT_ADD_HOTPLUG_MODALIAS_VAR(dev); 884 885 envp[i] = NULL; 886 return 0; 887 } 888 889 struct class input_class = { 890 .name = "input", 891 .release = input_dev_release, 892 .uevent = input_dev_uevent, 893 }; 894 EXPORT_SYMBOL_GPL(input_class); 895 896 struct input_dev *input_allocate_device(void) 897 { 898 struct input_dev *dev; 899 900 dev = kzalloc(sizeof(struct input_dev), GFP_KERNEL); 901 if (dev) { 902 dev->dynalloc = 1; 903 dev->cdev.class = &input_class; 904 class_device_initialize(&dev->cdev); 905 mutex_init(&dev->mutex); 906 INIT_LIST_HEAD(&dev->h_list); 907 INIT_LIST_HEAD(&dev->node); 908 } 909 910 return dev; 911 } 912 EXPORT_SYMBOL(input_allocate_device); 913 914 void input_free_device(struct input_dev *dev) 915 { 916 if (dev) { 917 918 mutex_lock(&dev->mutex); 919 dev->name = dev->phys = dev->uniq = NULL; 920 mutex_unlock(&dev->mutex); 921 922 input_put_device(dev); 923 } 924 } 925 EXPORT_SYMBOL(input_free_device); 926 927 int input_register_device(struct input_dev *dev) 928 { 929 static atomic_t input_no = ATOMIC_INIT(0); 930 struct input_handle *handle; 931 struct input_handler *handler; 932 struct input_device_id *id; 933 const char *path; 934 int error; 935 936 if (!dev->dynalloc) { 937 printk(KERN_WARNING "input: device %s is statically allocated, will not register\n" 938 "Please convert to input_allocate_device() or contact dtor_core@ameritech.net\n", 939 dev->name ? dev->name : "<Unknown>"); 940 return -EINVAL; 941 } 942 943 set_bit(EV_SYN, dev->evbit); 944 945 /* 946 * If delay and period are pre-set by the driver, then autorepeating 947 * is handled by the driver itself and we don't do it in input.c. 948 */ 949 950 init_timer(&dev->timer); 951 if (!dev->rep[REP_DELAY] && !dev->rep[REP_PERIOD]) { 952 dev->timer.data = (long) dev; 953 dev->timer.function = input_repeat_key; 954 dev->rep[REP_DELAY] = 250; 955 dev->rep[REP_PERIOD] = 33; 956 } 957 958 INIT_LIST_HEAD(&dev->h_list); 959 list_add_tail(&dev->node, &input_dev_list); 960 961 dev->cdev.class = &input_class; 962 snprintf(dev->cdev.class_id, sizeof(dev->cdev.class_id), 963 "input%ld", (unsigned long) atomic_inc_return(&input_no) - 1); 964 965 error = class_device_add(&dev->cdev); 966 if (error) 967 return error; 968 969 error = sysfs_create_group(&dev->cdev.kobj, &input_dev_attr_group); 970 if (error) 971 goto fail1; 972 973 error = sysfs_create_group(&dev->cdev.kobj, &input_dev_id_attr_group); 974 if (error) 975 goto fail2; 976 977 error = sysfs_create_group(&dev->cdev.kobj, &input_dev_caps_attr_group); 978 if (error) 979 goto fail3; 980 981 __module_get(THIS_MODULE); 982 983 path = kobject_get_path(&dev->cdev.kobj, GFP_KERNEL); 984 printk(KERN_INFO "input: %s as %s\n", 985 dev->name ? dev->name : "Unspecified device", path ? path : "N/A"); 986 kfree(path); 987 988 list_for_each_entry(handler, &input_handler_list, node) 989 if (!handler->blacklist || !input_match_device(handler->blacklist, dev)) 990 if ((id = input_match_device(handler->id_table, dev))) 991 if ((handle = handler->connect(handler, dev, id))) { 992 input_link_handle(handle); 993 if (handler->start) 994 handler->start(handle); 995 } 996 997 input_wakeup_procfs_readers(); 998 999 return 0; 1000 1001 fail3: sysfs_remove_group(&dev->cdev.kobj, &input_dev_id_attr_group); 1002 fail2: sysfs_remove_group(&dev->cdev.kobj, &input_dev_attr_group); 1003 fail1: class_device_del(&dev->cdev); 1004 return error; 1005 } 1006 EXPORT_SYMBOL(input_register_device); 1007 1008 void input_unregister_device(struct input_dev *dev) 1009 { 1010 struct list_head *node, *next; 1011 1012 if (!dev) 1013 return; 1014 1015 del_timer_sync(&dev->timer); 1016 1017 list_for_each_safe(node, next, &dev->h_list) { 1018 struct input_handle * handle = to_handle(node); 1019 list_del_init(&handle->d_node); 1020 list_del_init(&handle->h_node); 1021 handle->handler->disconnect(handle); 1022 } 1023 1024 list_del_init(&dev->node); 1025 1026 sysfs_remove_group(&dev->cdev.kobj, &input_dev_caps_attr_group); 1027 sysfs_remove_group(&dev->cdev.kobj, &input_dev_id_attr_group); 1028 sysfs_remove_group(&dev->cdev.kobj, &input_dev_attr_group); 1029 1030 mutex_lock(&dev->mutex); 1031 dev->name = dev->phys = dev->uniq = NULL; 1032 mutex_unlock(&dev->mutex); 1033 1034 class_device_unregister(&dev->cdev); 1035 1036 input_wakeup_procfs_readers(); 1037 } 1038 EXPORT_SYMBOL(input_unregister_device); 1039 1040 void input_register_handler(struct input_handler *handler) 1041 { 1042 struct input_dev *dev; 1043 struct input_handle *handle; 1044 struct input_device_id *id; 1045 1046 if (!handler) 1047 return; 1048 1049 INIT_LIST_HEAD(&handler->h_list); 1050 1051 if (handler->fops != NULL) 1052 input_table[handler->minor >> 5] = handler; 1053 1054 list_add_tail(&handler->node, &input_handler_list); 1055 1056 list_for_each_entry(dev, &input_dev_list, node) 1057 if (!handler->blacklist || !input_match_device(handler->blacklist, dev)) 1058 if ((id = input_match_device(handler->id_table, dev))) 1059 if ((handle = handler->connect(handler, dev, id))) { 1060 input_link_handle(handle); 1061 if (handler->start) 1062 handler->start(handle); 1063 } 1064 1065 input_wakeup_procfs_readers(); 1066 } 1067 EXPORT_SYMBOL(input_register_handler); 1068 1069 void input_unregister_handler(struct input_handler *handler) 1070 { 1071 struct list_head *node, *next; 1072 1073 list_for_each_safe(node, next, &handler->h_list) { 1074 struct input_handle * handle = to_handle_h(node); 1075 list_del_init(&handle->h_node); 1076 list_del_init(&handle->d_node); 1077 handler->disconnect(handle); 1078 } 1079 1080 list_del_init(&handler->node); 1081 1082 if (handler->fops != NULL) 1083 input_table[handler->minor >> 5] = NULL; 1084 1085 input_wakeup_procfs_readers(); 1086 } 1087 EXPORT_SYMBOL(input_unregister_handler); 1088 1089 static int input_open_file(struct inode *inode, struct file *file) 1090 { 1091 struct input_handler *handler = input_table[iminor(inode) >> 5]; 1092 const struct file_operations *old_fops, *new_fops = NULL; 1093 int err; 1094 1095 /* No load-on-demand here? */ 1096 if (!handler || !(new_fops = fops_get(handler->fops))) 1097 return -ENODEV; 1098 1099 /* 1100 * That's _really_ odd. Usually NULL ->open means "nothing special", 1101 * not "no device". Oh, well... 1102 */ 1103 if (!new_fops->open) { 1104 fops_put(new_fops); 1105 return -ENODEV; 1106 } 1107 old_fops = file->f_op; 1108 file->f_op = new_fops; 1109 1110 err = new_fops->open(inode, file); 1111 1112 if (err) { 1113 fops_put(file->f_op); 1114 file->f_op = fops_get(old_fops); 1115 } 1116 fops_put(old_fops); 1117 return err; 1118 } 1119 1120 static struct file_operations input_fops = { 1121 .owner = THIS_MODULE, 1122 .open = input_open_file, 1123 }; 1124 1125 static int __init input_init(void) 1126 { 1127 int err; 1128 1129 err = class_register(&input_class); 1130 if (err) { 1131 printk(KERN_ERR "input: unable to register input_dev class\n"); 1132 return err; 1133 } 1134 1135 err = input_proc_init(); 1136 if (err) 1137 goto fail1; 1138 1139 err = register_chrdev(INPUT_MAJOR, "input", &input_fops); 1140 if (err) { 1141 printk(KERN_ERR "input: unable to register char major %d", INPUT_MAJOR); 1142 goto fail2; 1143 } 1144 1145 return 0; 1146 1147 fail2: input_proc_exit(); 1148 fail1: class_unregister(&input_class); 1149 return err; 1150 } 1151 1152 static void __exit input_exit(void) 1153 { 1154 input_proc_exit(); 1155 unregister_chrdev(INPUT_MAJOR, "input"); 1156 class_unregister(&input_class); 1157 } 1158 1159 subsys_initcall(input_init); 1160 module_exit(input_exit); 1161