1 /* 2 * HID support for Linux 3 * 4 * Copyright (c) 1999 Andreas Gal 5 * Copyright (c) 2000-2005 Vojtech Pavlik <vojtech@suse.cz> 6 * Copyright (c) 2005 Michael Haboustak <mike-@cinci.rr.com> for Concept2, Inc 7 * Copyright (c) 2006-2012 Jiri Kosina 8 */ 9 10 /* 11 * This program is free software; you can redistribute it and/or modify it 12 * under the terms of the GNU General Public License as published by the Free 13 * Software Foundation; either version 2 of the License, or (at your option) 14 * any later version. 15 */ 16 17 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt 18 19 #include <linux/module.h> 20 #include <linux/slab.h> 21 #include <linux/init.h> 22 #include <linux/kernel.h> 23 #include <linux/list.h> 24 #include <linux/mm.h> 25 #include <linux/spinlock.h> 26 #include <asm/unaligned.h> 27 #include <asm/byteorder.h> 28 #include <linux/input.h> 29 #include <linux/wait.h> 30 #include <linux/vmalloc.h> 31 #include <linux/sched.h> 32 #include <linux/semaphore.h> 33 #include <linux/async.h> 34 35 #include <linux/hid.h> 36 #include <linux/hiddev.h> 37 #include <linux/hid-debug.h> 38 #include <linux/hidraw.h> 39 40 #include "hid-ids.h" 41 42 /* 43 * Version Information 44 */ 45 46 #define DRIVER_DESC "HID core driver" 47 48 int hid_debug = 0; 49 module_param_named(debug, hid_debug, int, 0600); 50 MODULE_PARM_DESC(debug, "toggle HID debugging messages"); 51 EXPORT_SYMBOL_GPL(hid_debug); 52 53 static int hid_ignore_special_drivers = 0; 54 module_param_named(ignore_special_drivers, hid_ignore_special_drivers, int, 0600); 55 MODULE_PARM_DESC(ignore_special_drivers, "Ignore any special drivers and handle all devices by generic driver"); 56 57 /* 58 * Register a new report for a device. 59 */ 60 61 struct hid_report *hid_register_report(struct hid_device *device, 62 unsigned int type, unsigned int id, 63 unsigned int application) 64 { 65 struct hid_report_enum *report_enum = device->report_enum + type; 66 struct hid_report *report; 67 68 if (id >= HID_MAX_IDS) 69 return NULL; 70 if (report_enum->report_id_hash[id]) 71 return report_enum->report_id_hash[id]; 72 73 report = kzalloc(sizeof(struct hid_report), GFP_KERNEL); 74 if (!report) 75 return NULL; 76 77 if (id != 0) 78 report_enum->numbered = 1; 79 80 report->id = id; 81 report->type = type; 82 report->size = 0; 83 report->device = device; 84 report->application = application; 85 report_enum->report_id_hash[id] = report; 86 87 list_add_tail(&report->list, &report_enum->report_list); 88 89 return report; 90 } 91 EXPORT_SYMBOL_GPL(hid_register_report); 92 93 /* 94 * Register a new field for this report. 95 */ 96 97 static struct hid_field *hid_register_field(struct hid_report *report, unsigned usages, unsigned values) 98 { 99 struct hid_field *field; 100 101 if (report->maxfield == HID_MAX_FIELDS) { 102 hid_err(report->device, "too many fields in report\n"); 103 return NULL; 104 } 105 106 field = kzalloc((sizeof(struct hid_field) + 107 usages * sizeof(struct hid_usage) + 108 values * sizeof(unsigned)), GFP_KERNEL); 109 if (!field) 110 return NULL; 111 112 field->index = report->maxfield++; 113 report->field[field->index] = field; 114 field->usage = (struct hid_usage *)(field + 1); 115 field->value = (s32 *)(field->usage + usages); 116 field->report = report; 117 118 return field; 119 } 120 121 /* 122 * Open a collection. The type/usage is pushed on the stack. 123 */ 124 125 static int open_collection(struct hid_parser *parser, unsigned type) 126 { 127 struct hid_collection *collection; 128 unsigned usage; 129 int collection_index; 130 131 usage = parser->local.usage[0]; 132 133 if (parser->collection_stack_ptr == parser->collection_stack_size) { 134 unsigned int *collection_stack; 135 unsigned int new_size = parser->collection_stack_size + 136 HID_COLLECTION_STACK_SIZE; 137 138 collection_stack = krealloc(parser->collection_stack, 139 new_size * sizeof(unsigned int), 140 GFP_KERNEL); 141 if (!collection_stack) 142 return -ENOMEM; 143 144 parser->collection_stack = collection_stack; 145 parser->collection_stack_size = new_size; 146 } 147 148 if (parser->device->maxcollection == parser->device->collection_size) { 149 collection = kmalloc( 150 array3_size(sizeof(struct hid_collection), 151 parser->device->collection_size, 152 2), 153 GFP_KERNEL); 154 if (collection == NULL) { 155 hid_err(parser->device, "failed to reallocate collection array\n"); 156 return -ENOMEM; 157 } 158 memcpy(collection, parser->device->collection, 159 sizeof(struct hid_collection) * 160 parser->device->collection_size); 161 memset(collection + parser->device->collection_size, 0, 162 sizeof(struct hid_collection) * 163 parser->device->collection_size); 164 kfree(parser->device->collection); 165 parser->device->collection = collection; 166 parser->device->collection_size *= 2; 167 } 168 169 parser->collection_stack[parser->collection_stack_ptr++] = 170 parser->device->maxcollection; 171 172 collection_index = parser->device->maxcollection++; 173 collection = parser->device->collection + collection_index; 174 collection->type = type; 175 collection->usage = usage; 176 collection->level = parser->collection_stack_ptr - 1; 177 collection->parent_idx = (collection->level == 0) ? -1 : 178 parser->collection_stack[collection->level - 1]; 179 180 if (type == HID_COLLECTION_APPLICATION) 181 parser->device->maxapplication++; 182 183 return 0; 184 } 185 186 /* 187 * Close a collection. 188 */ 189 190 static int close_collection(struct hid_parser *parser) 191 { 192 if (!parser->collection_stack_ptr) { 193 hid_err(parser->device, "collection stack underflow\n"); 194 return -EINVAL; 195 } 196 parser->collection_stack_ptr--; 197 return 0; 198 } 199 200 /* 201 * Climb up the stack, search for the specified collection type 202 * and return the usage. 203 */ 204 205 static unsigned hid_lookup_collection(struct hid_parser *parser, unsigned type) 206 { 207 struct hid_collection *collection = parser->device->collection; 208 int n; 209 210 for (n = parser->collection_stack_ptr - 1; n >= 0; n--) { 211 unsigned index = parser->collection_stack[n]; 212 if (collection[index].type == type) 213 return collection[index].usage; 214 } 215 return 0; /* we know nothing about this usage type */ 216 } 217 218 /* 219 * Add a usage to the temporary parser table. 220 */ 221 222 static int hid_add_usage(struct hid_parser *parser, unsigned usage, u8 size) 223 { 224 if (parser->local.usage_index >= HID_MAX_USAGES) { 225 hid_err(parser->device, "usage index exceeded\n"); 226 return -1; 227 } 228 parser->local.usage[parser->local.usage_index] = usage; 229 parser->local.usage_size[parser->local.usage_index] = size; 230 parser->local.collection_index[parser->local.usage_index] = 231 parser->collection_stack_ptr ? 232 parser->collection_stack[parser->collection_stack_ptr - 1] : 0; 233 parser->local.usage_index++; 234 return 0; 235 } 236 237 /* 238 * Register a new field for this report. 239 */ 240 241 static int hid_add_field(struct hid_parser *parser, unsigned report_type, unsigned flags) 242 { 243 struct hid_report *report; 244 struct hid_field *field; 245 unsigned int usages; 246 unsigned int offset; 247 unsigned int i; 248 unsigned int application; 249 250 application = hid_lookup_collection(parser, HID_COLLECTION_APPLICATION); 251 252 report = hid_register_report(parser->device, report_type, 253 parser->global.report_id, application); 254 if (!report) { 255 hid_err(parser->device, "hid_register_report failed\n"); 256 return -1; 257 } 258 259 /* Handle both signed and unsigned cases properly */ 260 if ((parser->global.logical_minimum < 0 && 261 parser->global.logical_maximum < 262 parser->global.logical_minimum) || 263 (parser->global.logical_minimum >= 0 && 264 (__u32)parser->global.logical_maximum < 265 (__u32)parser->global.logical_minimum)) { 266 dbg_hid("logical range invalid 0x%x 0x%x\n", 267 parser->global.logical_minimum, 268 parser->global.logical_maximum); 269 return -1; 270 } 271 272 offset = report->size; 273 report->size += parser->global.report_size * parser->global.report_count; 274 275 if (!parser->local.usage_index) /* Ignore padding fields */ 276 return 0; 277 278 usages = max_t(unsigned, parser->local.usage_index, 279 parser->global.report_count); 280 281 field = hid_register_field(report, usages, parser->global.report_count); 282 if (!field) 283 return 0; 284 285 field->physical = hid_lookup_collection(parser, HID_COLLECTION_PHYSICAL); 286 field->logical = hid_lookup_collection(parser, HID_COLLECTION_LOGICAL); 287 field->application = application; 288 289 for (i = 0; i < usages; i++) { 290 unsigned j = i; 291 /* Duplicate the last usage we parsed if we have excess values */ 292 if (i >= parser->local.usage_index) 293 j = parser->local.usage_index - 1; 294 field->usage[i].hid = parser->local.usage[j]; 295 field->usage[i].collection_index = 296 parser->local.collection_index[j]; 297 field->usage[i].usage_index = i; 298 field->usage[i].resolution_multiplier = 1; 299 } 300 301 field->maxusage = usages; 302 field->flags = flags; 303 field->report_offset = offset; 304 field->report_type = report_type; 305 field->report_size = parser->global.report_size; 306 field->report_count = parser->global.report_count; 307 field->logical_minimum = parser->global.logical_minimum; 308 field->logical_maximum = parser->global.logical_maximum; 309 field->physical_minimum = parser->global.physical_minimum; 310 field->physical_maximum = parser->global.physical_maximum; 311 field->unit_exponent = parser->global.unit_exponent; 312 field->unit = parser->global.unit; 313 314 return 0; 315 } 316 317 /* 318 * Read data value from item. 319 */ 320 321 static u32 item_udata(struct hid_item *item) 322 { 323 switch (item->size) { 324 case 1: return item->data.u8; 325 case 2: return item->data.u16; 326 case 4: return item->data.u32; 327 } 328 return 0; 329 } 330 331 static s32 item_sdata(struct hid_item *item) 332 { 333 switch (item->size) { 334 case 1: return item->data.s8; 335 case 2: return item->data.s16; 336 case 4: return item->data.s32; 337 } 338 return 0; 339 } 340 341 /* 342 * Process a global item. 343 */ 344 345 static int hid_parser_global(struct hid_parser *parser, struct hid_item *item) 346 { 347 __s32 raw_value; 348 switch (item->tag) { 349 case HID_GLOBAL_ITEM_TAG_PUSH: 350 351 if (parser->global_stack_ptr == HID_GLOBAL_STACK_SIZE) { 352 hid_err(parser->device, "global environment stack overflow\n"); 353 return -1; 354 } 355 356 memcpy(parser->global_stack + parser->global_stack_ptr++, 357 &parser->global, sizeof(struct hid_global)); 358 return 0; 359 360 case HID_GLOBAL_ITEM_TAG_POP: 361 362 if (!parser->global_stack_ptr) { 363 hid_err(parser->device, "global environment stack underflow\n"); 364 return -1; 365 } 366 367 memcpy(&parser->global, parser->global_stack + 368 --parser->global_stack_ptr, sizeof(struct hid_global)); 369 return 0; 370 371 case HID_GLOBAL_ITEM_TAG_USAGE_PAGE: 372 parser->global.usage_page = item_udata(item); 373 return 0; 374 375 case HID_GLOBAL_ITEM_TAG_LOGICAL_MINIMUM: 376 parser->global.logical_minimum = item_sdata(item); 377 return 0; 378 379 case HID_GLOBAL_ITEM_TAG_LOGICAL_MAXIMUM: 380 if (parser->global.logical_minimum < 0) 381 parser->global.logical_maximum = item_sdata(item); 382 else 383 parser->global.logical_maximum = item_udata(item); 384 return 0; 385 386 case HID_GLOBAL_ITEM_TAG_PHYSICAL_MINIMUM: 387 parser->global.physical_minimum = item_sdata(item); 388 return 0; 389 390 case HID_GLOBAL_ITEM_TAG_PHYSICAL_MAXIMUM: 391 if (parser->global.physical_minimum < 0) 392 parser->global.physical_maximum = item_sdata(item); 393 else 394 parser->global.physical_maximum = item_udata(item); 395 return 0; 396 397 case HID_GLOBAL_ITEM_TAG_UNIT_EXPONENT: 398 /* Many devices provide unit exponent as a two's complement 399 * nibble due to the common misunderstanding of HID 400 * specification 1.11, 6.2.2.7 Global Items. Attempt to handle 401 * both this and the standard encoding. */ 402 raw_value = item_sdata(item); 403 if (!(raw_value & 0xfffffff0)) 404 parser->global.unit_exponent = hid_snto32(raw_value, 4); 405 else 406 parser->global.unit_exponent = raw_value; 407 return 0; 408 409 case HID_GLOBAL_ITEM_TAG_UNIT: 410 parser->global.unit = item_udata(item); 411 return 0; 412 413 case HID_GLOBAL_ITEM_TAG_REPORT_SIZE: 414 parser->global.report_size = item_udata(item); 415 if (parser->global.report_size > 256) { 416 hid_err(parser->device, "invalid report_size %d\n", 417 parser->global.report_size); 418 return -1; 419 } 420 return 0; 421 422 case HID_GLOBAL_ITEM_TAG_REPORT_COUNT: 423 parser->global.report_count = item_udata(item); 424 if (parser->global.report_count > HID_MAX_USAGES) { 425 hid_err(parser->device, "invalid report_count %d\n", 426 parser->global.report_count); 427 return -1; 428 } 429 return 0; 430 431 case HID_GLOBAL_ITEM_TAG_REPORT_ID: 432 parser->global.report_id = item_udata(item); 433 if (parser->global.report_id == 0 || 434 parser->global.report_id >= HID_MAX_IDS) { 435 hid_err(parser->device, "report_id %u is invalid\n", 436 parser->global.report_id); 437 return -1; 438 } 439 return 0; 440 441 default: 442 hid_err(parser->device, "unknown global tag 0x%x\n", item->tag); 443 return -1; 444 } 445 } 446 447 /* 448 * Process a local item. 449 */ 450 451 static int hid_parser_local(struct hid_parser *parser, struct hid_item *item) 452 { 453 __u32 data; 454 unsigned n; 455 __u32 count; 456 457 data = item_udata(item); 458 459 switch (item->tag) { 460 case HID_LOCAL_ITEM_TAG_DELIMITER: 461 462 if (data) { 463 /* 464 * We treat items before the first delimiter 465 * as global to all usage sets (branch 0). 466 * In the moment we process only these global 467 * items and the first delimiter set. 468 */ 469 if (parser->local.delimiter_depth != 0) { 470 hid_err(parser->device, "nested delimiters\n"); 471 return -1; 472 } 473 parser->local.delimiter_depth++; 474 parser->local.delimiter_branch++; 475 } else { 476 if (parser->local.delimiter_depth < 1) { 477 hid_err(parser->device, "bogus close delimiter\n"); 478 return -1; 479 } 480 parser->local.delimiter_depth--; 481 } 482 return 0; 483 484 case HID_LOCAL_ITEM_TAG_USAGE: 485 486 if (parser->local.delimiter_branch > 1) { 487 dbg_hid("alternative usage ignored\n"); 488 return 0; 489 } 490 491 return hid_add_usage(parser, data, item->size); 492 493 case HID_LOCAL_ITEM_TAG_USAGE_MINIMUM: 494 495 if (parser->local.delimiter_branch > 1) { 496 dbg_hid("alternative usage ignored\n"); 497 return 0; 498 } 499 500 parser->local.usage_minimum = data; 501 return 0; 502 503 case HID_LOCAL_ITEM_TAG_USAGE_MAXIMUM: 504 505 if (parser->local.delimiter_branch > 1) { 506 dbg_hid("alternative usage ignored\n"); 507 return 0; 508 } 509 510 count = data - parser->local.usage_minimum; 511 if (count + parser->local.usage_index >= HID_MAX_USAGES) { 512 /* 513 * We do not warn if the name is not set, we are 514 * actually pre-scanning the device. 515 */ 516 if (dev_name(&parser->device->dev)) 517 hid_warn(parser->device, 518 "ignoring exceeding usage max\n"); 519 data = HID_MAX_USAGES - parser->local.usage_index + 520 parser->local.usage_minimum - 1; 521 if (data <= 0) { 522 hid_err(parser->device, 523 "no more usage index available\n"); 524 return -1; 525 } 526 } 527 528 for (n = parser->local.usage_minimum; n <= data; n++) 529 if (hid_add_usage(parser, n, item->size)) { 530 dbg_hid("hid_add_usage failed\n"); 531 return -1; 532 } 533 return 0; 534 535 default: 536 537 dbg_hid("unknown local item tag 0x%x\n", item->tag); 538 return 0; 539 } 540 return 0; 541 } 542 543 /* 544 * Concatenate Usage Pages into Usages where relevant: 545 * As per specification, 6.2.2.8: "When the parser encounters a main item it 546 * concatenates the last declared Usage Page with a Usage to form a complete 547 * usage value." 548 */ 549 550 static void hid_concatenate_usage_page(struct hid_parser *parser) 551 { 552 int i; 553 554 for (i = 0; i < parser->local.usage_index; i++) 555 if (parser->local.usage_size[i] <= 2) 556 parser->local.usage[i] += parser->global.usage_page << 16; 557 } 558 559 /* 560 * Process a main item. 561 */ 562 563 static int hid_parser_main(struct hid_parser *parser, struct hid_item *item) 564 { 565 __u32 data; 566 int ret; 567 568 hid_concatenate_usage_page(parser); 569 570 data = item_udata(item); 571 572 switch (item->tag) { 573 case HID_MAIN_ITEM_TAG_BEGIN_COLLECTION: 574 ret = open_collection(parser, data & 0xff); 575 break; 576 case HID_MAIN_ITEM_TAG_END_COLLECTION: 577 ret = close_collection(parser); 578 break; 579 case HID_MAIN_ITEM_TAG_INPUT: 580 ret = hid_add_field(parser, HID_INPUT_REPORT, data); 581 break; 582 case HID_MAIN_ITEM_TAG_OUTPUT: 583 ret = hid_add_field(parser, HID_OUTPUT_REPORT, data); 584 break; 585 case HID_MAIN_ITEM_TAG_FEATURE: 586 ret = hid_add_field(parser, HID_FEATURE_REPORT, data); 587 break; 588 default: 589 hid_warn(parser->device, "unknown main item tag 0x%x\n", item->tag); 590 ret = 0; 591 } 592 593 memset(&parser->local, 0, sizeof(parser->local)); /* Reset the local parser environment */ 594 595 return ret; 596 } 597 598 /* 599 * Process a reserved item. 600 */ 601 602 static int hid_parser_reserved(struct hid_parser *parser, struct hid_item *item) 603 { 604 dbg_hid("reserved item type, tag 0x%x\n", item->tag); 605 return 0; 606 } 607 608 /* 609 * Free a report and all registered fields. The field->usage and 610 * field->value table's are allocated behind the field, so we need 611 * only to free(field) itself. 612 */ 613 614 static void hid_free_report(struct hid_report *report) 615 { 616 unsigned n; 617 618 for (n = 0; n < report->maxfield; n++) 619 kfree(report->field[n]); 620 kfree(report); 621 } 622 623 /* 624 * Close report. This function returns the device 625 * state to the point prior to hid_open_report(). 626 */ 627 static void hid_close_report(struct hid_device *device) 628 { 629 unsigned i, j; 630 631 for (i = 0; i < HID_REPORT_TYPES; i++) { 632 struct hid_report_enum *report_enum = device->report_enum + i; 633 634 for (j = 0; j < HID_MAX_IDS; j++) { 635 struct hid_report *report = report_enum->report_id_hash[j]; 636 if (report) 637 hid_free_report(report); 638 } 639 memset(report_enum, 0, sizeof(*report_enum)); 640 INIT_LIST_HEAD(&report_enum->report_list); 641 } 642 643 kfree(device->rdesc); 644 device->rdesc = NULL; 645 device->rsize = 0; 646 647 kfree(device->collection); 648 device->collection = NULL; 649 device->collection_size = 0; 650 device->maxcollection = 0; 651 device->maxapplication = 0; 652 653 device->status &= ~HID_STAT_PARSED; 654 } 655 656 /* 657 * Free a device structure, all reports, and all fields. 658 */ 659 660 static void hid_device_release(struct device *dev) 661 { 662 struct hid_device *hid = to_hid_device(dev); 663 664 hid_close_report(hid); 665 kfree(hid->dev_rdesc); 666 kfree(hid); 667 } 668 669 /* 670 * Fetch a report description item from the data stream. We support long 671 * items, though they are not used yet. 672 */ 673 674 static u8 *fetch_item(__u8 *start, __u8 *end, struct hid_item *item) 675 { 676 u8 b; 677 678 if ((end - start) <= 0) 679 return NULL; 680 681 b = *start++; 682 683 item->type = (b >> 2) & 3; 684 item->tag = (b >> 4) & 15; 685 686 if (item->tag == HID_ITEM_TAG_LONG) { 687 688 item->format = HID_ITEM_FORMAT_LONG; 689 690 if ((end - start) < 2) 691 return NULL; 692 693 item->size = *start++; 694 item->tag = *start++; 695 696 if ((end - start) < item->size) 697 return NULL; 698 699 item->data.longdata = start; 700 start += item->size; 701 return start; 702 } 703 704 item->format = HID_ITEM_FORMAT_SHORT; 705 item->size = b & 3; 706 707 switch (item->size) { 708 case 0: 709 return start; 710 711 case 1: 712 if ((end - start) < 1) 713 return NULL; 714 item->data.u8 = *start++; 715 return start; 716 717 case 2: 718 if ((end - start) < 2) 719 return NULL; 720 item->data.u16 = get_unaligned_le16(start); 721 start = (__u8 *)((__le16 *)start + 1); 722 return start; 723 724 case 3: 725 item->size++; 726 if ((end - start) < 4) 727 return NULL; 728 item->data.u32 = get_unaligned_le32(start); 729 start = (__u8 *)((__le32 *)start + 1); 730 return start; 731 } 732 733 return NULL; 734 } 735 736 static void hid_scan_input_usage(struct hid_parser *parser, u32 usage) 737 { 738 struct hid_device *hid = parser->device; 739 740 if (usage == HID_DG_CONTACTID) 741 hid->group = HID_GROUP_MULTITOUCH; 742 } 743 744 static void hid_scan_feature_usage(struct hid_parser *parser, u32 usage) 745 { 746 if (usage == 0xff0000c5 && parser->global.report_count == 256 && 747 parser->global.report_size == 8) 748 parser->scan_flags |= HID_SCAN_FLAG_MT_WIN_8; 749 } 750 751 static void hid_scan_collection(struct hid_parser *parser, unsigned type) 752 { 753 struct hid_device *hid = parser->device; 754 int i; 755 756 if (((parser->global.usage_page << 16) == HID_UP_SENSOR) && 757 type == HID_COLLECTION_PHYSICAL) 758 hid->group = HID_GROUP_SENSOR_HUB; 759 760 if (hid->vendor == USB_VENDOR_ID_MICROSOFT && 761 hid->product == USB_DEVICE_ID_MS_POWER_COVER && 762 hid->group == HID_GROUP_MULTITOUCH) 763 hid->group = HID_GROUP_GENERIC; 764 765 if ((parser->global.usage_page << 16) == HID_UP_GENDESK) 766 for (i = 0; i < parser->local.usage_index; i++) 767 if (parser->local.usage[i] == HID_GD_POINTER) 768 parser->scan_flags |= HID_SCAN_FLAG_GD_POINTER; 769 770 if ((parser->global.usage_page << 16) >= HID_UP_MSVENDOR) 771 parser->scan_flags |= HID_SCAN_FLAG_VENDOR_SPECIFIC; 772 } 773 774 static int hid_scan_main(struct hid_parser *parser, struct hid_item *item) 775 { 776 __u32 data; 777 int i; 778 779 hid_concatenate_usage_page(parser); 780 781 data = item_udata(item); 782 783 switch (item->tag) { 784 case HID_MAIN_ITEM_TAG_BEGIN_COLLECTION: 785 hid_scan_collection(parser, data & 0xff); 786 break; 787 case HID_MAIN_ITEM_TAG_END_COLLECTION: 788 break; 789 case HID_MAIN_ITEM_TAG_INPUT: 790 /* ignore constant inputs, they will be ignored by hid-input */ 791 if (data & HID_MAIN_ITEM_CONSTANT) 792 break; 793 for (i = 0; i < parser->local.usage_index; i++) 794 hid_scan_input_usage(parser, parser->local.usage[i]); 795 break; 796 case HID_MAIN_ITEM_TAG_OUTPUT: 797 break; 798 case HID_MAIN_ITEM_TAG_FEATURE: 799 for (i = 0; i < parser->local.usage_index; i++) 800 hid_scan_feature_usage(parser, parser->local.usage[i]); 801 break; 802 } 803 804 /* Reset the local parser environment */ 805 memset(&parser->local, 0, sizeof(parser->local)); 806 807 return 0; 808 } 809 810 /* 811 * Scan a report descriptor before the device is added to the bus. 812 * Sets device groups and other properties that determine what driver 813 * to load. 814 */ 815 static int hid_scan_report(struct hid_device *hid) 816 { 817 struct hid_parser *parser; 818 struct hid_item item; 819 __u8 *start = hid->dev_rdesc; 820 __u8 *end = start + hid->dev_rsize; 821 static int (*dispatch_type[])(struct hid_parser *parser, 822 struct hid_item *item) = { 823 hid_scan_main, 824 hid_parser_global, 825 hid_parser_local, 826 hid_parser_reserved 827 }; 828 829 parser = vzalloc(sizeof(struct hid_parser)); 830 if (!parser) 831 return -ENOMEM; 832 833 parser->device = hid; 834 hid->group = HID_GROUP_GENERIC; 835 836 /* 837 * The parsing is simpler than the one in hid_open_report() as we should 838 * be robust against hid errors. Those errors will be raised by 839 * hid_open_report() anyway. 840 */ 841 while ((start = fetch_item(start, end, &item)) != NULL) 842 dispatch_type[item.type](parser, &item); 843 844 /* 845 * Handle special flags set during scanning. 846 */ 847 if ((parser->scan_flags & HID_SCAN_FLAG_MT_WIN_8) && 848 (hid->group == HID_GROUP_MULTITOUCH)) 849 hid->group = HID_GROUP_MULTITOUCH_WIN_8; 850 851 /* 852 * Vendor specific handlings 853 */ 854 switch (hid->vendor) { 855 case USB_VENDOR_ID_WACOM: 856 hid->group = HID_GROUP_WACOM; 857 break; 858 case USB_VENDOR_ID_SYNAPTICS: 859 if (hid->group == HID_GROUP_GENERIC) 860 if ((parser->scan_flags & HID_SCAN_FLAG_VENDOR_SPECIFIC) 861 && (parser->scan_flags & HID_SCAN_FLAG_GD_POINTER)) 862 /* 863 * hid-rmi should take care of them, 864 * not hid-generic 865 */ 866 hid->group = HID_GROUP_RMI; 867 break; 868 } 869 870 kfree(parser->collection_stack); 871 vfree(parser); 872 return 0; 873 } 874 875 /** 876 * hid_parse_report - parse device report 877 * 878 * @device: hid device 879 * @start: report start 880 * @size: report size 881 * 882 * Allocate the device report as read by the bus driver. This function should 883 * only be called from parse() in ll drivers. 884 */ 885 int hid_parse_report(struct hid_device *hid, __u8 *start, unsigned size) 886 { 887 hid->dev_rdesc = kmemdup(start, size, GFP_KERNEL); 888 if (!hid->dev_rdesc) 889 return -ENOMEM; 890 hid->dev_rsize = size; 891 return 0; 892 } 893 EXPORT_SYMBOL_GPL(hid_parse_report); 894 895 static const char * const hid_report_names[] = { 896 "HID_INPUT_REPORT", 897 "HID_OUTPUT_REPORT", 898 "HID_FEATURE_REPORT", 899 }; 900 /** 901 * hid_validate_values - validate existing device report's value indexes 902 * 903 * @device: hid device 904 * @type: which report type to examine 905 * @id: which report ID to examine (0 for first) 906 * @field_index: which report field to examine 907 * @report_counts: expected number of values 908 * 909 * Validate the number of values in a given field of a given report, after 910 * parsing. 911 */ 912 struct hid_report *hid_validate_values(struct hid_device *hid, 913 unsigned int type, unsigned int id, 914 unsigned int field_index, 915 unsigned int report_counts) 916 { 917 struct hid_report *report; 918 919 if (type > HID_FEATURE_REPORT) { 920 hid_err(hid, "invalid HID report type %u\n", type); 921 return NULL; 922 } 923 924 if (id >= HID_MAX_IDS) { 925 hid_err(hid, "invalid HID report id %u\n", id); 926 return NULL; 927 } 928 929 /* 930 * Explicitly not using hid_get_report() here since it depends on 931 * ->numbered being checked, which may not always be the case when 932 * drivers go to access report values. 933 */ 934 if (id == 0) { 935 /* 936 * Validating on id 0 means we should examine the first 937 * report in the list. 938 */ 939 report = list_entry( 940 hid->report_enum[type].report_list.next, 941 struct hid_report, list); 942 } else { 943 report = hid->report_enum[type].report_id_hash[id]; 944 } 945 if (!report) { 946 hid_err(hid, "missing %s %u\n", hid_report_names[type], id); 947 return NULL; 948 } 949 if (report->maxfield <= field_index) { 950 hid_err(hid, "not enough fields in %s %u\n", 951 hid_report_names[type], id); 952 return NULL; 953 } 954 if (report->field[field_index]->report_count < report_counts) { 955 hid_err(hid, "not enough values in %s %u field %u\n", 956 hid_report_names[type], id, field_index); 957 return NULL; 958 } 959 return report; 960 } 961 EXPORT_SYMBOL_GPL(hid_validate_values); 962 963 static int hid_calculate_multiplier(struct hid_device *hid, 964 struct hid_field *multiplier) 965 { 966 int m; 967 __s32 v = *multiplier->value; 968 __s32 lmin = multiplier->logical_minimum; 969 __s32 lmax = multiplier->logical_maximum; 970 __s32 pmin = multiplier->physical_minimum; 971 __s32 pmax = multiplier->physical_maximum; 972 973 /* 974 * "Because OS implementations will generally divide the control's 975 * reported count by the Effective Resolution Multiplier, designers 976 * should take care not to establish a potential Effective 977 * Resolution Multiplier of zero." 978 * HID Usage Table, v1.12, Section 4.3.1, p31 979 */ 980 if (lmax - lmin == 0) 981 return 1; 982 /* 983 * Handling the unit exponent is left as an exercise to whoever 984 * finds a device where that exponent is not 0. 985 */ 986 m = ((v - lmin)/(lmax - lmin) * (pmax - pmin) + pmin); 987 if (unlikely(multiplier->unit_exponent != 0)) { 988 hid_warn(hid, 989 "unsupported Resolution Multiplier unit exponent %d\n", 990 multiplier->unit_exponent); 991 } 992 993 /* There are no devices with an effective multiplier > 255 */ 994 if (unlikely(m == 0 || m > 255 || m < -255)) { 995 hid_warn(hid, "unsupported Resolution Multiplier %d\n", m); 996 m = 1; 997 } 998 999 return m; 1000 } 1001 1002 static void hid_apply_multiplier_to_field(struct hid_device *hid, 1003 struct hid_field *field, 1004 struct hid_collection *multiplier_collection, 1005 int effective_multiplier) 1006 { 1007 struct hid_collection *collection; 1008 struct hid_usage *usage; 1009 int i; 1010 1011 /* 1012 * If multiplier_collection is NULL, the multiplier applies 1013 * to all fields in the report. 1014 * Otherwise, it is the Logical Collection the multiplier applies to 1015 * but our field may be in a subcollection of that collection. 1016 */ 1017 for (i = 0; i < field->maxusage; i++) { 1018 usage = &field->usage[i]; 1019 1020 collection = &hid->collection[usage->collection_index]; 1021 while (collection->parent_idx != -1 && 1022 collection != multiplier_collection) 1023 collection = &hid->collection[collection->parent_idx]; 1024 1025 if (collection->parent_idx != -1 || 1026 multiplier_collection == NULL) 1027 usage->resolution_multiplier = effective_multiplier; 1028 1029 } 1030 } 1031 1032 static void hid_apply_multiplier(struct hid_device *hid, 1033 struct hid_field *multiplier) 1034 { 1035 struct hid_report_enum *rep_enum; 1036 struct hid_report *rep; 1037 struct hid_field *field; 1038 struct hid_collection *multiplier_collection; 1039 int effective_multiplier; 1040 int i; 1041 1042 /* 1043 * "The Resolution Multiplier control must be contained in the same 1044 * Logical Collection as the control(s) to which it is to be applied. 1045 * If no Resolution Multiplier is defined, then the Resolution 1046 * Multiplier defaults to 1. If more than one control exists in a 1047 * Logical Collection, the Resolution Multiplier is associated with 1048 * all controls in the collection. If no Logical Collection is 1049 * defined, the Resolution Multiplier is associated with all 1050 * controls in the report." 1051 * HID Usage Table, v1.12, Section 4.3.1, p30 1052 * 1053 * Thus, search from the current collection upwards until we find a 1054 * logical collection. Then search all fields for that same parent 1055 * collection. Those are the fields the multiplier applies to. 1056 * 1057 * If we have more than one multiplier, it will overwrite the 1058 * applicable fields later. 1059 */ 1060 multiplier_collection = &hid->collection[multiplier->usage->collection_index]; 1061 while (multiplier_collection->parent_idx != -1 && 1062 multiplier_collection->type != HID_COLLECTION_LOGICAL) 1063 multiplier_collection = &hid->collection[multiplier_collection->parent_idx]; 1064 1065 effective_multiplier = hid_calculate_multiplier(hid, multiplier); 1066 1067 rep_enum = &hid->report_enum[HID_INPUT_REPORT]; 1068 list_for_each_entry(rep, &rep_enum->report_list, list) { 1069 for (i = 0; i < rep->maxfield; i++) { 1070 field = rep->field[i]; 1071 hid_apply_multiplier_to_field(hid, field, 1072 multiplier_collection, 1073 effective_multiplier); 1074 } 1075 } 1076 } 1077 1078 /* 1079 * hid_setup_resolution_multiplier - set up all resolution multipliers 1080 * 1081 * @device: hid device 1082 * 1083 * Search for all Resolution Multiplier Feature Reports and apply their 1084 * value to all matching Input items. This only updates the internal struct 1085 * fields. 1086 * 1087 * The Resolution Multiplier is applied by the hardware. If the multiplier 1088 * is anything other than 1, the hardware will send pre-multiplied events 1089 * so that the same physical interaction generates an accumulated 1090 * accumulated_value = value * * multiplier 1091 * This may be achieved by sending 1092 * - "value * multiplier" for each event, or 1093 * - "value" but "multiplier" times as frequently, or 1094 * - a combination of the above 1095 * The only guarantee is that the same physical interaction always generates 1096 * an accumulated 'value * multiplier'. 1097 * 1098 * This function must be called before any event processing and after 1099 * any SetRequest to the Resolution Multiplier. 1100 */ 1101 void hid_setup_resolution_multiplier(struct hid_device *hid) 1102 { 1103 struct hid_report_enum *rep_enum; 1104 struct hid_report *rep; 1105 struct hid_usage *usage; 1106 int i, j; 1107 1108 rep_enum = &hid->report_enum[HID_FEATURE_REPORT]; 1109 list_for_each_entry(rep, &rep_enum->report_list, list) { 1110 for (i = 0; i < rep->maxfield; i++) { 1111 /* Ignore if report count is out of bounds. */ 1112 if (rep->field[i]->report_count < 1) 1113 continue; 1114 1115 for (j = 0; j < rep->field[i]->maxusage; j++) { 1116 usage = &rep->field[i]->usage[j]; 1117 if (usage->hid == HID_GD_RESOLUTION_MULTIPLIER) 1118 hid_apply_multiplier(hid, 1119 rep->field[i]); 1120 } 1121 } 1122 } 1123 } 1124 EXPORT_SYMBOL_GPL(hid_setup_resolution_multiplier); 1125 1126 /** 1127 * hid_open_report - open a driver-specific device report 1128 * 1129 * @device: hid device 1130 * 1131 * Parse a report description into a hid_device structure. Reports are 1132 * enumerated, fields are attached to these reports. 1133 * 0 returned on success, otherwise nonzero error value. 1134 * 1135 * This function (or the equivalent hid_parse() macro) should only be 1136 * called from probe() in drivers, before starting the device. 1137 */ 1138 int hid_open_report(struct hid_device *device) 1139 { 1140 struct hid_parser *parser; 1141 struct hid_item item; 1142 unsigned int size; 1143 __u8 *start; 1144 __u8 *buf; 1145 __u8 *end; 1146 int ret; 1147 static int (*dispatch_type[])(struct hid_parser *parser, 1148 struct hid_item *item) = { 1149 hid_parser_main, 1150 hid_parser_global, 1151 hid_parser_local, 1152 hid_parser_reserved 1153 }; 1154 1155 if (WARN_ON(device->status & HID_STAT_PARSED)) 1156 return -EBUSY; 1157 1158 start = device->dev_rdesc; 1159 if (WARN_ON(!start)) 1160 return -ENODEV; 1161 size = device->dev_rsize; 1162 1163 buf = kmemdup(start, size, GFP_KERNEL); 1164 if (buf == NULL) 1165 return -ENOMEM; 1166 1167 if (device->driver->report_fixup) 1168 start = device->driver->report_fixup(device, buf, &size); 1169 else 1170 start = buf; 1171 1172 start = kmemdup(start, size, GFP_KERNEL); 1173 kfree(buf); 1174 if (start == NULL) 1175 return -ENOMEM; 1176 1177 device->rdesc = start; 1178 device->rsize = size; 1179 1180 parser = vzalloc(sizeof(struct hid_parser)); 1181 if (!parser) { 1182 ret = -ENOMEM; 1183 goto alloc_err; 1184 } 1185 1186 parser->device = device; 1187 1188 end = start + size; 1189 1190 device->collection = kcalloc(HID_DEFAULT_NUM_COLLECTIONS, 1191 sizeof(struct hid_collection), GFP_KERNEL); 1192 if (!device->collection) { 1193 ret = -ENOMEM; 1194 goto err; 1195 } 1196 device->collection_size = HID_DEFAULT_NUM_COLLECTIONS; 1197 1198 ret = -EINVAL; 1199 while ((start = fetch_item(start, end, &item)) != NULL) { 1200 1201 if (item.format != HID_ITEM_FORMAT_SHORT) { 1202 hid_err(device, "unexpected long global item\n"); 1203 goto err; 1204 } 1205 1206 if (dispatch_type[item.type](parser, &item)) { 1207 hid_err(device, "item %u %u %u %u parsing failed\n", 1208 item.format, (unsigned)item.size, 1209 (unsigned)item.type, (unsigned)item.tag); 1210 goto err; 1211 } 1212 1213 if (start == end) { 1214 if (parser->collection_stack_ptr) { 1215 hid_err(device, "unbalanced collection at end of report description\n"); 1216 goto err; 1217 } 1218 if (parser->local.delimiter_depth) { 1219 hid_err(device, "unbalanced delimiter at end of report description\n"); 1220 goto err; 1221 } 1222 1223 /* 1224 * fetch initial values in case the device's 1225 * default multiplier isn't the recommended 1 1226 */ 1227 hid_setup_resolution_multiplier(device); 1228 1229 kfree(parser->collection_stack); 1230 vfree(parser); 1231 device->status |= HID_STAT_PARSED; 1232 1233 return 0; 1234 } 1235 } 1236 1237 hid_err(device, "item fetching failed at offset %d\n", (int)(end - start)); 1238 err: 1239 kfree(parser->collection_stack); 1240 alloc_err: 1241 vfree(parser); 1242 hid_close_report(device); 1243 return ret; 1244 } 1245 EXPORT_SYMBOL_GPL(hid_open_report); 1246 1247 /* 1248 * Convert a signed n-bit integer to signed 32-bit integer. Common 1249 * cases are done through the compiler, the screwed things has to be 1250 * done by hand. 1251 */ 1252 1253 static s32 snto32(__u32 value, unsigned n) 1254 { 1255 switch (n) { 1256 case 8: return ((__s8)value); 1257 case 16: return ((__s16)value); 1258 case 32: return ((__s32)value); 1259 } 1260 return value & (1 << (n - 1)) ? value | (~0U << n) : value; 1261 } 1262 1263 s32 hid_snto32(__u32 value, unsigned n) 1264 { 1265 return snto32(value, n); 1266 } 1267 EXPORT_SYMBOL_GPL(hid_snto32); 1268 1269 /* 1270 * Convert a signed 32-bit integer to a signed n-bit integer. 1271 */ 1272 1273 static u32 s32ton(__s32 value, unsigned n) 1274 { 1275 s32 a = value >> (n - 1); 1276 if (a && a != -1) 1277 return value < 0 ? 1 << (n - 1) : (1 << (n - 1)) - 1; 1278 return value & ((1 << n) - 1); 1279 } 1280 1281 /* 1282 * Extract/implement a data field from/to a little endian report (bit array). 1283 * 1284 * Code sort-of follows HID spec: 1285 * http://www.usb.org/developers/hidpage/HID1_11.pdf 1286 * 1287 * While the USB HID spec allows unlimited length bit fields in "report 1288 * descriptors", most devices never use more than 16 bits. 1289 * One model of UPS is claimed to report "LINEV" as a 32-bit field. 1290 * Search linux-kernel and linux-usb-devel archives for "hid-core extract". 1291 */ 1292 1293 static u32 __extract(u8 *report, unsigned offset, int n) 1294 { 1295 unsigned int idx = offset / 8; 1296 unsigned int bit_nr = 0; 1297 unsigned int bit_shift = offset % 8; 1298 int bits_to_copy = 8 - bit_shift; 1299 u32 value = 0; 1300 u32 mask = n < 32 ? (1U << n) - 1 : ~0U; 1301 1302 while (n > 0) { 1303 value |= ((u32)report[idx] >> bit_shift) << bit_nr; 1304 n -= bits_to_copy; 1305 bit_nr += bits_to_copy; 1306 bits_to_copy = 8; 1307 bit_shift = 0; 1308 idx++; 1309 } 1310 1311 return value & mask; 1312 } 1313 1314 u32 hid_field_extract(const struct hid_device *hid, u8 *report, 1315 unsigned offset, unsigned n) 1316 { 1317 if (n > 256) { 1318 hid_warn(hid, "hid_field_extract() called with n (%d) > 256! (%s)\n", 1319 n, current->comm); 1320 n = 256; 1321 } 1322 1323 return __extract(report, offset, n); 1324 } 1325 EXPORT_SYMBOL_GPL(hid_field_extract); 1326 1327 /* 1328 * "implement" : set bits in a little endian bit stream. 1329 * Same concepts as "extract" (see comments above). 1330 * The data mangled in the bit stream remains in little endian 1331 * order the whole time. It make more sense to talk about 1332 * endianness of register values by considering a register 1333 * a "cached" copy of the little endian bit stream. 1334 */ 1335 1336 static void __implement(u8 *report, unsigned offset, int n, u32 value) 1337 { 1338 unsigned int idx = offset / 8; 1339 unsigned int bit_shift = offset % 8; 1340 int bits_to_set = 8 - bit_shift; 1341 1342 while (n - bits_to_set >= 0) { 1343 report[idx] &= ~(0xff << bit_shift); 1344 report[idx] |= value << bit_shift; 1345 value >>= bits_to_set; 1346 n -= bits_to_set; 1347 bits_to_set = 8; 1348 bit_shift = 0; 1349 idx++; 1350 } 1351 1352 /* last nibble */ 1353 if (n) { 1354 u8 bit_mask = ((1U << n) - 1); 1355 report[idx] &= ~(bit_mask << bit_shift); 1356 report[idx] |= value << bit_shift; 1357 } 1358 } 1359 1360 static void implement(const struct hid_device *hid, u8 *report, 1361 unsigned offset, unsigned n, u32 value) 1362 { 1363 if (unlikely(n > 32)) { 1364 hid_warn(hid, "%s() called with n (%d) > 32! (%s)\n", 1365 __func__, n, current->comm); 1366 n = 32; 1367 } else if (n < 32) { 1368 u32 m = (1U << n) - 1; 1369 1370 if (unlikely(value > m)) { 1371 hid_warn(hid, 1372 "%s() called with too large value %d (n: %d)! (%s)\n", 1373 __func__, value, n, current->comm); 1374 WARN_ON(1); 1375 value &= m; 1376 } 1377 } 1378 1379 __implement(report, offset, n, value); 1380 } 1381 1382 /* 1383 * Search an array for a value. 1384 */ 1385 1386 static int search(__s32 *array, __s32 value, unsigned n) 1387 { 1388 while (n--) { 1389 if (*array++ == value) 1390 return 0; 1391 } 1392 return -1; 1393 } 1394 1395 /** 1396 * hid_match_report - check if driver's raw_event should be called 1397 * 1398 * @hid: hid device 1399 * @report_type: type to match against 1400 * 1401 * compare hid->driver->report_table->report_type to report->type 1402 */ 1403 static int hid_match_report(struct hid_device *hid, struct hid_report *report) 1404 { 1405 const struct hid_report_id *id = hid->driver->report_table; 1406 1407 if (!id) /* NULL means all */ 1408 return 1; 1409 1410 for (; id->report_type != HID_TERMINATOR; id++) 1411 if (id->report_type == HID_ANY_ID || 1412 id->report_type == report->type) 1413 return 1; 1414 return 0; 1415 } 1416 1417 /** 1418 * hid_match_usage - check if driver's event should be called 1419 * 1420 * @hid: hid device 1421 * @usage: usage to match against 1422 * 1423 * compare hid->driver->usage_table->usage_{type,code} to 1424 * usage->usage_{type,code} 1425 */ 1426 static int hid_match_usage(struct hid_device *hid, struct hid_usage *usage) 1427 { 1428 const struct hid_usage_id *id = hid->driver->usage_table; 1429 1430 if (!id) /* NULL means all */ 1431 return 1; 1432 1433 for (; id->usage_type != HID_ANY_ID - 1; id++) 1434 if ((id->usage_hid == HID_ANY_ID || 1435 id->usage_hid == usage->hid) && 1436 (id->usage_type == HID_ANY_ID || 1437 id->usage_type == usage->type) && 1438 (id->usage_code == HID_ANY_ID || 1439 id->usage_code == usage->code)) 1440 return 1; 1441 return 0; 1442 } 1443 1444 static void hid_process_event(struct hid_device *hid, struct hid_field *field, 1445 struct hid_usage *usage, __s32 value, int interrupt) 1446 { 1447 struct hid_driver *hdrv = hid->driver; 1448 int ret; 1449 1450 if (!list_empty(&hid->debug_list)) 1451 hid_dump_input(hid, usage, value); 1452 1453 if (hdrv && hdrv->event && hid_match_usage(hid, usage)) { 1454 ret = hdrv->event(hid, field, usage, value); 1455 if (ret != 0) { 1456 if (ret < 0) 1457 hid_err(hid, "%s's event failed with %d\n", 1458 hdrv->name, ret); 1459 return; 1460 } 1461 } 1462 1463 if (hid->claimed & HID_CLAIMED_INPUT) 1464 hidinput_hid_event(hid, field, usage, value); 1465 if (hid->claimed & HID_CLAIMED_HIDDEV && interrupt && hid->hiddev_hid_event) 1466 hid->hiddev_hid_event(hid, field, usage, value); 1467 } 1468 1469 /* 1470 * Analyse a received field, and fetch the data from it. The field 1471 * content is stored for next report processing (we do differential 1472 * reporting to the layer). 1473 */ 1474 1475 static void hid_input_field(struct hid_device *hid, struct hid_field *field, 1476 __u8 *data, int interrupt) 1477 { 1478 unsigned n; 1479 unsigned count = field->report_count; 1480 unsigned offset = field->report_offset; 1481 unsigned size = field->report_size; 1482 __s32 min = field->logical_minimum; 1483 __s32 max = field->logical_maximum; 1484 __s32 *value; 1485 1486 value = kmalloc_array(count, sizeof(__s32), GFP_ATOMIC); 1487 if (!value) 1488 return; 1489 1490 for (n = 0; n < count; n++) { 1491 1492 value[n] = min < 0 ? 1493 snto32(hid_field_extract(hid, data, offset + n * size, 1494 size), size) : 1495 hid_field_extract(hid, data, offset + n * size, size); 1496 1497 /* Ignore report if ErrorRollOver */ 1498 if (!(field->flags & HID_MAIN_ITEM_VARIABLE) && 1499 value[n] >= min && value[n] <= max && 1500 value[n] - min < field->maxusage && 1501 field->usage[value[n] - min].hid == HID_UP_KEYBOARD + 1) 1502 goto exit; 1503 } 1504 1505 for (n = 0; n < count; n++) { 1506 1507 if (HID_MAIN_ITEM_VARIABLE & field->flags) { 1508 hid_process_event(hid, field, &field->usage[n], value[n], interrupt); 1509 continue; 1510 } 1511 1512 if (field->value[n] >= min && field->value[n] <= max 1513 && field->value[n] - min < field->maxusage 1514 && field->usage[field->value[n] - min].hid 1515 && search(value, field->value[n], count)) 1516 hid_process_event(hid, field, &field->usage[field->value[n] - min], 0, interrupt); 1517 1518 if (value[n] >= min && value[n] <= max 1519 && value[n] - min < field->maxusage 1520 && field->usage[value[n] - min].hid 1521 && search(field->value, value[n], count)) 1522 hid_process_event(hid, field, &field->usage[value[n] - min], 1, interrupt); 1523 } 1524 1525 memcpy(field->value, value, count * sizeof(__s32)); 1526 exit: 1527 kfree(value); 1528 } 1529 1530 /* 1531 * Output the field into the report. 1532 */ 1533 1534 static void hid_output_field(const struct hid_device *hid, 1535 struct hid_field *field, __u8 *data) 1536 { 1537 unsigned count = field->report_count; 1538 unsigned offset = field->report_offset; 1539 unsigned size = field->report_size; 1540 unsigned n; 1541 1542 for (n = 0; n < count; n++) { 1543 if (field->logical_minimum < 0) /* signed values */ 1544 implement(hid, data, offset + n * size, size, 1545 s32ton(field->value[n], size)); 1546 else /* unsigned values */ 1547 implement(hid, data, offset + n * size, size, 1548 field->value[n]); 1549 } 1550 } 1551 1552 /* 1553 * Create a report. 'data' has to be allocated using 1554 * hid_alloc_report_buf() so that it has proper size. 1555 */ 1556 1557 void hid_output_report(struct hid_report *report, __u8 *data) 1558 { 1559 unsigned n; 1560 1561 if (report->id > 0) 1562 *data++ = report->id; 1563 1564 memset(data, 0, ((report->size - 1) >> 3) + 1); 1565 for (n = 0; n < report->maxfield; n++) 1566 hid_output_field(report->device, report->field[n], data); 1567 } 1568 EXPORT_SYMBOL_GPL(hid_output_report); 1569 1570 /* 1571 * Allocator for buffer that is going to be passed to hid_output_report() 1572 */ 1573 u8 *hid_alloc_report_buf(struct hid_report *report, gfp_t flags) 1574 { 1575 /* 1576 * 7 extra bytes are necessary to achieve proper functionality 1577 * of implement() working on 8 byte chunks 1578 */ 1579 1580 u32 len = hid_report_len(report) + 7; 1581 1582 return kmalloc(len, flags); 1583 } 1584 EXPORT_SYMBOL_GPL(hid_alloc_report_buf); 1585 1586 /* 1587 * Set a field value. The report this field belongs to has to be 1588 * created and transferred to the device, to set this value in the 1589 * device. 1590 */ 1591 1592 int hid_set_field(struct hid_field *field, unsigned offset, __s32 value) 1593 { 1594 unsigned size; 1595 1596 if (!field) 1597 return -1; 1598 1599 size = field->report_size; 1600 1601 hid_dump_input(field->report->device, field->usage + offset, value); 1602 1603 if (offset >= field->report_count) { 1604 hid_err(field->report->device, "offset (%d) exceeds report_count (%d)\n", 1605 offset, field->report_count); 1606 return -1; 1607 } 1608 if (field->logical_minimum < 0) { 1609 if (value != snto32(s32ton(value, size), size)) { 1610 hid_err(field->report->device, "value %d is out of range\n", value); 1611 return -1; 1612 } 1613 } 1614 field->value[offset] = value; 1615 return 0; 1616 } 1617 EXPORT_SYMBOL_GPL(hid_set_field); 1618 1619 static struct hid_report *hid_get_report(struct hid_report_enum *report_enum, 1620 const u8 *data) 1621 { 1622 struct hid_report *report; 1623 unsigned int n = 0; /* Normally report number is 0 */ 1624 1625 /* Device uses numbered reports, data[0] is report number */ 1626 if (report_enum->numbered) 1627 n = *data; 1628 1629 report = report_enum->report_id_hash[n]; 1630 if (report == NULL) 1631 dbg_hid("undefined report_id %u received\n", n); 1632 1633 return report; 1634 } 1635 1636 /* 1637 * Implement a generic .request() callback, using .raw_request() 1638 * DO NOT USE in hid drivers directly, but through hid_hw_request instead. 1639 */ 1640 int __hid_request(struct hid_device *hid, struct hid_report *report, 1641 int reqtype) 1642 { 1643 char *buf; 1644 int ret; 1645 u32 len; 1646 1647 buf = hid_alloc_report_buf(report, GFP_KERNEL); 1648 if (!buf) 1649 return -ENOMEM; 1650 1651 len = hid_report_len(report); 1652 1653 if (reqtype == HID_REQ_SET_REPORT) 1654 hid_output_report(report, buf); 1655 1656 ret = hid->ll_driver->raw_request(hid, report->id, buf, len, 1657 report->type, reqtype); 1658 if (ret < 0) { 1659 dbg_hid("unable to complete request: %d\n", ret); 1660 goto out; 1661 } 1662 1663 if (reqtype == HID_REQ_GET_REPORT) 1664 hid_input_report(hid, report->type, buf, ret, 0); 1665 1666 ret = 0; 1667 1668 out: 1669 kfree(buf); 1670 return ret; 1671 } 1672 EXPORT_SYMBOL_GPL(__hid_request); 1673 1674 int hid_report_raw_event(struct hid_device *hid, int type, u8 *data, u32 size, 1675 int interrupt) 1676 { 1677 struct hid_report_enum *report_enum = hid->report_enum + type; 1678 struct hid_report *report; 1679 struct hid_driver *hdrv; 1680 unsigned int a; 1681 u32 rsize, csize = size; 1682 u8 *cdata = data; 1683 int ret = 0; 1684 1685 report = hid_get_report(report_enum, data); 1686 if (!report) 1687 goto out; 1688 1689 if (report_enum->numbered) { 1690 cdata++; 1691 csize--; 1692 } 1693 1694 rsize = ((report->size - 1) >> 3) + 1; 1695 1696 if (rsize > HID_MAX_BUFFER_SIZE) 1697 rsize = HID_MAX_BUFFER_SIZE; 1698 1699 if (csize < rsize) { 1700 dbg_hid("report %d is too short, (%d < %d)\n", report->id, 1701 csize, rsize); 1702 memset(cdata + csize, 0, rsize - csize); 1703 } 1704 1705 if ((hid->claimed & HID_CLAIMED_HIDDEV) && hid->hiddev_report_event) 1706 hid->hiddev_report_event(hid, report); 1707 if (hid->claimed & HID_CLAIMED_HIDRAW) { 1708 ret = hidraw_report_event(hid, data, size); 1709 if (ret) 1710 goto out; 1711 } 1712 1713 if (hid->claimed != HID_CLAIMED_HIDRAW && report->maxfield) { 1714 for (a = 0; a < report->maxfield; a++) 1715 hid_input_field(hid, report->field[a], cdata, interrupt); 1716 hdrv = hid->driver; 1717 if (hdrv && hdrv->report) 1718 hdrv->report(hid, report); 1719 } 1720 1721 if (hid->claimed & HID_CLAIMED_INPUT) 1722 hidinput_report_event(hid, report); 1723 out: 1724 return ret; 1725 } 1726 EXPORT_SYMBOL_GPL(hid_report_raw_event); 1727 1728 /** 1729 * hid_input_report - report data from lower layer (usb, bt...) 1730 * 1731 * @hid: hid device 1732 * @type: HID report type (HID_*_REPORT) 1733 * @data: report contents 1734 * @size: size of data parameter 1735 * @interrupt: distinguish between interrupt and control transfers 1736 * 1737 * This is data entry for lower layers. 1738 */ 1739 int hid_input_report(struct hid_device *hid, int type, u8 *data, u32 size, int interrupt) 1740 { 1741 struct hid_report_enum *report_enum; 1742 struct hid_driver *hdrv; 1743 struct hid_report *report; 1744 int ret = 0; 1745 1746 if (!hid) 1747 return -ENODEV; 1748 1749 if (down_trylock(&hid->driver_input_lock)) 1750 return -EBUSY; 1751 1752 if (!hid->driver) { 1753 ret = -ENODEV; 1754 goto unlock; 1755 } 1756 report_enum = hid->report_enum + type; 1757 hdrv = hid->driver; 1758 1759 if (!size) { 1760 dbg_hid("empty report\n"); 1761 ret = -1; 1762 goto unlock; 1763 } 1764 1765 /* Avoid unnecessary overhead if debugfs is disabled */ 1766 if (!list_empty(&hid->debug_list)) 1767 hid_dump_report(hid, type, data, size); 1768 1769 report = hid_get_report(report_enum, data); 1770 1771 if (!report) { 1772 ret = -1; 1773 goto unlock; 1774 } 1775 1776 if (hdrv && hdrv->raw_event && hid_match_report(hid, report)) { 1777 ret = hdrv->raw_event(hid, report, data, size); 1778 if (ret < 0) 1779 goto unlock; 1780 } 1781 1782 ret = hid_report_raw_event(hid, type, data, size, interrupt); 1783 1784 unlock: 1785 up(&hid->driver_input_lock); 1786 return ret; 1787 } 1788 EXPORT_SYMBOL_GPL(hid_input_report); 1789 1790 bool hid_match_one_id(const struct hid_device *hdev, 1791 const struct hid_device_id *id) 1792 { 1793 return (id->bus == HID_BUS_ANY || id->bus == hdev->bus) && 1794 (id->group == HID_GROUP_ANY || id->group == hdev->group) && 1795 (id->vendor == HID_ANY_ID || id->vendor == hdev->vendor) && 1796 (id->product == HID_ANY_ID || id->product == hdev->product); 1797 } 1798 1799 const struct hid_device_id *hid_match_id(const struct hid_device *hdev, 1800 const struct hid_device_id *id) 1801 { 1802 for (; id->bus; id++) 1803 if (hid_match_one_id(hdev, id)) 1804 return id; 1805 1806 return NULL; 1807 } 1808 1809 static const struct hid_device_id hid_hiddev_list[] = { 1810 { HID_USB_DEVICE(USB_VENDOR_ID_MGE, USB_DEVICE_ID_MGE_UPS) }, 1811 { HID_USB_DEVICE(USB_VENDOR_ID_MGE, USB_DEVICE_ID_MGE_UPS1) }, 1812 { } 1813 }; 1814 1815 static bool hid_hiddev(struct hid_device *hdev) 1816 { 1817 return !!hid_match_id(hdev, hid_hiddev_list); 1818 } 1819 1820 1821 static ssize_t 1822 read_report_descriptor(struct file *filp, struct kobject *kobj, 1823 struct bin_attribute *attr, 1824 char *buf, loff_t off, size_t count) 1825 { 1826 struct device *dev = kobj_to_dev(kobj); 1827 struct hid_device *hdev = to_hid_device(dev); 1828 1829 if (off >= hdev->rsize) 1830 return 0; 1831 1832 if (off + count > hdev->rsize) 1833 count = hdev->rsize - off; 1834 1835 memcpy(buf, hdev->rdesc + off, count); 1836 1837 return count; 1838 } 1839 1840 static ssize_t 1841 show_country(struct device *dev, struct device_attribute *attr, 1842 char *buf) 1843 { 1844 struct hid_device *hdev = to_hid_device(dev); 1845 1846 return sprintf(buf, "%02x\n", hdev->country & 0xff); 1847 } 1848 1849 static struct bin_attribute dev_bin_attr_report_desc = { 1850 .attr = { .name = "report_descriptor", .mode = 0444 }, 1851 .read = read_report_descriptor, 1852 .size = HID_MAX_DESCRIPTOR_SIZE, 1853 }; 1854 1855 static const struct device_attribute dev_attr_country = { 1856 .attr = { .name = "country", .mode = 0444 }, 1857 .show = show_country, 1858 }; 1859 1860 int hid_connect(struct hid_device *hdev, unsigned int connect_mask) 1861 { 1862 static const char *types[] = { "Device", "Pointer", "Mouse", "Device", 1863 "Joystick", "Gamepad", "Keyboard", "Keypad", 1864 "Multi-Axis Controller" 1865 }; 1866 const char *type, *bus; 1867 char buf[64] = ""; 1868 unsigned int i; 1869 int len; 1870 int ret; 1871 1872 if (hdev->quirks & HID_QUIRK_HIDDEV_FORCE) 1873 connect_mask |= (HID_CONNECT_HIDDEV_FORCE | HID_CONNECT_HIDDEV); 1874 if (hdev->quirks & HID_QUIRK_HIDINPUT_FORCE) 1875 connect_mask |= HID_CONNECT_HIDINPUT_FORCE; 1876 if (hdev->bus != BUS_USB) 1877 connect_mask &= ~HID_CONNECT_HIDDEV; 1878 if (hid_hiddev(hdev)) 1879 connect_mask |= HID_CONNECT_HIDDEV_FORCE; 1880 1881 if ((connect_mask & HID_CONNECT_HIDINPUT) && !hidinput_connect(hdev, 1882 connect_mask & HID_CONNECT_HIDINPUT_FORCE)) 1883 hdev->claimed |= HID_CLAIMED_INPUT; 1884 1885 if ((connect_mask & HID_CONNECT_HIDDEV) && hdev->hiddev_connect && 1886 !hdev->hiddev_connect(hdev, 1887 connect_mask & HID_CONNECT_HIDDEV_FORCE)) 1888 hdev->claimed |= HID_CLAIMED_HIDDEV; 1889 if ((connect_mask & HID_CONNECT_HIDRAW) && !hidraw_connect(hdev)) 1890 hdev->claimed |= HID_CLAIMED_HIDRAW; 1891 1892 if (connect_mask & HID_CONNECT_DRIVER) 1893 hdev->claimed |= HID_CLAIMED_DRIVER; 1894 1895 /* Drivers with the ->raw_event callback set are not required to connect 1896 * to any other listener. */ 1897 if (!hdev->claimed && !hdev->driver->raw_event) { 1898 hid_err(hdev, "device has no listeners, quitting\n"); 1899 return -ENODEV; 1900 } 1901 1902 if ((hdev->claimed & HID_CLAIMED_INPUT) && 1903 (connect_mask & HID_CONNECT_FF) && hdev->ff_init) 1904 hdev->ff_init(hdev); 1905 1906 len = 0; 1907 if (hdev->claimed & HID_CLAIMED_INPUT) 1908 len += sprintf(buf + len, "input"); 1909 if (hdev->claimed & HID_CLAIMED_HIDDEV) 1910 len += sprintf(buf + len, "%shiddev%d", len ? "," : "", 1911 ((struct hiddev *)hdev->hiddev)->minor); 1912 if (hdev->claimed & HID_CLAIMED_HIDRAW) 1913 len += sprintf(buf + len, "%shidraw%d", len ? "," : "", 1914 ((struct hidraw *)hdev->hidraw)->minor); 1915 1916 type = "Device"; 1917 for (i = 0; i < hdev->maxcollection; i++) { 1918 struct hid_collection *col = &hdev->collection[i]; 1919 if (col->type == HID_COLLECTION_APPLICATION && 1920 (col->usage & HID_USAGE_PAGE) == HID_UP_GENDESK && 1921 (col->usage & 0xffff) < ARRAY_SIZE(types)) { 1922 type = types[col->usage & 0xffff]; 1923 break; 1924 } 1925 } 1926 1927 switch (hdev->bus) { 1928 case BUS_USB: 1929 bus = "USB"; 1930 break; 1931 case BUS_BLUETOOTH: 1932 bus = "BLUETOOTH"; 1933 break; 1934 case BUS_I2C: 1935 bus = "I2C"; 1936 break; 1937 default: 1938 bus = "<UNKNOWN>"; 1939 } 1940 1941 ret = device_create_file(&hdev->dev, &dev_attr_country); 1942 if (ret) 1943 hid_warn(hdev, 1944 "can't create sysfs country code attribute err: %d\n", ret); 1945 1946 hid_info(hdev, "%s: %s HID v%x.%02x %s [%s] on %s\n", 1947 buf, bus, hdev->version >> 8, hdev->version & 0xff, 1948 type, hdev->name, hdev->phys); 1949 1950 return 0; 1951 } 1952 EXPORT_SYMBOL_GPL(hid_connect); 1953 1954 void hid_disconnect(struct hid_device *hdev) 1955 { 1956 device_remove_file(&hdev->dev, &dev_attr_country); 1957 if (hdev->claimed & HID_CLAIMED_INPUT) 1958 hidinput_disconnect(hdev); 1959 if (hdev->claimed & HID_CLAIMED_HIDDEV) 1960 hdev->hiddev_disconnect(hdev); 1961 if (hdev->claimed & HID_CLAIMED_HIDRAW) 1962 hidraw_disconnect(hdev); 1963 hdev->claimed = 0; 1964 } 1965 EXPORT_SYMBOL_GPL(hid_disconnect); 1966 1967 /** 1968 * hid_hw_start - start underlying HW 1969 * @hdev: hid device 1970 * @connect_mask: which outputs to connect, see HID_CONNECT_* 1971 * 1972 * Call this in probe function *after* hid_parse. This will setup HW 1973 * buffers and start the device (if not defeirred to device open). 1974 * hid_hw_stop must be called if this was successful. 1975 */ 1976 int hid_hw_start(struct hid_device *hdev, unsigned int connect_mask) 1977 { 1978 int error; 1979 1980 error = hdev->ll_driver->start(hdev); 1981 if (error) 1982 return error; 1983 1984 if (connect_mask) { 1985 error = hid_connect(hdev, connect_mask); 1986 if (error) { 1987 hdev->ll_driver->stop(hdev); 1988 return error; 1989 } 1990 } 1991 1992 return 0; 1993 } 1994 EXPORT_SYMBOL_GPL(hid_hw_start); 1995 1996 /** 1997 * hid_hw_stop - stop underlying HW 1998 * @hdev: hid device 1999 * 2000 * This is usually called from remove function or from probe when something 2001 * failed and hid_hw_start was called already. 2002 */ 2003 void hid_hw_stop(struct hid_device *hdev) 2004 { 2005 hid_disconnect(hdev); 2006 hdev->ll_driver->stop(hdev); 2007 } 2008 EXPORT_SYMBOL_GPL(hid_hw_stop); 2009 2010 /** 2011 * hid_hw_open - signal underlying HW to start delivering events 2012 * @hdev: hid device 2013 * 2014 * Tell underlying HW to start delivering events from the device. 2015 * This function should be called sometime after successful call 2016 * to hid_hw_start(). 2017 */ 2018 int hid_hw_open(struct hid_device *hdev) 2019 { 2020 int ret; 2021 2022 ret = mutex_lock_killable(&hdev->ll_open_lock); 2023 if (ret) 2024 return ret; 2025 2026 if (!hdev->ll_open_count++) { 2027 ret = hdev->ll_driver->open(hdev); 2028 if (ret) 2029 hdev->ll_open_count--; 2030 } 2031 2032 mutex_unlock(&hdev->ll_open_lock); 2033 return ret; 2034 } 2035 EXPORT_SYMBOL_GPL(hid_hw_open); 2036 2037 /** 2038 * hid_hw_close - signal underlaying HW to stop delivering events 2039 * 2040 * @hdev: hid device 2041 * 2042 * This function indicates that we are not interested in the events 2043 * from this device anymore. Delivery of events may or may not stop, 2044 * depending on the number of users still outstanding. 2045 */ 2046 void hid_hw_close(struct hid_device *hdev) 2047 { 2048 mutex_lock(&hdev->ll_open_lock); 2049 if (!--hdev->ll_open_count) 2050 hdev->ll_driver->close(hdev); 2051 mutex_unlock(&hdev->ll_open_lock); 2052 } 2053 EXPORT_SYMBOL_GPL(hid_hw_close); 2054 2055 struct hid_dynid { 2056 struct list_head list; 2057 struct hid_device_id id; 2058 }; 2059 2060 /** 2061 * store_new_id - add a new HID device ID to this driver and re-probe devices 2062 * @driver: target device driver 2063 * @buf: buffer for scanning device ID data 2064 * @count: input size 2065 * 2066 * Adds a new dynamic hid device ID to this driver, 2067 * and causes the driver to probe for all devices again. 2068 */ 2069 static ssize_t new_id_store(struct device_driver *drv, const char *buf, 2070 size_t count) 2071 { 2072 struct hid_driver *hdrv = to_hid_driver(drv); 2073 struct hid_dynid *dynid; 2074 __u32 bus, vendor, product; 2075 unsigned long driver_data = 0; 2076 int ret; 2077 2078 ret = sscanf(buf, "%x %x %x %lx", 2079 &bus, &vendor, &product, &driver_data); 2080 if (ret < 3) 2081 return -EINVAL; 2082 2083 dynid = kzalloc(sizeof(*dynid), GFP_KERNEL); 2084 if (!dynid) 2085 return -ENOMEM; 2086 2087 dynid->id.bus = bus; 2088 dynid->id.group = HID_GROUP_ANY; 2089 dynid->id.vendor = vendor; 2090 dynid->id.product = product; 2091 dynid->id.driver_data = driver_data; 2092 2093 spin_lock(&hdrv->dyn_lock); 2094 list_add_tail(&dynid->list, &hdrv->dyn_list); 2095 spin_unlock(&hdrv->dyn_lock); 2096 2097 ret = driver_attach(&hdrv->driver); 2098 2099 return ret ? : count; 2100 } 2101 static DRIVER_ATTR_WO(new_id); 2102 2103 static struct attribute *hid_drv_attrs[] = { 2104 &driver_attr_new_id.attr, 2105 NULL, 2106 }; 2107 ATTRIBUTE_GROUPS(hid_drv); 2108 2109 static void hid_free_dynids(struct hid_driver *hdrv) 2110 { 2111 struct hid_dynid *dynid, *n; 2112 2113 spin_lock(&hdrv->dyn_lock); 2114 list_for_each_entry_safe(dynid, n, &hdrv->dyn_list, list) { 2115 list_del(&dynid->list); 2116 kfree(dynid); 2117 } 2118 spin_unlock(&hdrv->dyn_lock); 2119 } 2120 2121 const struct hid_device_id *hid_match_device(struct hid_device *hdev, 2122 struct hid_driver *hdrv) 2123 { 2124 struct hid_dynid *dynid; 2125 2126 spin_lock(&hdrv->dyn_lock); 2127 list_for_each_entry(dynid, &hdrv->dyn_list, list) { 2128 if (hid_match_one_id(hdev, &dynid->id)) { 2129 spin_unlock(&hdrv->dyn_lock); 2130 return &dynid->id; 2131 } 2132 } 2133 spin_unlock(&hdrv->dyn_lock); 2134 2135 return hid_match_id(hdev, hdrv->id_table); 2136 } 2137 EXPORT_SYMBOL_GPL(hid_match_device); 2138 2139 static int hid_bus_match(struct device *dev, struct device_driver *drv) 2140 { 2141 struct hid_driver *hdrv = to_hid_driver(drv); 2142 struct hid_device *hdev = to_hid_device(dev); 2143 2144 return hid_match_device(hdev, hdrv) != NULL; 2145 } 2146 2147 /** 2148 * hid_compare_device_paths - check if both devices share the same path 2149 * @hdev_a: hid device 2150 * @hdev_b: hid device 2151 * @separator: char to use as separator 2152 * 2153 * Check if two devices share the same path up to the last occurrence of 2154 * the separator char. Both paths must exist (i.e., zero-length paths 2155 * don't match). 2156 */ 2157 bool hid_compare_device_paths(struct hid_device *hdev_a, 2158 struct hid_device *hdev_b, char separator) 2159 { 2160 int n1 = strrchr(hdev_a->phys, separator) - hdev_a->phys; 2161 int n2 = strrchr(hdev_b->phys, separator) - hdev_b->phys; 2162 2163 if (n1 != n2 || n1 <= 0 || n2 <= 0) 2164 return false; 2165 2166 return !strncmp(hdev_a->phys, hdev_b->phys, n1); 2167 } 2168 EXPORT_SYMBOL_GPL(hid_compare_device_paths); 2169 2170 static int hid_device_probe(struct device *dev) 2171 { 2172 struct hid_driver *hdrv = to_hid_driver(dev->driver); 2173 struct hid_device *hdev = to_hid_device(dev); 2174 const struct hid_device_id *id; 2175 int ret = 0; 2176 2177 if (down_interruptible(&hdev->driver_input_lock)) { 2178 ret = -EINTR; 2179 goto end; 2180 } 2181 hdev->io_started = false; 2182 2183 clear_bit(ffs(HID_STAT_REPROBED), &hdev->status); 2184 2185 if (!hdev->driver) { 2186 id = hid_match_device(hdev, hdrv); 2187 if (id == NULL) { 2188 ret = -ENODEV; 2189 goto unlock; 2190 } 2191 2192 if (hdrv->match) { 2193 if (!hdrv->match(hdev, hid_ignore_special_drivers)) { 2194 ret = -ENODEV; 2195 goto unlock; 2196 } 2197 } else { 2198 /* 2199 * hid-generic implements .match(), so if 2200 * hid_ignore_special_drivers is set, we can safely 2201 * return. 2202 */ 2203 if (hid_ignore_special_drivers) { 2204 ret = -ENODEV; 2205 goto unlock; 2206 } 2207 } 2208 2209 /* reset the quirks that has been previously set */ 2210 hdev->quirks = hid_lookup_quirk(hdev); 2211 hdev->driver = hdrv; 2212 if (hdrv->probe) { 2213 ret = hdrv->probe(hdev, id); 2214 } else { /* default probe */ 2215 ret = hid_open_report(hdev); 2216 if (!ret) 2217 ret = hid_hw_start(hdev, HID_CONNECT_DEFAULT); 2218 } 2219 if (ret) { 2220 hid_close_report(hdev); 2221 hdev->driver = NULL; 2222 } 2223 } 2224 unlock: 2225 if (!hdev->io_started) 2226 up(&hdev->driver_input_lock); 2227 end: 2228 return ret; 2229 } 2230 2231 static int hid_device_remove(struct device *dev) 2232 { 2233 struct hid_device *hdev = to_hid_device(dev); 2234 struct hid_driver *hdrv; 2235 int ret = 0; 2236 2237 if (down_interruptible(&hdev->driver_input_lock)) { 2238 ret = -EINTR; 2239 goto end; 2240 } 2241 hdev->io_started = false; 2242 2243 hdrv = hdev->driver; 2244 if (hdrv) { 2245 if (hdrv->remove) 2246 hdrv->remove(hdev); 2247 else /* default remove */ 2248 hid_hw_stop(hdev); 2249 hid_close_report(hdev); 2250 hdev->driver = NULL; 2251 } 2252 2253 if (!hdev->io_started) 2254 up(&hdev->driver_input_lock); 2255 end: 2256 return ret; 2257 } 2258 2259 static ssize_t modalias_show(struct device *dev, struct device_attribute *a, 2260 char *buf) 2261 { 2262 struct hid_device *hdev = container_of(dev, struct hid_device, dev); 2263 2264 return scnprintf(buf, PAGE_SIZE, "hid:b%04Xg%04Xv%08Xp%08X\n", 2265 hdev->bus, hdev->group, hdev->vendor, hdev->product); 2266 } 2267 static DEVICE_ATTR_RO(modalias); 2268 2269 static struct attribute *hid_dev_attrs[] = { 2270 &dev_attr_modalias.attr, 2271 NULL, 2272 }; 2273 static struct bin_attribute *hid_dev_bin_attrs[] = { 2274 &dev_bin_attr_report_desc, 2275 NULL 2276 }; 2277 static const struct attribute_group hid_dev_group = { 2278 .attrs = hid_dev_attrs, 2279 .bin_attrs = hid_dev_bin_attrs, 2280 }; 2281 __ATTRIBUTE_GROUPS(hid_dev); 2282 2283 static int hid_uevent(struct device *dev, struct kobj_uevent_env *env) 2284 { 2285 struct hid_device *hdev = to_hid_device(dev); 2286 2287 if (add_uevent_var(env, "HID_ID=%04X:%08X:%08X", 2288 hdev->bus, hdev->vendor, hdev->product)) 2289 return -ENOMEM; 2290 2291 if (add_uevent_var(env, "HID_NAME=%s", hdev->name)) 2292 return -ENOMEM; 2293 2294 if (add_uevent_var(env, "HID_PHYS=%s", hdev->phys)) 2295 return -ENOMEM; 2296 2297 if (add_uevent_var(env, "HID_UNIQ=%s", hdev->uniq)) 2298 return -ENOMEM; 2299 2300 if (add_uevent_var(env, "MODALIAS=hid:b%04Xg%04Xv%08Xp%08X", 2301 hdev->bus, hdev->group, hdev->vendor, hdev->product)) 2302 return -ENOMEM; 2303 2304 return 0; 2305 } 2306 2307 struct bus_type hid_bus_type = { 2308 .name = "hid", 2309 .dev_groups = hid_dev_groups, 2310 .drv_groups = hid_drv_groups, 2311 .match = hid_bus_match, 2312 .probe = hid_device_probe, 2313 .remove = hid_device_remove, 2314 .uevent = hid_uevent, 2315 }; 2316 EXPORT_SYMBOL(hid_bus_type); 2317 2318 int hid_add_device(struct hid_device *hdev) 2319 { 2320 static atomic_t id = ATOMIC_INIT(0); 2321 int ret; 2322 2323 if (WARN_ON(hdev->status & HID_STAT_ADDED)) 2324 return -EBUSY; 2325 2326 hdev->quirks = hid_lookup_quirk(hdev); 2327 2328 /* we need to kill them here, otherwise they will stay allocated to 2329 * wait for coming driver */ 2330 if (hid_ignore(hdev)) 2331 return -ENODEV; 2332 2333 /* 2334 * Check for the mandatory transport channel. 2335 */ 2336 if (!hdev->ll_driver->raw_request) { 2337 hid_err(hdev, "transport driver missing .raw_request()\n"); 2338 return -EINVAL; 2339 } 2340 2341 /* 2342 * Read the device report descriptor once and use as template 2343 * for the driver-specific modifications. 2344 */ 2345 ret = hdev->ll_driver->parse(hdev); 2346 if (ret) 2347 return ret; 2348 if (!hdev->dev_rdesc) 2349 return -ENODEV; 2350 2351 /* 2352 * Scan generic devices for group information 2353 */ 2354 if (hid_ignore_special_drivers) { 2355 hdev->group = HID_GROUP_GENERIC; 2356 } else if (!hdev->group && 2357 !(hdev->quirks & HID_QUIRK_HAVE_SPECIAL_DRIVER)) { 2358 ret = hid_scan_report(hdev); 2359 if (ret) 2360 hid_warn(hdev, "bad device descriptor (%d)\n", ret); 2361 } 2362 2363 /* XXX hack, any other cleaner solution after the driver core 2364 * is converted to allow more than 20 bytes as the device name? */ 2365 dev_set_name(&hdev->dev, "%04X:%04X:%04X.%04X", hdev->bus, 2366 hdev->vendor, hdev->product, atomic_inc_return(&id)); 2367 2368 /* 2369 * Try loading the module for the device before the add, so that we do 2370 * not first have hid-generic binding only to have it replaced 2371 * immediately afterwards with a specialized driver. 2372 */ 2373 if (!current_is_async()) 2374 request_module("hid:b%04Xg%04Xv%08Xp%08X", hdev->bus, 2375 hdev->group, hdev->vendor, hdev->product); 2376 2377 hid_debug_register(hdev, dev_name(&hdev->dev)); 2378 ret = device_add(&hdev->dev); 2379 if (!ret) 2380 hdev->status |= HID_STAT_ADDED; 2381 else 2382 hid_debug_unregister(hdev); 2383 2384 return ret; 2385 } 2386 EXPORT_SYMBOL_GPL(hid_add_device); 2387 2388 /** 2389 * hid_allocate_device - allocate new hid device descriptor 2390 * 2391 * Allocate and initialize hid device, so that hid_destroy_device might be 2392 * used to free it. 2393 * 2394 * New hid_device pointer is returned on success, otherwise ERR_PTR encoded 2395 * error value. 2396 */ 2397 struct hid_device *hid_allocate_device(void) 2398 { 2399 struct hid_device *hdev; 2400 int ret = -ENOMEM; 2401 2402 hdev = kzalloc(sizeof(*hdev), GFP_KERNEL); 2403 if (hdev == NULL) 2404 return ERR_PTR(ret); 2405 2406 device_initialize(&hdev->dev); 2407 hdev->dev.release = hid_device_release; 2408 hdev->dev.bus = &hid_bus_type; 2409 device_enable_async_suspend(&hdev->dev); 2410 2411 hid_close_report(hdev); 2412 2413 init_waitqueue_head(&hdev->debug_wait); 2414 INIT_LIST_HEAD(&hdev->debug_list); 2415 spin_lock_init(&hdev->debug_list_lock); 2416 sema_init(&hdev->driver_input_lock, 1); 2417 mutex_init(&hdev->ll_open_lock); 2418 2419 return hdev; 2420 } 2421 EXPORT_SYMBOL_GPL(hid_allocate_device); 2422 2423 static void hid_remove_device(struct hid_device *hdev) 2424 { 2425 if (hdev->status & HID_STAT_ADDED) { 2426 device_del(&hdev->dev); 2427 hid_debug_unregister(hdev); 2428 hdev->status &= ~HID_STAT_ADDED; 2429 } 2430 kfree(hdev->dev_rdesc); 2431 hdev->dev_rdesc = NULL; 2432 hdev->dev_rsize = 0; 2433 } 2434 2435 /** 2436 * hid_destroy_device - free previously allocated device 2437 * 2438 * @hdev: hid device 2439 * 2440 * If you allocate hid_device through hid_allocate_device, you should ever 2441 * free by this function. 2442 */ 2443 void hid_destroy_device(struct hid_device *hdev) 2444 { 2445 hid_remove_device(hdev); 2446 put_device(&hdev->dev); 2447 } 2448 EXPORT_SYMBOL_GPL(hid_destroy_device); 2449 2450 2451 static int __hid_bus_reprobe_drivers(struct device *dev, void *data) 2452 { 2453 struct hid_driver *hdrv = data; 2454 struct hid_device *hdev = to_hid_device(dev); 2455 2456 if (hdev->driver == hdrv && 2457 !hdrv->match(hdev, hid_ignore_special_drivers) && 2458 !test_and_set_bit(ffs(HID_STAT_REPROBED), &hdev->status)) 2459 return device_reprobe(dev); 2460 2461 return 0; 2462 } 2463 2464 static int __hid_bus_driver_added(struct device_driver *drv, void *data) 2465 { 2466 struct hid_driver *hdrv = to_hid_driver(drv); 2467 2468 if (hdrv->match) { 2469 bus_for_each_dev(&hid_bus_type, NULL, hdrv, 2470 __hid_bus_reprobe_drivers); 2471 } 2472 2473 return 0; 2474 } 2475 2476 static int __bus_removed_driver(struct device_driver *drv, void *data) 2477 { 2478 return bus_rescan_devices(&hid_bus_type); 2479 } 2480 2481 int __hid_register_driver(struct hid_driver *hdrv, struct module *owner, 2482 const char *mod_name) 2483 { 2484 int ret; 2485 2486 hdrv->driver.name = hdrv->name; 2487 hdrv->driver.bus = &hid_bus_type; 2488 hdrv->driver.owner = owner; 2489 hdrv->driver.mod_name = mod_name; 2490 2491 INIT_LIST_HEAD(&hdrv->dyn_list); 2492 spin_lock_init(&hdrv->dyn_lock); 2493 2494 ret = driver_register(&hdrv->driver); 2495 2496 if (ret == 0) 2497 bus_for_each_drv(&hid_bus_type, NULL, NULL, 2498 __hid_bus_driver_added); 2499 2500 return ret; 2501 } 2502 EXPORT_SYMBOL_GPL(__hid_register_driver); 2503 2504 void hid_unregister_driver(struct hid_driver *hdrv) 2505 { 2506 driver_unregister(&hdrv->driver); 2507 hid_free_dynids(hdrv); 2508 2509 bus_for_each_drv(&hid_bus_type, NULL, hdrv, __bus_removed_driver); 2510 } 2511 EXPORT_SYMBOL_GPL(hid_unregister_driver); 2512 2513 int hid_check_keys_pressed(struct hid_device *hid) 2514 { 2515 struct hid_input *hidinput; 2516 int i; 2517 2518 if (!(hid->claimed & HID_CLAIMED_INPUT)) 2519 return 0; 2520 2521 list_for_each_entry(hidinput, &hid->inputs, list) { 2522 for (i = 0; i < BITS_TO_LONGS(KEY_MAX); i++) 2523 if (hidinput->input->key[i]) 2524 return 1; 2525 } 2526 2527 return 0; 2528 } 2529 2530 EXPORT_SYMBOL_GPL(hid_check_keys_pressed); 2531 2532 static int __init hid_init(void) 2533 { 2534 int ret; 2535 2536 if (hid_debug) 2537 pr_warn("hid_debug is now used solely for parser and driver debugging.\n" 2538 "debugfs is now used for inspecting the device (report descriptor, reports)\n"); 2539 2540 ret = bus_register(&hid_bus_type); 2541 if (ret) { 2542 pr_err("can't register hid bus\n"); 2543 goto err; 2544 } 2545 2546 ret = hidraw_init(); 2547 if (ret) 2548 goto err_bus; 2549 2550 hid_debug_init(); 2551 2552 return 0; 2553 err_bus: 2554 bus_unregister(&hid_bus_type); 2555 err: 2556 return ret; 2557 } 2558 2559 static void __exit hid_exit(void) 2560 { 2561 hid_debug_exit(); 2562 hidraw_exit(); 2563 bus_unregister(&hid_bus_type); 2564 hid_quirks_exit(HID_BUS_ANY); 2565 } 2566 2567 module_init(hid_init); 2568 module_exit(hid_exit); 2569 2570 MODULE_AUTHOR("Andreas Gal"); 2571 MODULE_AUTHOR("Vojtech Pavlik"); 2572 MODULE_AUTHOR("Jiri Kosina"); 2573 MODULE_LICENSE("GPL"); 2574