diff options
-rw-r--r-- | drivers/hid/Kconfig | 1 | ||||
-rw-r--r-- | drivers/hid/hid-core.c | 93 | ||||
-rw-r--r-- | drivers/hid/hid-debug.c | 15 | ||||
-rw-r--r-- | drivers/hid/hid-input.c | 26 | ||||
-rw-r--r-- | drivers/hid/usbhid/hid-core.c | 38 | ||||
-rw-r--r-- | drivers/hid/usbhid/hid-lgff.c | 10 | ||||
-rw-r--r-- | drivers/hid/usbhid/hid-quirks.c | 8 | ||||
-rw-r--r-- | drivers/hid/usbhid/hid-tmff.c | 2 | ||||
-rw-r--r-- | drivers/hid/usbhid/hid-zpff.c | 8 | ||||
-rw-r--r-- | drivers/hid/usbhid/hiddev.c | 2 | ||||
-rw-r--r-- | drivers/hid/usbhid/usbkbd.c | 6 | ||||
-rw-r--r-- | include/linux/hid.h | 20 |
12 files changed, 122 insertions, 107 deletions
diff --git a/drivers/hid/Kconfig b/drivers/hid/Kconfig index 8fbe9fdac128..5b004b2b1a4e 100644 --- a/drivers/hid/Kconfig +++ b/drivers/hid/Kconfig | |||
@@ -24,6 +24,7 @@ config HID | |||
24 | 24 | ||
25 | config HID_DEBUG | 25 | config HID_DEBUG |
26 | bool "HID debugging support" | 26 | bool "HID debugging support" |
27 | default y if !EMBEDDED | ||
27 | depends on HID | 28 | depends on HID |
28 | ---help--- | 29 | ---help--- |
29 | This option lets the HID layer output diagnostics about its internal | 30 | This option lets the HID layer output diagnostics about its internal |
diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c index 6ec04e79f685..317cf8a7b63c 100644 --- a/drivers/hid/hid-core.c +++ b/drivers/hid/hid-core.c | |||
@@ -40,6 +40,13 @@ | |||
40 | #define DRIVER_DESC "HID core driver" | 40 | #define DRIVER_DESC "HID core driver" |
41 | #define DRIVER_LICENSE "GPL" | 41 | #define DRIVER_LICENSE "GPL" |
42 | 42 | ||
43 | #ifdef CONFIG_HID_DEBUG | ||
44 | int hid_debug = 0; | ||
45 | module_param_named(debug, hid_debug, bool, 0600); | ||
46 | MODULE_PARM_DESC(debug, "Turn HID debugging mode on and off"); | ||
47 | EXPORT_SYMBOL_GPL(hid_debug); | ||
48 | #endif | ||
49 | |||
43 | /* | 50 | /* |
44 | * Register a new report for a device. | 51 | * Register a new report for a device. |
45 | */ | 52 | */ |
@@ -78,7 +85,7 @@ static struct hid_field *hid_register_field(struct hid_report *report, unsigned | |||
78 | struct hid_field *field; | 85 | struct hid_field *field; |
79 | 86 | ||
80 | if (report->maxfield == HID_MAX_FIELDS) { | 87 | if (report->maxfield == HID_MAX_FIELDS) { |
81 | dbg("too many fields in report"); | 88 | dbg_hid("too many fields in report\n"); |
82 | return NULL; | 89 | return NULL; |
83 | } | 90 | } |
84 | 91 | ||
@@ -106,7 +113,7 @@ static int open_collection(struct hid_parser *parser, unsigned type) | |||
106 | usage = parser->local.usage[0]; | 113 | usage = parser->local.usage[0]; |
107 | 114 | ||
108 | if (parser->collection_stack_ptr == HID_COLLECTION_STACK_SIZE) { | 115 | if (parser->collection_stack_ptr == HID_COLLECTION_STACK_SIZE) { |
109 | dbg("collection stack overflow"); | 116 | dbg_hid("collection stack overflow\n"); |
110 | return -1; | 117 | return -1; |
111 | } | 118 | } |
112 | 119 | ||
@@ -114,7 +121,7 @@ static int open_collection(struct hid_parser *parser, unsigned type) | |||
114 | collection = kmalloc(sizeof(struct hid_collection) * | 121 | collection = kmalloc(sizeof(struct hid_collection) * |
115 | parser->device->collection_size * 2, GFP_KERNEL); | 122 | parser->device->collection_size * 2, GFP_KERNEL); |
116 | if (collection == NULL) { | 123 | if (collection == NULL) { |
117 | dbg("failed to reallocate collection array"); | 124 | dbg_hid("failed to reallocate collection array\n"); |
118 | return -1; | 125 | return -1; |
119 | } | 126 | } |
120 | memcpy(collection, parser->device->collection, | 127 | memcpy(collection, parser->device->collection, |
@@ -150,7 +157,7 @@ static int open_collection(struct hid_parser *parser, unsigned type) | |||
150 | static int close_collection(struct hid_parser *parser) | 157 | static int close_collection(struct hid_parser *parser) |
151 | { | 158 | { |
152 | if (!parser->collection_stack_ptr) { | 159 | if (!parser->collection_stack_ptr) { |
153 | dbg("collection stack underflow"); | 160 | dbg_hid("collection stack underflow\n"); |
154 | return -1; | 161 | return -1; |
155 | } | 162 | } |
156 | parser->collection_stack_ptr--; | 163 | parser->collection_stack_ptr--; |
@@ -178,7 +185,7 @@ static unsigned hid_lookup_collection(struct hid_parser *parser, unsigned type) | |||
178 | static int hid_add_usage(struct hid_parser *parser, unsigned usage) | 185 | static int hid_add_usage(struct hid_parser *parser, unsigned usage) |
179 | { | 186 | { |
180 | if (parser->local.usage_index >= HID_MAX_USAGES) { | 187 | if (parser->local.usage_index >= HID_MAX_USAGES) { |
181 | dbg("usage index exceeded"); | 188 | dbg_hid("usage index exceeded\n"); |
182 | return -1; | 189 | return -1; |
183 | } | 190 | } |
184 | parser->local.usage[parser->local.usage_index] = usage; | 191 | parser->local.usage[parser->local.usage_index] = usage; |
@@ -202,12 +209,12 @@ static int hid_add_field(struct hid_parser *parser, unsigned report_type, unsign | |||
202 | int i; | 209 | int i; |
203 | 210 | ||
204 | if (!(report = hid_register_report(parser->device, report_type, parser->global.report_id))) { | 211 | if (!(report = hid_register_report(parser->device, report_type, parser->global.report_id))) { |
205 | dbg("hid_register_report failed"); | 212 | dbg_hid("hid_register_report failed\n"); |
206 | return -1; | 213 | return -1; |
207 | } | 214 | } |
208 | 215 | ||
209 | if (parser->global.logical_maximum < parser->global.logical_minimum) { | 216 | if (parser->global.logical_maximum < parser->global.logical_minimum) { |
210 | dbg("logical range invalid %d %d", parser->global.logical_minimum, parser->global.logical_maximum); | 217 | dbg_hid("logical range invalid %d %d\n", parser->global.logical_minimum, parser->global.logical_maximum); |
211 | return -1; | 218 | return -1; |
212 | } | 219 | } |
213 | 220 | ||
@@ -287,7 +294,7 @@ static int hid_parser_global(struct hid_parser *parser, struct hid_item *item) | |||
287 | case HID_GLOBAL_ITEM_TAG_PUSH: | 294 | case HID_GLOBAL_ITEM_TAG_PUSH: |
288 | 295 | ||
289 | if (parser->global_stack_ptr == HID_GLOBAL_STACK_SIZE) { | 296 | if (parser->global_stack_ptr == HID_GLOBAL_STACK_SIZE) { |
290 | dbg("global enviroment stack overflow"); | 297 | dbg_hid("global enviroment stack overflow\n"); |
291 | return -1; | 298 | return -1; |
292 | } | 299 | } |
293 | 300 | ||
@@ -298,7 +305,7 @@ static int hid_parser_global(struct hid_parser *parser, struct hid_item *item) | |||
298 | case HID_GLOBAL_ITEM_TAG_POP: | 305 | case HID_GLOBAL_ITEM_TAG_POP: |
299 | 306 | ||
300 | if (!parser->global_stack_ptr) { | 307 | if (!parser->global_stack_ptr) { |
301 | dbg("global enviroment stack underflow"); | 308 | dbg_hid("global enviroment stack underflow\n"); |
302 | return -1; | 309 | return -1; |
303 | } | 310 | } |
304 | 311 | ||
@@ -342,27 +349,27 @@ static int hid_parser_global(struct hid_parser *parser, struct hid_item *item) | |||
342 | 349 | ||
343 | case HID_GLOBAL_ITEM_TAG_REPORT_SIZE: | 350 | case HID_GLOBAL_ITEM_TAG_REPORT_SIZE: |
344 | if ((parser->global.report_size = item_udata(item)) > 32) { | 351 | if ((parser->global.report_size = item_udata(item)) > 32) { |
345 | dbg("invalid report_size %d", parser->global.report_size); | 352 | dbg_hid("invalid report_size %d\n", parser->global.report_size); |
346 | return -1; | 353 | return -1; |
347 | } | 354 | } |
348 | return 0; | 355 | return 0; |
349 | 356 | ||
350 | case HID_GLOBAL_ITEM_TAG_REPORT_COUNT: | 357 | case HID_GLOBAL_ITEM_TAG_REPORT_COUNT: |
351 | if ((parser->global.report_count = item_udata(item)) > HID_MAX_USAGES) { | 358 | if ((parser->global.report_count = item_udata(item)) > HID_MAX_USAGES) { |
352 | dbg("invalid report_count %d", parser->global.report_count); | 359 | dbg_hid("invalid report_count %d\n", parser->global.report_count); |
353 | return -1; | 360 | return -1; |
354 | } | 361 | } |
355 | return 0; | 362 | return 0; |
356 | 363 | ||
357 | case HID_GLOBAL_ITEM_TAG_REPORT_ID: | 364 | case HID_GLOBAL_ITEM_TAG_REPORT_ID: |
358 | if ((parser->global.report_id = item_udata(item)) == 0) { | 365 | if ((parser->global.report_id = item_udata(item)) == 0) { |
359 | dbg("report_id 0 is invalid"); | 366 | dbg_hid("report_id 0 is invalid\n"); |
360 | return -1; | 367 | return -1; |
361 | } | 368 | } |
362 | return 0; | 369 | return 0; |
363 | 370 | ||
364 | default: | 371 | default: |
365 | dbg("unknown global tag 0x%x", item->tag); | 372 | dbg_hid("unknown global tag 0x%x\n", item->tag); |
366 | return -1; | 373 | return -1; |
367 | } | 374 | } |
368 | } | 375 | } |
@@ -377,7 +384,7 @@ static int hid_parser_local(struct hid_parser *parser, struct hid_item *item) | |||
377 | unsigned n; | 384 | unsigned n; |
378 | 385 | ||
379 | if (item->size == 0) { | 386 | if (item->size == 0) { |
380 | dbg("item data expected for local item"); | 387 | dbg_hid("item data expected for local item\n"); |
381 | return -1; | 388 | return -1; |
382 | } | 389 | } |
383 | 390 | ||
@@ -395,14 +402,14 @@ static int hid_parser_local(struct hid_parser *parser, struct hid_item *item) | |||
395 | * items and the first delimiter set. | 402 | * items and the first delimiter set. |
396 | */ | 403 | */ |
397 | if (parser->local.delimiter_depth != 0) { | 404 | if (parser->local.delimiter_depth != 0) { |
398 | dbg("nested delimiters"); | 405 | dbg_hid("nested delimiters\n"); |
399 | return -1; | 406 | return -1; |
400 | } | 407 | } |
401 | parser->local.delimiter_depth++; | 408 | parser->local.delimiter_depth++; |
402 | parser->local.delimiter_branch++; | 409 | parser->local.delimiter_branch++; |
403 | } else { | 410 | } else { |
404 | if (parser->local.delimiter_depth < 1) { | 411 | if (parser->local.delimiter_depth < 1) { |
405 | dbg("bogus close delimiter"); | 412 | dbg_hid("bogus close delimiter\n"); |
406 | return -1; | 413 | return -1; |
407 | } | 414 | } |
408 | parser->local.delimiter_depth--; | 415 | parser->local.delimiter_depth--; |
@@ -412,7 +419,7 @@ static int hid_parser_local(struct hid_parser *parser, struct hid_item *item) | |||
412 | case HID_LOCAL_ITEM_TAG_USAGE: | 419 | case HID_LOCAL_ITEM_TAG_USAGE: |
413 | 420 | ||
414 | if (parser->local.delimiter_branch > 1) { | 421 | if (parser->local.delimiter_branch > 1) { |
415 | dbg("alternative usage ignored"); | 422 | dbg_hid("alternative usage ignored\n"); |
416 | return 0; | 423 | return 0; |
417 | } | 424 | } |
418 | 425 | ||
@@ -424,7 +431,7 @@ static int hid_parser_local(struct hid_parser *parser, struct hid_item *item) | |||
424 | case HID_LOCAL_ITEM_TAG_USAGE_MINIMUM: | 431 | case HID_LOCAL_ITEM_TAG_USAGE_MINIMUM: |
425 | 432 | ||
426 | if (parser->local.delimiter_branch > 1) { | 433 | if (parser->local.delimiter_branch > 1) { |
427 | dbg("alternative usage ignored"); | 434 | dbg_hid("alternative usage ignored\n"); |
428 | return 0; | 435 | return 0; |
429 | } | 436 | } |
430 | 437 | ||
@@ -437,7 +444,7 @@ static int hid_parser_local(struct hid_parser *parser, struct hid_item *item) | |||
437 | case HID_LOCAL_ITEM_TAG_USAGE_MAXIMUM: | 444 | case HID_LOCAL_ITEM_TAG_USAGE_MAXIMUM: |
438 | 445 | ||
439 | if (parser->local.delimiter_branch > 1) { | 446 | if (parser->local.delimiter_branch > 1) { |
440 | dbg("alternative usage ignored"); | 447 | dbg_hid("alternative usage ignored\n"); |
441 | return 0; | 448 | return 0; |
442 | } | 449 | } |
443 | 450 | ||
@@ -446,14 +453,14 @@ static int hid_parser_local(struct hid_parser *parser, struct hid_item *item) | |||
446 | 453 | ||
447 | for (n = parser->local.usage_minimum; n <= data; n++) | 454 | for (n = parser->local.usage_minimum; n <= data; n++) |
448 | if (hid_add_usage(parser, n)) { | 455 | if (hid_add_usage(parser, n)) { |
449 | dbg("hid_add_usage failed\n"); | 456 | dbg_hid("hid_add_usage failed\n"); |
450 | return -1; | 457 | return -1; |
451 | } | 458 | } |
452 | return 0; | 459 | return 0; |
453 | 460 | ||
454 | default: | 461 | default: |
455 | 462 | ||
456 | dbg("unknown local item tag 0x%x", item->tag); | 463 | dbg_hid("unknown local item tag 0x%x\n", item->tag); |
457 | return 0; | 464 | return 0; |
458 | } | 465 | } |
459 | return 0; | 466 | return 0; |
@@ -487,7 +494,7 @@ static int hid_parser_main(struct hid_parser *parser, struct hid_item *item) | |||
487 | ret = hid_add_field(parser, HID_FEATURE_REPORT, data); | 494 | ret = hid_add_field(parser, HID_FEATURE_REPORT, data); |
488 | break; | 495 | break; |
489 | default: | 496 | default: |
490 | dbg("unknown main item tag 0x%x", item->tag); | 497 | dbg_hid("unknown main item tag 0x%x\n", item->tag); |
491 | ret = 0; | 498 | ret = 0; |
492 | } | 499 | } |
493 | 500 | ||
@@ -502,7 +509,7 @@ static int hid_parser_main(struct hid_parser *parser, struct hid_item *item) | |||
502 | 509 | ||
503 | static int hid_parser_reserved(struct hid_parser *parser, struct hid_item *item) | 510 | static int hid_parser_reserved(struct hid_parser *parser, struct hid_item *item) |
504 | { | 511 | { |
505 | dbg("reserved item type, tag 0x%x", item->tag); | 512 | dbg_hid("reserved item type, tag 0x%x\n", item->tag); |
506 | return 0; | 513 | return 0; |
507 | } | 514 | } |
508 | 515 | ||
@@ -667,14 +674,14 @@ struct hid_device *hid_parse_report(__u8 *start, unsigned size) | |||
667 | while ((start = fetch_item(start, end, &item)) != NULL) { | 674 | while ((start = fetch_item(start, end, &item)) != NULL) { |
668 | 675 | ||
669 | if (item.format != HID_ITEM_FORMAT_SHORT) { | 676 | if (item.format != HID_ITEM_FORMAT_SHORT) { |
670 | dbg("unexpected long global item"); | 677 | dbg_hid("unexpected long global item\n"); |
671 | hid_free_device(device); | 678 | hid_free_device(device); |
672 | vfree(parser); | 679 | vfree(parser); |
673 | return NULL; | 680 | return NULL; |
674 | } | 681 | } |
675 | 682 | ||
676 | if (dispatch_type[item.type](parser, &item)) { | 683 | if (dispatch_type[item.type](parser, &item)) { |
677 | dbg("item %u %u %u %u parsing failed\n", | 684 | dbg_hid("item %u %u %u %u parsing failed\n", |
678 | item.format, (unsigned)item.size, (unsigned)item.type, (unsigned)item.tag); | 685 | item.format, (unsigned)item.size, (unsigned)item.type, (unsigned)item.tag); |
679 | hid_free_device(device); | 686 | hid_free_device(device); |
680 | vfree(parser); | 687 | vfree(parser); |
@@ -683,13 +690,13 @@ struct hid_device *hid_parse_report(__u8 *start, unsigned size) | |||
683 | 690 | ||
684 | if (start == end) { | 691 | if (start == end) { |
685 | if (parser->collection_stack_ptr) { | 692 | if (parser->collection_stack_ptr) { |
686 | dbg("unbalanced collection at end of report description"); | 693 | dbg_hid("unbalanced collection at end of report description\n"); |
687 | hid_free_device(device); | 694 | hid_free_device(device); |
688 | vfree(parser); | 695 | vfree(parser); |
689 | return NULL; | 696 | return NULL; |
690 | } | 697 | } |
691 | if (parser->local.delimiter_depth) { | 698 | if (parser->local.delimiter_depth) { |
692 | dbg("unbalanced delimiter at end of report description"); | 699 | dbg_hid("unbalanced delimiter at end of report description\n"); |
693 | hid_free_device(device); | 700 | hid_free_device(device); |
694 | vfree(parser); | 701 | vfree(parser); |
695 | return NULL; | 702 | return NULL; |
@@ -699,7 +706,7 @@ struct hid_device *hid_parse_report(__u8 *start, unsigned size) | |||
699 | } | 706 | } |
700 | } | 707 | } |
701 | 708 | ||
702 | dbg("item fetching failed at offset %d\n", (int)(end - start)); | 709 | dbg_hid("item fetching failed at offset %d\n", (int)(end - start)); |
703 | hid_free_device(device); | 710 | hid_free_device(device); |
704 | vfree(parser); | 711 | vfree(parser); |
705 | return NULL; | 712 | return NULL; |
@@ -915,13 +922,13 @@ int hid_set_field(struct hid_field *field, unsigned offset, __s32 value) | |||
915 | hid_dump_input(field->usage + offset, value); | 922 | hid_dump_input(field->usage + offset, value); |
916 | 923 | ||
917 | if (offset >= field->report_count) { | 924 | if (offset >= field->report_count) { |
918 | dbg("offset (%d) exceeds report_count (%d)", offset, field->report_count); | 925 | dbg_hid("offset (%d) exceeds report_count (%d)\n", offset, field->report_count); |
919 | hid_dump_field(field, 8); | 926 | hid_dump_field(field, 8); |
920 | return -1; | 927 | return -1; |
921 | } | 928 | } |
922 | if (field->logical_minimum < 0) { | 929 | if (field->logical_minimum < 0) { |
923 | if (value != snto32(s32ton(value, size), size)) { | 930 | if (value != snto32(s32ton(value, size), size)) { |
924 | dbg("value %d is out of range", value); | 931 | dbg_hid("value %d is out of range\n", value); |
925 | return -1; | 932 | return -1; |
926 | } | 933 | } |
927 | } | 934 | } |
@@ -934,19 +941,17 @@ int hid_input_report(struct hid_device *hid, int type, u8 *data, int size, int i | |||
934 | { | 941 | { |
935 | struct hid_report_enum *report_enum = hid->report_enum + type; | 942 | struct hid_report_enum *report_enum = hid->report_enum + type; |
936 | struct hid_report *report; | 943 | struct hid_report *report; |
937 | int n, rsize; | 944 | int n, rsize, i; |
938 | 945 | ||
939 | if (!hid) | 946 | if (!hid) |
940 | return -ENODEV; | 947 | return -ENODEV; |
941 | 948 | ||
942 | if (!size) { | 949 | if (!size) { |
943 | dbg("empty report"); | 950 | dbg_hid("empty report\n"); |
944 | return -1; | 951 | return -1; |
945 | } | 952 | } |
946 | 953 | ||
947 | #ifdef CONFIG_HID_DEBUG | 954 | dbg_hid("report (size %u) (%snumbered)\n", size, report_enum->numbered ? "" : "un"); |
948 | printk(KERN_DEBUG __FILE__ ": report (size %u) (%snumbered)\n", size, report_enum->numbered ? "" : "un"); | ||
949 | #endif | ||
950 | 955 | ||
951 | n = 0; /* Normally report number is 0 */ | 956 | n = 0; /* Normally report number is 0 */ |
952 | if (report_enum->numbered) { /* Device uses numbered reports, data[0] is report number */ | 957 | if (report_enum->numbered) { /* Device uses numbered reports, data[0] is report number */ |
@@ -954,25 +959,21 @@ int hid_input_report(struct hid_device *hid, int type, u8 *data, int size, int i | |||
954 | size--; | 959 | size--; |
955 | } | 960 | } |
956 | 961 | ||
957 | #ifdef CONFIG_HID_DEBUG | 962 | /* dump the report descriptor */ |
958 | { | 963 | dbg_hid("report %d (size %u) = ", n, size); |
959 | int i; | 964 | for (i = 0; i < size; i++) |
960 | printk(KERN_DEBUG __FILE__ ": report %d (size %u) = ", n, size); | 965 | dbg_hid_line(" %02x", data[i]); |
961 | for (i = 0; i < size; i++) | 966 | dbg_hid_line("\n"); |
962 | printk(" %02x", data[i]); | ||
963 | printk("\n"); | ||
964 | } | ||
965 | #endif | ||
966 | 967 | ||
967 | if (!(report = report_enum->report_id_hash[n])) { | 968 | if (!(report = report_enum->report_id_hash[n])) { |
968 | dbg("undefined report_id %d received", n); | 969 | dbg_hid("undefined report_id %d received\n", n); |
969 | return -1; | 970 | return -1; |
970 | } | 971 | } |
971 | 972 | ||
972 | rsize = ((report->size - 1) >> 3) + 1; | 973 | rsize = ((report->size - 1) >> 3) + 1; |
973 | 974 | ||
974 | if (size < rsize) { | 975 | if (size < rsize) { |
975 | dbg("report %d is too short, (%d < %d)", report->id, size, rsize); | 976 | dbg_hid("report %d is too short, (%d < %d)\n", report->id, size, rsize); |
976 | memset(data + size, 0, rsize - size); | 977 | memset(data + size, 0, rsize - size); |
977 | } | 978 | } |
978 | 979 | ||
diff --git a/drivers/hid/hid-debug.c b/drivers/hid/hid-debug.c index 83c4126b37c3..a13757b78980 100644 --- a/drivers/hid/hid-debug.c +++ b/drivers/hid/hid-debug.c | |||
@@ -347,6 +347,9 @@ static void resolv_usage_page(unsigned page) { | |||
347 | void hid_resolv_usage(unsigned usage) { | 347 | void hid_resolv_usage(unsigned usage) { |
348 | const struct hid_usage_entry *p; | 348 | const struct hid_usage_entry *p; |
349 | 349 | ||
350 | if (!hid_debug) | ||
351 | return; | ||
352 | |||
350 | resolv_usage_page(usage >> 16); | 353 | resolv_usage_page(usage >> 16); |
351 | printk("."); | 354 | printk("."); |
352 | for (p = hid_usage_table; p->description; p++) | 355 | for (p = hid_usage_table; p->description; p++) |
@@ -369,6 +372,9 @@ __inline__ static void tab(int n) { | |||
369 | void hid_dump_field(struct hid_field *field, int n) { | 372 | void hid_dump_field(struct hid_field *field, int n) { |
370 | int j; | 373 | int j; |
371 | 374 | ||
375 | if (!hid_debug) | ||
376 | return; | ||
377 | |||
372 | if (field->physical) { | 378 | if (field->physical) { |
373 | tab(n); | 379 | tab(n); |
374 | printk("Physical("); | 380 | printk("Physical("); |
@@ -466,6 +472,9 @@ void hid_dump_device(struct hid_device *device) { | |||
466 | unsigned i,k; | 472 | unsigned i,k; |
467 | static char *table[] = {"INPUT", "OUTPUT", "FEATURE"}; | 473 | static char *table[] = {"INPUT", "OUTPUT", "FEATURE"}; |
468 | 474 | ||
475 | if (!hid_debug) | ||
476 | return; | ||
477 | |||
469 | for (i = 0; i < HID_REPORT_TYPES; i++) { | 478 | for (i = 0; i < HID_REPORT_TYPES; i++) { |
470 | report_enum = device->report_enum + i; | 479 | report_enum = device->report_enum + i; |
471 | list = report_enum->report_list.next; | 480 | list = report_enum->report_list.next; |
@@ -489,6 +498,9 @@ void hid_dump_device(struct hid_device *device) { | |||
489 | EXPORT_SYMBOL_GPL(hid_dump_device); | 498 | EXPORT_SYMBOL_GPL(hid_dump_device); |
490 | 499 | ||
491 | void hid_dump_input(struct hid_usage *usage, __s32 value) { | 500 | void hid_dump_input(struct hid_usage *usage, __s32 value) { |
501 | if (!hid_debug) | ||
502 | return; | ||
503 | |||
492 | printk("hid-debug: input "); | 504 | printk("hid-debug: input "); |
493 | hid_resolv_usage(usage->hid); | 505 | hid_resolv_usage(usage->hid); |
494 | printk(" = %d\n", value); | 506 | printk(" = %d\n", value); |
@@ -758,6 +770,9 @@ static char **names[EV_MAX + 1] = { | |||
758 | 770 | ||
759 | void hid_resolv_event(__u8 type, __u16 code) { | 771 | void hid_resolv_event(__u8 type, __u16 code) { |
760 | 772 | ||
773 | if (!hid_debug) | ||
774 | return; | ||
775 | |||
761 | printk("%s.%s", events[type] ? events[type] : "?", | 776 | printk("%s.%s", events[type] ? events[type] : "?", |
762 | names[type] ? (names[type][code] ? names[type][code] : "?") : "?"); | 777 | names[type] ? (names[type][code] ? names[type][code] : "?") : "?"); |
763 | } | 778 | } |
diff --git a/drivers/hid/hid-input.c b/drivers/hid/hid-input.c index 7f817897b178..38595d3935ce 100644 --- a/drivers/hid/hid-input.c +++ b/drivers/hid/hid-input.c | |||
@@ -308,9 +308,7 @@ static int hidinput_setkeycode(struct input_dev *dev, int scancode, | |||
308 | 308 | ||
309 | clear_bit(old_keycode, dev->keybit); | 309 | clear_bit(old_keycode, dev->keybit); |
310 | set_bit(usage->code, dev->keybit); | 310 | set_bit(usage->code, dev->keybit); |
311 | #ifdef CONFIG_HID_DEBUG | 311 | dbg_hid(KERN_DEBUG "Assigned keycode %d to HID usage code %x\n", keycode, scancode); |
312 | printk (KERN_DEBUG "Assigned keycode %d to HID usage code %x\n", keycode, scancode); | ||
313 | #endif | ||
314 | /* Set the keybit for the old keycode if the old keycode is used | 312 | /* Set the keybit for the old keycode if the old keycode is used |
315 | * by another key */ | 313 | * by another key */ |
316 | if (hidinput_find_key (hid, 0, old_keycode)) | 314 | if (hidinput_find_key (hid, 0, old_keycode)) |
@@ -333,11 +331,9 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel | |||
333 | 331 | ||
334 | field->hidinput = hidinput; | 332 | field->hidinput = hidinput; |
335 | 333 | ||
336 | #ifdef CONFIG_HID_DEBUG | 334 | dbg_hid("Mapping: "); |
337 | printk(KERN_DEBUG "Mapping: "); | ||
338 | hid_resolv_usage(usage->hid); | 335 | hid_resolv_usage(usage->hid); |
339 | printk(" ---> "); | 336 | dbg_hid_line(" ---> "); |
340 | #endif | ||
341 | 337 | ||
342 | if (field->flags & HID_MAIN_ITEM_CONSTANT) | 338 | if (field->flags & HID_MAIN_ITEM_CONSTANT) |
343 | goto ignore; | 339 | goto ignore; |
@@ -819,15 +815,13 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel | |||
819 | } | 815 | } |
820 | 816 | ||
821 | hid_resolv_event(usage->type, usage->code); | 817 | hid_resolv_event(usage->type, usage->code); |
822 | #ifdef CONFIG_HID_DEBUG | 818 | |
823 | printk("\n"); | 819 | dbg_hid_line("\n"); |
824 | #endif | 820 | |
825 | return; | 821 | return; |
826 | 822 | ||
827 | ignore: | 823 | ignore: |
828 | #ifdef CONFIG_HID_DEBUG | 824 | dbg_hid_line("IGNORED\n"); |
829 | printk("IGNORED\n"); | ||
830 | #endif | ||
831 | return; | 825 | return; |
832 | } | 826 | } |
833 | 827 | ||
@@ -896,12 +890,12 @@ void hidinput_hid_event(struct hid_device *hid, struct hid_field *field, struct | |||
896 | } | 890 | } |
897 | 891 | ||
898 | if (usage->hid == (HID_UP_PID | 0x83UL)) { /* Simultaneous Effects Max */ | 892 | if (usage->hid == (HID_UP_PID | 0x83UL)) { /* Simultaneous Effects Max */ |
899 | dbg("Maximum Effects - %d",value); | 893 | dbg_hid("Maximum Effects - %d\n",value); |
900 | return; | 894 | return; |
901 | } | 895 | } |
902 | 896 | ||
903 | if (usage->hid == (HID_UP_PID | 0x7fUL)) { | 897 | if (usage->hid == (HID_UP_PID | 0x7fUL)) { |
904 | dbg("PID Pool Report\n"); | 898 | dbg_hid("PID Pool Report\n"); |
905 | return; | 899 | return; |
906 | } | 900 | } |
907 | 901 | ||
@@ -994,7 +988,7 @@ int hidinput_connect(struct hid_device *hid) | |||
994 | if (!hidinput || !input_dev) { | 988 | if (!hidinput || !input_dev) { |
995 | kfree(hidinput); | 989 | kfree(hidinput); |
996 | input_free_device(input_dev); | 990 | input_free_device(input_dev); |
997 | err("Out of memory during hid input probe"); | 991 | err_hid("Out of memory during hid input probe"); |
998 | return -1; | 992 | return -1; |
999 | } | 993 | } |
1000 | 994 | ||
diff --git a/drivers/hid/usbhid/hid-core.c b/drivers/hid/usbhid/hid-core.c index d91b9dac6dff..1eb2c64bc44a 100644 --- a/drivers/hid/usbhid/hid-core.c +++ b/drivers/hid/usbhid/hid-core.c | |||
@@ -127,7 +127,7 @@ static void hid_reset(struct work_struct *work) | |||
127 | hid_io_error(hid); | 127 | hid_io_error(hid); |
128 | break; | 128 | break; |
129 | default: | 129 | default: |
130 | err("can't reset device, %s-%s/input%d, status %d", | 130 | err_hid("can't reset device, %s-%s/input%d, status %d", |
131 | hid_to_usb_dev(hid)->bus->bus_name, | 131 | hid_to_usb_dev(hid)->bus->bus_name, |
132 | hid_to_usb_dev(hid)->devpath, | 132 | hid_to_usb_dev(hid)->devpath, |
133 | usbhid->ifnum, rc); | 133 | usbhid->ifnum, rc); |
@@ -220,7 +220,7 @@ static void hid_irq_in(struct urb *urb) | |||
220 | if (status) { | 220 | if (status) { |
221 | clear_bit(HID_IN_RUNNING, &usbhid->iofl); | 221 | clear_bit(HID_IN_RUNNING, &usbhid->iofl); |
222 | if (status != -EPERM) { | 222 | if (status != -EPERM) { |
223 | err("can't resubmit intr, %s-%s/input%d, status %d", | 223 | err_hid("can't resubmit intr, %s-%s/input%d, status %d", |
224 | hid_to_usb_dev(hid)->bus->bus_name, | 224 | hid_to_usb_dev(hid)->bus->bus_name, |
225 | hid_to_usb_dev(hid)->devpath, | 225 | hid_to_usb_dev(hid)->devpath, |
226 | usbhid->ifnum, status); | 226 | usbhid->ifnum, status); |
@@ -240,10 +240,10 @@ static int hid_submit_out(struct hid_device *hid) | |||
240 | usbhid->urbout->transfer_buffer_length = ((report->size - 1) >> 3) + 1 + (report->id > 0); | 240 | usbhid->urbout->transfer_buffer_length = ((report->size - 1) >> 3) + 1 + (report->id > 0); |
241 | usbhid->urbout->dev = hid_to_usb_dev(hid); | 241 | usbhid->urbout->dev = hid_to_usb_dev(hid); |
242 | 242 | ||
243 | dbg("submitting out urb"); | 243 | dbg_hid("submitting out urb\n"); |
244 | 244 | ||
245 | if (usb_submit_urb(usbhid->urbout, GFP_ATOMIC)) { | 245 | if (usb_submit_urb(usbhid->urbout, GFP_ATOMIC)) { |
246 | err("usb_submit_urb(out) failed"); | 246 | err_hid("usb_submit_urb(out) failed"); |
247 | return -1; | 247 | return -1; |
248 | } | 248 | } |
249 | 249 | ||
@@ -287,12 +287,12 @@ static int hid_submit_ctrl(struct hid_device *hid) | |||
287 | usbhid->cr->wIndex = cpu_to_le16(usbhid->ifnum); | 287 | usbhid->cr->wIndex = cpu_to_le16(usbhid->ifnum); |
288 | usbhid->cr->wLength = cpu_to_le16(len); | 288 | usbhid->cr->wLength = cpu_to_le16(len); |
289 | 289 | ||
290 | dbg("submitting ctrl urb: %s wValue=0x%04x wIndex=0x%04x wLength=%u", | 290 | dbg_hid("submitting ctrl urb: %s wValue=0x%04x wIndex=0x%04x wLength=%u\n", |
291 | usbhid->cr->bRequest == HID_REQ_SET_REPORT ? "Set_Report" : "Get_Report", | 291 | usbhid->cr->bRequest == HID_REQ_SET_REPORT ? "Set_Report" : "Get_Report", |
292 | usbhid->cr->wValue, usbhid->cr->wIndex, usbhid->cr->wLength); | 292 | usbhid->cr->wValue, usbhid->cr->wIndex, usbhid->cr->wLength); |
293 | 293 | ||
294 | if (usb_submit_urb(usbhid->urbctrl, GFP_ATOMIC)) { | 294 | if (usb_submit_urb(usbhid->urbctrl, GFP_ATOMIC)) { |
295 | err("usb_submit_urb(ctrl) failed"); | 295 | err_hid("usb_submit_urb(ctrl) failed"); |
296 | return -1; | 296 | return -1; |
297 | } | 297 | } |
298 | 298 | ||
@@ -474,7 +474,7 @@ int usbhid_wait_io(struct hid_device *hid) | |||
474 | if (!wait_event_timeout(hid->wait, (!test_bit(HID_CTRL_RUNNING, &usbhid->iofl) && | 474 | if (!wait_event_timeout(hid->wait, (!test_bit(HID_CTRL_RUNNING, &usbhid->iofl) && |
475 | !test_bit(HID_OUT_RUNNING, &usbhid->iofl)), | 475 | !test_bit(HID_OUT_RUNNING, &usbhid->iofl)), |
476 | 10*HZ)) { | 476 | 10*HZ)) { |
477 | dbg("timeout waiting for ctrl or out queue to clear"); | 477 | dbg_hid("timeout waiting for ctrl or out queue to clear\n"); |
478 | return -1; | 478 | return -1; |
479 | } | 479 | } |
480 | 480 | ||
@@ -667,7 +667,7 @@ static void hid_fixup_sony_ps3_controller(struct usb_device *dev, int ifnum) | |||
667 | USB_CTRL_GET_TIMEOUT); | 667 | USB_CTRL_GET_TIMEOUT); |
668 | 668 | ||
669 | if (result < 0) | 669 | if (result < 0) |
670 | err("%s failed: %d\n", __func__, result); | 670 | err_hid("%s failed: %d\n", __func__, result); |
671 | 671 | ||
672 | kfree(buf); | 672 | kfree(buf); |
673 | } | 673 | } |
@@ -746,7 +746,7 @@ static struct hid_device *usb_hid_configure(struct usb_interface *intf) | |||
746 | if (usb_get_extra_descriptor(interface, HID_DT_HID, &hdesc) && | 746 | if (usb_get_extra_descriptor(interface, HID_DT_HID, &hdesc) && |
747 | (!interface->desc.bNumEndpoints || | 747 | (!interface->desc.bNumEndpoints || |
748 | usb_get_extra_descriptor(&interface->endpoint[0], HID_DT_HID, &hdesc))) { | 748 | usb_get_extra_descriptor(&interface->endpoint[0], HID_DT_HID, &hdesc))) { |
749 | dbg("class descriptor not present\n"); | 749 | dbg_hid("class descriptor not present\n"); |
750 | return NULL; | 750 | return NULL; |
751 | } | 751 | } |
752 | 752 | ||
@@ -755,19 +755,19 @@ static struct hid_device *usb_hid_configure(struct usb_interface *intf) | |||
755 | rsize = le16_to_cpu(hdesc->desc[n].wDescriptorLength); | 755 | rsize = le16_to_cpu(hdesc->desc[n].wDescriptorLength); |
756 | 756 | ||
757 | if (!rsize || rsize > HID_MAX_DESCRIPTOR_SIZE) { | 757 | if (!rsize || rsize > HID_MAX_DESCRIPTOR_SIZE) { |
758 | dbg("weird size of report descriptor (%u)", rsize); | 758 | dbg_hid("weird size of report descriptor (%u)\n", rsize); |
759 | return NULL; | 759 | return NULL; |
760 | } | 760 | } |
761 | 761 | ||
762 | if (!(rdesc = kmalloc(rsize, GFP_KERNEL))) { | 762 | if (!(rdesc = kmalloc(rsize, GFP_KERNEL))) { |
763 | dbg("couldn't allocate rdesc memory"); | 763 | dbg_hid("couldn't allocate rdesc memory\n"); |
764 | return NULL; | 764 | return NULL; |
765 | } | 765 | } |
766 | 766 | ||
767 | hid_set_idle(dev, interface->desc.bInterfaceNumber, 0, 0); | 767 | hid_set_idle(dev, interface->desc.bInterfaceNumber, 0, 0); |
768 | 768 | ||
769 | if ((n = hid_get_class_descriptor(dev, interface->desc.bInterfaceNumber, HID_DT_REPORT, rdesc, rsize)) < 0) { | 769 | if ((n = hid_get_class_descriptor(dev, interface->desc.bInterfaceNumber, HID_DT_REPORT, rdesc, rsize)) < 0) { |
770 | dbg("reading report descriptor failed"); | 770 | dbg_hid("reading report descriptor failed\n"); |
771 | kfree(rdesc); | 771 | kfree(rdesc); |
772 | return NULL; | 772 | return NULL; |
773 | } | 773 | } |
@@ -781,15 +781,13 @@ static struct hid_device *usb_hid_configure(struct usb_interface *intf) | |||
781 | if (quirks & HID_QUIRK_SWAPPED_MIN_MAX) | 781 | if (quirks & HID_QUIRK_SWAPPED_MIN_MAX) |
782 | hid_fixup_cypress_descriptor(rdesc, rsize); | 782 | hid_fixup_cypress_descriptor(rdesc, rsize); |
783 | 783 | ||
784 | #ifdef CONFIG_HID_DEBUG | 784 | dbg_hid("report descriptor (size %u, read %d) = ", rsize, n); |
785 | printk(KERN_DEBUG __FILE__ ": report descriptor (size %u, read %d) = ", rsize, n); | ||
786 | for (n = 0; n < rsize; n++) | 785 | for (n = 0; n < rsize; n++) |
787 | printk(" %02x", (unsigned char) rdesc[n]); | 786 | dbg_hid_line(" %02x", (unsigned char) rdesc[n]); |
788 | printk("\n"); | 787 | dbg_hid_line("\n"); |
789 | #endif | ||
790 | 788 | ||
791 | if (!(hid = hid_parse_report(rdesc, n))) { | 789 | if (!(hid = hid_parse_report(rdesc, n))) { |
792 | dbg("parsing report descriptor failed"); | 790 | dbg_hid("parsing report descriptor failed\n"); |
793 | kfree(rdesc); | 791 | kfree(rdesc); |
794 | return NULL; | 792 | return NULL; |
795 | } | 793 | } |
@@ -861,7 +859,7 @@ static struct hid_device *usb_hid_configure(struct usb_interface *intf) | |||
861 | } | 859 | } |
862 | 860 | ||
863 | if (!usbhid->urbin) { | 861 | if (!usbhid->urbin) { |
864 | err("couldn't find an input interrupt endpoint"); | 862 | err_hid("couldn't find an input interrupt endpoint"); |
865 | goto fail; | 863 | goto fail; |
866 | } | 864 | } |
867 | 865 | ||
@@ -978,7 +976,7 @@ static int hid_probe(struct usb_interface *intf, const struct usb_device_id *id) | |||
978 | int i; | 976 | int i; |
979 | char *c; | 977 | char *c; |
980 | 978 | ||
981 | dbg("HID probe called for ifnum %d", | 979 | dbg_hid("HID probe called for ifnum %d\n", |
982 | intf->altsetting->desc.bInterfaceNumber); | 980 | intf->altsetting->desc.bInterfaceNumber); |
983 | 981 | ||
984 | if (!(hid = usb_hid_configure(intf))) | 982 | if (!(hid = usb_hid_configure(intf))) |
diff --git a/drivers/hid/usbhid/hid-lgff.c b/drivers/hid/usbhid/hid-lgff.c index c5cd4107d6af..4b7ab6a46d93 100644 --- a/drivers/hid/usbhid/hid-lgff.c +++ b/drivers/hid/usbhid/hid-lgff.c | |||
@@ -78,7 +78,7 @@ static int hid_lgff_play(struct input_dev *dev, void *data, struct ff_effect *ef | |||
78 | report->field[0]->value[1] = 0x08; | 78 | report->field[0]->value[1] = 0x08; |
79 | report->field[0]->value[2] = x; | 79 | report->field[0]->value[2] = x; |
80 | report->field[0]->value[3] = y; | 80 | report->field[0]->value[3] = y; |
81 | dbg("(x, y)=(%04x, %04x)", x, y); | 81 | dbg_hid("(x, y)=(%04x, %04x)\n", x, y); |
82 | usbhid_submit_report(hid, report, USB_DIR_OUT); | 82 | usbhid_submit_report(hid, report, USB_DIR_OUT); |
83 | break; | 83 | break; |
84 | 84 | ||
@@ -93,7 +93,7 @@ static int hid_lgff_play(struct input_dev *dev, void *data, struct ff_effect *ef | |||
93 | report->field[0]->value[1] = 0x00; | 93 | report->field[0]->value[1] = 0x00; |
94 | report->field[0]->value[2] = left; | 94 | report->field[0]->value[2] = left; |
95 | report->field[0]->value[3] = right; | 95 | report->field[0]->value[3] = right; |
96 | dbg("(left, right)=(%04x, %04x)", left, right); | 96 | dbg_hid("(left, right)=(%04x, %04x)\n", left, right); |
97 | usbhid_submit_report(hid, report, USB_DIR_OUT); | 97 | usbhid_submit_report(hid, report, USB_DIR_OUT); |
98 | break; | 98 | break; |
99 | } | 99 | } |
@@ -113,20 +113,20 @@ int hid_lgff_init(struct hid_device* hid) | |||
113 | 113 | ||
114 | /* Find the report to use */ | 114 | /* Find the report to use */ |
115 | if (list_empty(report_list)) { | 115 | if (list_empty(report_list)) { |
116 | err("No output report found"); | 116 | err_hid("No output report found"); |
117 | return -1; | 117 | return -1; |
118 | } | 118 | } |
119 | 119 | ||
120 | /* Check that the report looks ok */ | 120 | /* Check that the report looks ok */ |
121 | report = list_entry(report_list->next, struct hid_report, list); | 121 | report = list_entry(report_list->next, struct hid_report, list); |
122 | if (!report) { | 122 | if (!report) { |
123 | err("NULL output report"); | 123 | err_hid("NULL output report"); |
124 | return -1; | 124 | return -1; |
125 | } | 125 | } |
126 | 126 | ||
127 | field = report->field[0]; | 127 | field = report->field[0]; |
128 | if (!field) { | 128 | if (!field) { |
129 | err("NULL field"); | 129 | err_hid("NULL field"); |
130 | return -1; | 130 | return -1; |
131 | } | 131 | } |
132 | 132 | ||
diff --git a/drivers/hid/usbhid/hid-quirks.c b/drivers/hid/usbhid/hid-quirks.c index f6c4145dc202..a418ebfe39b8 100644 --- a/drivers/hid/usbhid/hid-quirks.c +++ b/drivers/hid/usbhid/hid-quirks.c | |||
@@ -493,7 +493,7 @@ static struct hid_blacklist *usbhid_exists_dquirk(const u16 idVendor, | |||
493 | } | 493 | } |
494 | 494 | ||
495 | if (bl_entry != NULL) | 495 | if (bl_entry != NULL) |
496 | dbg("Found dynamic quirk 0x%x for USB HID vendor 0x%hx prod 0x%hx\n", | 496 | dbg_hid("Found dynamic quirk 0x%x for USB HID vendor 0x%hx prod 0x%hx\n", |
497 | bl_entry->quirks, bl_entry->idVendor, | 497 | bl_entry->quirks, bl_entry->idVendor, |
498 | bl_entry->idProduct); | 498 | bl_entry->idProduct); |
499 | 499 | ||
@@ -521,13 +521,13 @@ int usbhid_modify_dquirk(const u16 idVendor, const u16 idProduct, | |||
521 | int list_edited = 0; | 521 | int list_edited = 0; |
522 | 522 | ||
523 | if (!idVendor) { | 523 | if (!idVendor) { |
524 | dbg("Cannot add a quirk with idVendor = 0"); | 524 | dbg_hid("Cannot add a quirk with idVendor = 0\n"); |
525 | return -EINVAL; | 525 | return -EINVAL; |
526 | } | 526 | } |
527 | 527 | ||
528 | q_new = kmalloc(sizeof(struct quirks_list_struct), GFP_KERNEL); | 528 | q_new = kmalloc(sizeof(struct quirks_list_struct), GFP_KERNEL); |
529 | if (!q_new) { | 529 | if (!q_new) { |
530 | dbg("Could not allocate quirks_list_struct"); | 530 | dbg_hid("Could not allocate quirks_list_struct\n"); |
531 | return -ENOMEM; | 531 | return -ENOMEM; |
532 | } | 532 | } |
533 | 533 | ||
@@ -643,7 +643,7 @@ static const struct hid_blacklist *usbhid_exists_squirk(const u16 idVendor, | |||
643 | bl_entry = &hid_blacklist[n]; | 643 | bl_entry = &hid_blacklist[n]; |
644 | 644 | ||
645 | if (bl_entry != NULL) | 645 | if (bl_entry != NULL) |
646 | dbg("Found squirk 0x%x for USB HID vendor 0x%hx prod 0x%hx\n", | 646 | dbg_hid("Found squirk 0x%x for USB HID vendor 0x%hx prod 0x%hx\n", |
647 | bl_entry->quirks, bl_entry->idVendor, | 647 | bl_entry->quirks, bl_entry->idVendor, |
648 | bl_entry->idProduct); | 648 | bl_entry->idProduct); |
649 | return bl_entry; | 649 | return bl_entry; |
diff --git a/drivers/hid/usbhid/hid-tmff.c b/drivers/hid/usbhid/hid-tmff.c index ab5ba6ef891c..555bb48b4295 100644 --- a/drivers/hid/usbhid/hid-tmff.c +++ b/drivers/hid/usbhid/hid-tmff.c | |||
@@ -70,7 +70,7 @@ static int hid_tmff_play(struct input_dev *dev, void *data, struct ff_effect *ef | |||
70 | 70 | ||
71 | tmff->rumble->value[0] = left; | 71 | tmff->rumble->value[0] = left; |
72 | tmff->rumble->value[1] = right; | 72 | tmff->rumble->value[1] = right; |
73 | dbg("(left,right)=(%08x, %08x)", left, right); | 73 | dbg_hid("(left,right)=(%08x, %08x)\n", left, right); |
74 | usbhid_submit_report(hid, tmff->report, USB_DIR_OUT); | 74 | usbhid_submit_report(hid, tmff->report, USB_DIR_OUT); |
75 | 75 | ||
76 | return 0; | 76 | return 0; |
diff --git a/drivers/hid/usbhid/hid-zpff.c b/drivers/hid/usbhid/hid-zpff.c index a7fbffcdaf36..5a688274f6a3 100644 --- a/drivers/hid/usbhid/hid-zpff.c +++ b/drivers/hid/usbhid/hid-zpff.c | |||
@@ -21,10 +21,6 @@ | |||
21 | */ | 21 | */ |
22 | 22 | ||
23 | 23 | ||
24 | /* #define DEBUG */ | ||
25 | |||
26 | #define debug(format, arg...) pr_debug("hid-zpff: " format "\n" , ## arg) | ||
27 | |||
28 | #include <linux/input.h> | 24 | #include <linux/input.h> |
29 | #include <linux/usb.h> | 25 | #include <linux/usb.h> |
30 | #include <linux/hid.h> | 26 | #include <linux/hid.h> |
@@ -49,14 +45,14 @@ static int hid_zpff_play(struct input_dev *dev, void *data, | |||
49 | 45 | ||
50 | left = effect->u.rumble.strong_magnitude; | 46 | left = effect->u.rumble.strong_magnitude; |
51 | right = effect->u.rumble.weak_magnitude; | 47 | right = effect->u.rumble.weak_magnitude; |
52 | debug("called with 0x%04x 0x%04x", left, right); | 48 | dbg_hid("called with 0x%04x 0x%04x\n", left, right); |
53 | 49 | ||
54 | left = left * 0x7f / 0xffff; | 50 | left = left * 0x7f / 0xffff; |
55 | right = right * 0x7f / 0xffff; | 51 | right = right * 0x7f / 0xffff; |
56 | 52 | ||
57 | zpff->report->field[2]->value[0] = left; | 53 | zpff->report->field[2]->value[0] = left; |
58 | zpff->report->field[3]->value[0] = right; | 54 | zpff->report->field[3]->value[0] = right; |
59 | debug("running with 0x%02x 0x%02x", left, right); | 55 | dbg_hid("running with 0x%02x 0x%02x\n", left, right); |
60 | usbhid_submit_report(hid, zpff->report, USB_DIR_OUT); | 56 | usbhid_submit_report(hid, zpff->report, USB_DIR_OUT); |
61 | 57 | ||
62 | return 0; | 58 | return 0; |
diff --git a/drivers/hid/usbhid/hiddev.c b/drivers/hid/usbhid/hiddev.c index 488d61bdbf2c..e793127f971e 100644 --- a/drivers/hid/usbhid/hiddev.c +++ b/drivers/hid/usbhid/hiddev.c | |||
@@ -779,7 +779,7 @@ int hiddev_connect(struct hid_device *hid) | |||
779 | 779 | ||
780 | retval = usb_register_dev(usbhid->intf, &hiddev_class); | 780 | retval = usb_register_dev(usbhid->intf, &hiddev_class); |
781 | if (retval) { | 781 | if (retval) { |
782 | err("Not able to get a minor for this device."); | 782 | err_hid("Not able to get a minor for this device."); |
783 | kfree(hiddev); | 783 | kfree(hiddev); |
784 | return -1; | 784 | return -1; |
785 | } | 785 | } |
diff --git a/drivers/hid/usbhid/usbkbd.c b/drivers/hid/usbhid/usbkbd.c index 130978780713..b76b02f7b52d 100644 --- a/drivers/hid/usbhid/usbkbd.c +++ b/drivers/hid/usbhid/usbkbd.c | |||
@@ -125,7 +125,7 @@ static void usb_kbd_irq(struct urb *urb) | |||
125 | resubmit: | 125 | resubmit: |
126 | i = usb_submit_urb (urb, GFP_ATOMIC); | 126 | i = usb_submit_urb (urb, GFP_ATOMIC); |
127 | if (i) | 127 | if (i) |
128 | err ("can't resubmit intr, %s-%s/input0, status %d", | 128 | err_hid ("can't resubmit intr, %s-%s/input0, status %d", |
129 | kbd->usbdev->bus->bus_name, | 129 | kbd->usbdev->bus->bus_name, |
130 | kbd->usbdev->devpath, i); | 130 | kbd->usbdev->devpath, i); |
131 | } | 131 | } |
@@ -151,7 +151,7 @@ static int usb_kbd_event(struct input_dev *dev, unsigned int type, | |||
151 | *(kbd->leds) = kbd->newleds; | 151 | *(kbd->leds) = kbd->newleds; |
152 | kbd->led->dev = kbd->usbdev; | 152 | kbd->led->dev = kbd->usbdev; |
153 | if (usb_submit_urb(kbd->led, GFP_ATOMIC)) | 153 | if (usb_submit_urb(kbd->led, GFP_ATOMIC)) |
154 | err("usb_submit_urb(leds) failed"); | 154 | err_hid("usb_submit_urb(leds) failed"); |
155 | 155 | ||
156 | return 0; | 156 | return 0; |
157 | } | 157 | } |
@@ -169,7 +169,7 @@ static void usb_kbd_led(struct urb *urb) | |||
169 | *(kbd->leds) = kbd->newleds; | 169 | *(kbd->leds) = kbd->newleds; |
170 | kbd->led->dev = kbd->usbdev; | 170 | kbd->led->dev = kbd->usbdev; |
171 | if (usb_submit_urb(kbd->led, GFP_ATOMIC)) | 171 | if (usb_submit_urb(kbd->led, GFP_ATOMIC)) |
172 | err("usb_submit_urb(leds) failed"); | 172 | err_hid("usb_submit_urb(leds) failed"); |
173 | } | 173 | } |
174 | 174 | ||
175 | static int usb_kbd_open(struct input_dev *dev) | 175 | static int usb_kbd_open(struct input_dev *dev) |
diff --git a/include/linux/hid.h b/include/linux/hid.h index 827ee748fd4c..eb53d9a9ae54 100644 --- a/include/linux/hid.h +++ b/include/linux/hid.h | |||
@@ -488,6 +488,11 @@ struct hid_descriptor { | |||
488 | #define IS_INPUT_APPLICATION(a) (((a >= 0x00010000) && (a <= 0x00010008)) || (a == 0x00010080) || (a == 0x000c0001)) | 488 | #define IS_INPUT_APPLICATION(a) (((a >= 0x00010000) && (a <= 0x00010008)) || (a == 0x00010080) || (a == 0x000c0001)) |
489 | 489 | ||
490 | /* HID core API */ | 490 | /* HID core API */ |
491 | |||
492 | #ifdef CONFIG_HID_DEBUG | ||
493 | extern int hid_debug; | ||
494 | #endif | ||
495 | |||
491 | extern void hidinput_hid_event(struct hid_device *, struct hid_field *, struct hid_usage *, __s32); | 496 | extern void hidinput_hid_event(struct hid_device *, struct hid_field *, struct hid_usage *, __s32); |
492 | extern void hidinput_report_event(struct hid_device *hid, struct hid_report *report); | 497 | extern void hidinput_report_event(struct hid_device *hid, struct hid_report *report); |
493 | extern int hidinput_connect(struct hid_device *); | 498 | extern int hidinput_connect(struct hid_device *); |
@@ -523,14 +528,19 @@ static inline int hid_pidff_init(struct hid_device *hid) { return -ENODEV; } | |||
523 | #else | 528 | #else |
524 | static inline int hid_ff_init(struct hid_device *hid) { return -1; } | 529 | static inline int hid_ff_init(struct hid_device *hid) { return -1; } |
525 | #endif | 530 | #endif |
526 | #ifdef DEBUG | 531 | |
527 | #define dbg(format, arg...) printk(KERN_DEBUG "%s: " format "\n" , \ | 532 | #ifdef CONFIG_HID_DEBUG |
528 | __FILE__ , ## arg) | 533 | #define dbg_hid(format, arg...) if (hid_debug) \ |
534 | printk(KERN_DEBUG "%s: " format ,\ | ||
535 | __FILE__ , ## arg) | ||
536 | #define dbg_hid_line(format, arg...) if (hid_debug) \ | ||
537 | printk(format, ## arg) | ||
529 | #else | 538 | #else |
530 | #define dbg(format, arg...) do {} while (0) | 539 | #define dbg_hid(format, arg...) do {} while (0) |
540 | #define dbg_hid_line dbg_hid | ||
531 | #endif | 541 | #endif |
532 | 542 | ||
533 | #define err(format, arg...) printk(KERN_ERR "%s: " format "\n" , \ | 543 | #define err_hid(format, arg...) printk(KERN_ERR "%s: " format "\n" , \ |
534 | __FILE__ , ## arg) | 544 | __FILE__ , ## arg) |
535 | #endif | 545 | #endif |
536 | 546 | ||