Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
hid-core.c
Go to the documentation of this file.
1 /*
2  * HID support for Linux
3  *
4  * Copyright (c) 1999 Andreas Gal
5  * Copyright (c) 2000-2005 Vojtech Pavlik <[email protected]>
6  * Copyright (c) 2005 Michael Haboustak <[email protected]> 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 
34 #include <linux/hid.h>
35 #include <linux/hiddev.h>
36 #include <linux/hid-debug.h>
37 #include <linux/hidraw.h>
38 
39 #include "hid-ids.h"
40 
41 /*
42  * Version Information
43  */
44 
45 #define DRIVER_DESC "HID core driver"
46 #define DRIVER_LICENSE "GPL"
47 
48 int hid_debug = 0;
50 MODULE_PARM_DESC(debug, "toggle HID debugging messages");
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(debug, "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, unsigned type, unsigned id)
62 {
63  struct hid_report_enum *report_enum = device->report_enum + type;
64  struct hid_report *report;
65 
66  if (report_enum->report_id_hash[id])
67  return report_enum->report_id_hash[id];
68 
69  report = kzalloc(sizeof(struct hid_report), GFP_KERNEL);
70  if (!report)
71  return NULL;
72 
73  if (id != 0)
74  report_enum->numbered = 1;
75 
76  report->id = id;
77  report->type = type;
78  report->size = 0;
79  report->device = device;
80  report_enum->report_id_hash[id] = report;
81 
82  list_add_tail(&report->list, &report_enum->report_list);
83 
84  return report;
85 }
87 
88 /*
89  * Register a new field for this report.
90  */
91 
92 static struct hid_field *hid_register_field(struct hid_report *report, unsigned usages, unsigned values)
93 {
94  struct hid_field *field;
95 
96  if (report->maxfield == HID_MAX_FIELDS) {
97  hid_err(report->device, "too many fields in report\n");
98  return NULL;
99  }
100 
101  field = kzalloc((sizeof(struct hid_field) +
102  usages * sizeof(struct hid_usage) +
103  values * sizeof(unsigned)), GFP_KERNEL);
104  if (!field)
105  return NULL;
106 
107  field->index = report->maxfield++;
108  report->field[field->index] = field;
109  field->usage = (struct hid_usage *)(field + 1);
110  field->value = (s32 *)(field->usage + usages);
111  field->report = report;
112 
113  return field;
114 }
115 
116 /*
117  * Open a collection. The type/usage is pushed on the stack.
118  */
119 
120 static int open_collection(struct hid_parser *parser, unsigned type)
121 {
122  struct hid_collection *collection;
123  unsigned usage;
124 
125  usage = parser->local.usage[0];
126 
128  hid_err(parser->device, "collection stack overflow\n");
129  return -EINVAL;
130  }
131 
132  if (parser->device->maxcollection == parser->device->collection_size) {
133  collection = kmalloc(sizeof(struct hid_collection) *
134  parser->device->collection_size * 2, GFP_KERNEL);
135  if (collection == NULL) {
136  hid_err(parser->device, "failed to reallocate collection array\n");
137  return -ENOMEM;
138  }
139  memcpy(collection, parser->device->collection,
140  sizeof(struct hid_collection) *
141  parser->device->collection_size);
142  memset(collection + parser->device->collection_size, 0,
143  sizeof(struct hid_collection) *
144  parser->device->collection_size);
145  kfree(parser->device->collection);
146  parser->device->collection = collection;
147  parser->device->collection_size *= 2;
148  }
149 
150  parser->collection_stack[parser->collection_stack_ptr++] =
151  parser->device->maxcollection;
152 
153  collection = parser->device->collection +
154  parser->device->maxcollection++;
155  collection->type = type;
156  collection->usage = usage;
157  collection->level = parser->collection_stack_ptr - 1;
158 
159  if (type == HID_COLLECTION_APPLICATION)
160  parser->device->maxapplication++;
161 
162  return 0;
163 }
164 
165 /*
166  * Close a collection.
167  */
168 
169 static int close_collection(struct hid_parser *parser)
170 {
171  if (!parser->collection_stack_ptr) {
172  hid_err(parser->device, "collection stack underflow\n");
173  return -EINVAL;
174  }
175  parser->collection_stack_ptr--;
176  return 0;
177 }
178 
179 /*
180  * Climb up the stack, search for the specified collection type
181  * and return the usage.
182  */
183 
184 static unsigned hid_lookup_collection(struct hid_parser *parser, unsigned type)
185 {
186  struct hid_collection *collection = parser->device->collection;
187  int n;
188 
189  for (n = parser->collection_stack_ptr - 1; n >= 0; n--) {
190  unsigned index = parser->collection_stack[n];
191  if (collection[index].type == type)
192  return collection[index].usage;
193  }
194  return 0; /* we know nothing about this usage type */
195 }
196 
197 /*
198  * Add a usage to the temporary parser table.
199  */
200 
201 static int hid_add_usage(struct hid_parser *parser, unsigned usage)
202 {
203  if (parser->local.usage_index >= HID_MAX_USAGES) {
204  hid_err(parser->device, "usage index exceeded\n");
205  return -1;
206  }
207  parser->local.usage[parser->local.usage_index] = usage;
208  parser->local.collection_index[parser->local.usage_index] =
209  parser->collection_stack_ptr ?
210  parser->collection_stack[parser->collection_stack_ptr - 1] : 0;
211  parser->local.usage_index++;
212  return 0;
213 }
214 
215 /*
216  * Register a new field for this report.
217  */
218 
219 static int hid_add_field(struct hid_parser *parser, unsigned report_type, unsigned flags)
220 {
221  struct hid_report *report;
222  struct hid_field *field;
223  int usages;
224  unsigned offset;
225  int i;
226 
227  report = hid_register_report(parser->device, report_type, parser->global.report_id);
228  if (!report) {
229  hid_err(parser->device, "hid_register_report failed\n");
230  return -1;
231  }
232 
233  /* Handle both signed and unsigned cases properly */
234  if ((parser->global.logical_minimum < 0 &&
235  parser->global.logical_maximum <
236  parser->global.logical_minimum) ||
237  (parser->global.logical_minimum >= 0 &&
238  (__u32)parser->global.logical_maximum <
239  (__u32)parser->global.logical_minimum)) {
240  dbg_hid("logical range invalid 0x%x 0x%x\n",
241  parser->global.logical_minimum,
242  parser->global.logical_maximum);
243  return -1;
244  }
245 
246  offset = report->size;
247  report->size += parser->global.report_size * parser->global.report_count;
248 
249  if (!parser->local.usage_index) /* Ignore padding fields */
250  return 0;
251 
252  usages = max_t(int, parser->local.usage_index, parser->global.report_count);
253 
254  field = hid_register_field(report, usages, parser->global.report_count);
255  if (!field)
256  return 0;
257 
258  field->physical = hid_lookup_collection(parser, HID_COLLECTION_PHYSICAL);
259  field->logical = hid_lookup_collection(parser, HID_COLLECTION_LOGICAL);
260  field->application = hid_lookup_collection(parser, HID_COLLECTION_APPLICATION);
261 
262  for (i = 0; i < usages; i++) {
263  int j = i;
264  /* Duplicate the last usage we parsed if we have excess values */
265  if (i >= parser->local.usage_index)
266  j = parser->local.usage_index - 1;
267  field->usage[i].hid = parser->local.usage[j];
268  field->usage[i].collection_index =
269  parser->local.collection_index[j];
270  }
271 
272  field->maxusage = usages;
273  field->flags = flags;
274  field->report_offset = offset;
275  field->report_type = report_type;
276  field->report_size = parser->global.report_size;
277  field->report_count = parser->global.report_count;
278  field->logical_minimum = parser->global.logical_minimum;
279  field->logical_maximum = parser->global.logical_maximum;
280  field->physical_minimum = parser->global.physical_minimum;
281  field->physical_maximum = parser->global.physical_maximum;
282  field->unit_exponent = parser->global.unit_exponent;
283  field->unit = parser->global.unit;
284 
285  return 0;
286 }
287 
288 /*
289  * Read data value from item.
290  */
291 
292 static u32 item_udata(struct hid_item *item)
293 {
294  switch (item->size) {
295  case 1: return item->data.u8;
296  case 2: return item->data.u16;
297  case 4: return item->data.u32;
298  }
299  return 0;
300 }
301 
302 static s32 item_sdata(struct hid_item *item)
303 {
304  switch (item->size) {
305  case 1: return item->data.s8;
306  case 2: return item->data.s16;
307  case 4: return item->data.s32;
308  }
309  return 0;
310 }
311 
312 /*
313  * Process a global item.
314  */
315 
316 static int hid_parser_global(struct hid_parser *parser, struct hid_item *item)
317 {
318  switch (item->tag) {
320 
321  if (parser->global_stack_ptr == HID_GLOBAL_STACK_SIZE) {
322  hid_err(parser->device, "global environment stack overflow\n");
323  return -1;
324  }
325 
326  memcpy(parser->global_stack + parser->global_stack_ptr++,
327  &parser->global, sizeof(struct hid_global));
328  return 0;
329 
331 
332  if (!parser->global_stack_ptr) {
333  hid_err(parser->device, "global environment stack underflow\n");
334  return -1;
335  }
336 
337  memcpy(&parser->global, parser->global_stack +
338  --parser->global_stack_ptr, sizeof(struct hid_global));
339  return 0;
340 
342  parser->global.usage_page = item_udata(item);
343  return 0;
344 
346  parser->global.logical_minimum = item_sdata(item);
347  return 0;
348 
350  if (parser->global.logical_minimum < 0)
351  parser->global.logical_maximum = item_sdata(item);
352  else
353  parser->global.logical_maximum = item_udata(item);
354  return 0;
355 
357  parser->global.physical_minimum = item_sdata(item);
358  return 0;
359 
361  if (parser->global.physical_minimum < 0)
362  parser->global.physical_maximum = item_sdata(item);
363  else
364  parser->global.physical_maximum = item_udata(item);
365  return 0;
366 
368  parser->global.unit_exponent = item_sdata(item);
369  return 0;
370 
372  parser->global.unit = item_udata(item);
373  return 0;
374 
376  parser->global.report_size = item_udata(item);
377  if (parser->global.report_size > 128) {
378  hid_err(parser->device, "invalid report_size %d\n",
379  parser->global.report_size);
380  return -1;
381  }
382  return 0;
383 
385  parser->global.report_count = item_udata(item);
386  if (parser->global.report_count > HID_MAX_USAGES) {
387  hid_err(parser->device, "invalid report_count %d\n",
388  parser->global.report_count);
389  return -1;
390  }
391  return 0;
392 
394  parser->global.report_id = item_udata(item);
395  if (parser->global.report_id == 0) {
396  hid_err(parser->device, "report_id 0 is invalid\n");
397  return -1;
398  }
399  return 0;
400 
401  default:
402  hid_err(parser->device, "unknown global tag 0x%x\n", item->tag);
403  return -1;
404  }
405 }
406 
407 /*
408  * Process a local item.
409  */
410 
411 static int hid_parser_local(struct hid_parser *parser, struct hid_item *item)
412 {
413  __u32 data;
414  unsigned n;
415 
416  data = item_udata(item);
417 
418  switch (item->tag) {
420 
421  if (data) {
422  /*
423  * We treat items before the first delimiter
424  * as global to all usage sets (branch 0).
425  * In the moment we process only these global
426  * items and the first delimiter set.
427  */
428  if (parser->local.delimiter_depth != 0) {
429  hid_err(parser->device, "nested delimiters\n");
430  return -1;
431  }
432  parser->local.delimiter_depth++;
433  parser->local.delimiter_branch++;
434  } else {
435  if (parser->local.delimiter_depth < 1) {
436  hid_err(parser->device, "bogus close delimiter\n");
437  return -1;
438  }
439  parser->local.delimiter_depth--;
440  }
441  return 1;
442 
444 
445  if (parser->local.delimiter_branch > 1) {
446  dbg_hid("alternative usage ignored\n");
447  return 0;
448  }
449 
450  if (item->size <= 2)
451  data = (parser->global.usage_page << 16) + data;
452 
453  return hid_add_usage(parser, data);
454 
456 
457  if (parser->local.delimiter_branch > 1) {
458  dbg_hid("alternative usage ignored\n");
459  return 0;
460  }
461 
462  if (item->size <= 2)
463  data = (parser->global.usage_page << 16) + data;
464 
465  parser->local.usage_minimum = data;
466  return 0;
467 
469 
470  if (parser->local.delimiter_branch > 1) {
471  dbg_hid("alternative usage ignored\n");
472  return 0;
473  }
474 
475  if (item->size <= 2)
476  data = (parser->global.usage_page << 16) + data;
477 
478  for (n = parser->local.usage_minimum; n <= data; n++)
479  if (hid_add_usage(parser, n)) {
480  dbg_hid("hid_add_usage failed\n");
481  return -1;
482  }
483  return 0;
484 
485  default:
486 
487  dbg_hid("unknown local item tag 0x%x\n", item->tag);
488  return 0;
489  }
490  return 0;
491 }
492 
493 /*
494  * Process a main item.
495  */
496 
497 static int hid_parser_main(struct hid_parser *parser, struct hid_item *item)
498 {
499  __u32 data;
500  int ret;
501 
502  data = item_udata(item);
503 
504  switch (item->tag) {
506  ret = open_collection(parser, data & 0xff);
507  break;
509  ret = close_collection(parser);
510  break;
512  ret = hid_add_field(parser, HID_INPUT_REPORT, data);
513  break;
515  ret = hid_add_field(parser, HID_OUTPUT_REPORT, data);
516  break;
518  ret = hid_add_field(parser, HID_FEATURE_REPORT, data);
519  break;
520  default:
521  hid_err(parser->device, "unknown main item tag 0x%x\n", item->tag);
522  ret = 0;
523  }
524 
525  memset(&parser->local, 0, sizeof(parser->local)); /* Reset the local parser environment */
526 
527  return ret;
528 }
529 
530 /*
531  * Process a reserved item.
532  */
533 
534 static int hid_parser_reserved(struct hid_parser *parser, struct hid_item *item)
535 {
536  dbg_hid("reserved item type, tag 0x%x\n", item->tag);
537  return 0;
538 }
539 
540 /*
541  * Free a report and all registered fields. The field->usage and
542  * field->value table's are allocated behind the field, so we need
543  * only to free(field) itself.
544  */
545 
546 static void hid_free_report(struct hid_report *report)
547 {
548  unsigned n;
549 
550  for (n = 0; n < report->maxfield; n++)
551  kfree(report->field[n]);
552  kfree(report);
553 }
554 
555 /*
556  * Close report. This function returns the device
557  * state to the point prior to hid_open_report().
558  */
559 static void hid_close_report(struct hid_device *device)
560 {
561  unsigned i, j;
562 
563  for (i = 0; i < HID_REPORT_TYPES; i++) {
564  struct hid_report_enum *report_enum = device->report_enum + i;
565 
566  for (j = 0; j < 256; j++) {
567  struct hid_report *report = report_enum->report_id_hash[j];
568  if (report)
569  hid_free_report(report);
570  }
571  memset(report_enum, 0, sizeof(*report_enum));
572  INIT_LIST_HEAD(&report_enum->report_list);
573  }
574 
575  kfree(device->rdesc);
576  device->rdesc = NULL;
577  device->rsize = 0;
578 
579  kfree(device->collection);
580  device->collection = NULL;
581  device->collection_size = 0;
582  device->maxcollection = 0;
583  device->maxapplication = 0;
584 
585  device->status &= ~HID_STAT_PARSED;
586 }
587 
588 /*
589  * Free a device structure, all reports, and all fields.
590  */
591 
592 static void hid_device_release(struct device *dev)
593 {
594  struct hid_device *hid = container_of(dev, struct hid_device, dev);
595 
596  hid_close_report(hid);
597  kfree(hid->dev_rdesc);
598  kfree(hid);
599 }
600 
601 /*
602  * Fetch a report description item from the data stream. We support long
603  * items, though they are not used yet.
604  */
605 
606 static u8 *fetch_item(__u8 *start, __u8 *end, struct hid_item *item)
607 {
608  u8 b;
609 
610  if ((end - start) <= 0)
611  return NULL;
612 
613  b = *start++;
614 
615  item->type = (b >> 2) & 3;
616  item->tag = (b >> 4) & 15;
617 
618  if (item->tag == HID_ITEM_TAG_LONG) {
619 
621 
622  if ((end - start) < 2)
623  return NULL;
624 
625  item->size = *start++;
626  item->tag = *start++;
627 
628  if ((end - start) < item->size)
629  return NULL;
630 
631  item->data.longdata = start;
632  start += item->size;
633  return start;
634  }
635 
637  item->size = b & 3;
638 
639  switch (item->size) {
640  case 0:
641  return start;
642 
643  case 1:
644  if ((end - start) < 1)
645  return NULL;
646  item->data.u8 = *start++;
647  return start;
648 
649  case 2:
650  if ((end - start) < 2)
651  return NULL;
652  item->data.u16 = get_unaligned_le16(start);
653  start = (__u8 *)((__le16 *)start + 1);
654  return start;
655 
656  case 3:
657  item->size++;
658  if ((end - start) < 4)
659  return NULL;
660  item->data.u32 = get_unaligned_le32(start);
661  start = (__u8 *)((__le32 *)start + 1);
662  return start;
663  }
664 
665  return NULL;
666 }
667 
668 static void hid_scan_usage(struct hid_device *hid, u32 usage)
669 {
670  if (usage == HID_DG_CONTACTID)
672 }
673 
674 /*
675  * Scan a report descriptor before the device is added to the bus.
676  * Sets device groups and other properties that determine what driver
677  * to load.
678  */
679 static int hid_scan_report(struct hid_device *hid)
680 {
681  unsigned int page = 0, delim = 0;
682  __u8 *start = hid->dev_rdesc;
683  __u8 *end = start + hid->dev_rsize;
684  unsigned int u, u_min = 0, u_max = 0;
685  struct hid_item item;
686 
687  hid->group = HID_GROUP_GENERIC;
688  while ((start = fetch_item(start, end, &item)) != NULL) {
689  if (item.format != HID_ITEM_FORMAT_SHORT)
690  return -EINVAL;
691  if (item.type == HID_ITEM_TYPE_GLOBAL) {
693  page = item_udata(&item) << 16;
694  } else if (item.type == HID_ITEM_TYPE_LOCAL) {
695  if (delim > 1)
696  break;
697  u = item_udata(&item);
698  if (item.size <= 2)
699  u += page;
700  switch (item.tag) {
702  delim += !!u;
703  break;
705  hid_scan_usage(hid, u);
706  break;
708  u_min = u;
709  break;
711  u_max = u;
712  for (u = u_min; u <= u_max; u++)
713  hid_scan_usage(hid, u);
714  break;
715  }
716  }
717  }
718 
719  return 0;
720 }
721 
732 int hid_parse_report(struct hid_device *hid, __u8 *start, unsigned size)
733 {
734  hid->dev_rdesc = kmemdup(start, size, GFP_KERNEL);
735  if (!hid->dev_rdesc)
736  return -ENOMEM;
737  hid->dev_rsize = size;
738  return 0;
739 }
741 
754 int hid_open_report(struct hid_device *device)
755 {
756  struct hid_parser *parser;
757  struct hid_item item;
758  unsigned int size;
759  __u8 *start;
760  __u8 *buf;
761  __u8 *end;
762  int ret;
763  static int (*dispatch_type[])(struct hid_parser *parser,
764  struct hid_item *item) = {
765  hid_parser_main,
766  hid_parser_global,
767  hid_parser_local,
768  hid_parser_reserved
769  };
770 
771  if (WARN_ON(device->status & HID_STAT_PARSED))
772  return -EBUSY;
773 
774  start = device->dev_rdesc;
775  if (WARN_ON(!start))
776  return -ENODEV;
777  size = device->dev_rsize;
778 
779  buf = kmemdup(start, size, GFP_KERNEL);
780  if (buf == NULL)
781  return -ENOMEM;
782 
783  if (device->driver->report_fixup)
784  start = device->driver->report_fixup(device, buf, &size);
785  else
786  start = buf;
787 
788  start = kmemdup(start, size, GFP_KERNEL);
789  kfree(buf);
790  if (start == NULL)
791  return -ENOMEM;
792 
793  device->rdesc = start;
794  device->rsize = size;
795 
796  parser = vzalloc(sizeof(struct hid_parser));
797  if (!parser) {
798  ret = -ENOMEM;
799  goto err;
800  }
801 
802  parser->device = device;
803 
804  end = start + size;
805 
806  device->collection = kcalloc(HID_DEFAULT_NUM_COLLECTIONS,
807  sizeof(struct hid_collection), GFP_KERNEL);
808  if (!device->collection) {
809  ret = -ENOMEM;
810  goto err;
811  }
813 
814  ret = -EINVAL;
815  while ((start = fetch_item(start, end, &item)) != NULL) {
816 
817  if (item.format != HID_ITEM_FORMAT_SHORT) {
818  hid_err(device, "unexpected long global item\n");
819  goto err;
820  }
821 
822  if (dispatch_type[item.type](parser, &item)) {
823  hid_err(device, "item %u %u %u %u parsing failed\n",
824  item.format, (unsigned)item.size,
825  (unsigned)item.type, (unsigned)item.tag);
826  goto err;
827  }
828 
829  if (start == end) {
830  if (parser->collection_stack_ptr) {
831  hid_err(device, "unbalanced collection at end of report description\n");
832  goto err;
833  }
834  if (parser->local.delimiter_depth) {
835  hid_err(device, "unbalanced delimiter at end of report description\n");
836  goto err;
837  }
838  vfree(parser);
839  device->status |= HID_STAT_PARSED;
840  return 0;
841  }
842  }
843 
844  hid_err(device, "item fetching failed at offset %d\n", (int)(end - start));
845 err:
846  vfree(parser);
847  hid_close_report(device);
848  return ret;
849 }
851 
852 /*
853  * Convert a signed n-bit integer to signed 32-bit integer. Common
854  * cases are done through the compiler, the screwed things has to be
855  * done by hand.
856  */
857 
858 static s32 snto32(__u32 value, unsigned n)
859 {
860  switch (n) {
861  case 8: return ((__s8)value);
862  case 16: return ((__s16)value);
863  case 32: return ((__s32)value);
864  }
865  return value & (1 << (n - 1)) ? value | (-1 << n) : value;
866 }
867 
868 /*
869  * Convert a signed 32-bit integer to a signed n-bit integer.
870  */
871 
872 static u32 s32ton(__s32 value, unsigned n)
873 {
874  s32 a = value >> (n - 1);
875  if (a && a != -1)
876  return value < 0 ? 1 << (n - 1) : (1 << (n - 1)) - 1;
877  return value & ((1 << n) - 1);
878 }
879 
880 /*
881  * Extract/implement a data field from/to a little endian report (bit array).
882  *
883  * Code sort-of follows HID spec:
884  * http://www.usb.org/developers/devclass_docs/HID1_11.pdf
885  *
886  * While the USB HID spec allows unlimited length bit fields in "report
887  * descriptors", most devices never use more than 16 bits.
888  * One model of UPS is claimed to report "LINEV" as a 32-bit field.
889  * Search linux-kernel and linux-usb-devel archives for "hid-core extract".
890  */
891 
892 static __u32 extract(const struct hid_device *hid, __u8 *report,
893  unsigned offset, unsigned n)
894 {
895  u64 x;
896 
897  if (n > 32)
898  hid_warn(hid, "extract() called with n (%d) > 32! (%s)\n",
899  n, current->comm);
900 
901  report += offset >> 3; /* adjust byte index */
902  offset &= 7; /* now only need bit offset into one byte */
903  x = get_unaligned_le64(report);
904  x = (x >> offset) & ((1ULL << n) - 1); /* extract bit field */
905  return (u32) x;
906 }
907 
908 /*
909  * "implement" : set bits in a little endian bit stream.
910  * Same concepts as "extract" (see comments above).
911  * The data mangled in the bit stream remains in little endian
912  * order the whole time. It make more sense to talk about
913  * endianness of register values by considering a register
914  * a "cached" copy of the little endiad bit stream.
915  */
916 static void implement(const struct hid_device *hid, __u8 *report,
917  unsigned offset, unsigned n, __u32 value)
918 {
919  u64 x;
920  u64 m = (1ULL << n) - 1;
921 
922  if (n > 32)
923  hid_warn(hid, "%s() called with n (%d) > 32! (%s)\n",
924  __func__, n, current->comm);
925 
926  if (value > m)
927  hid_warn(hid, "%s() called with too large value %d! (%s)\n",
928  __func__, value, current->comm);
929  WARN_ON(value > m);
930  value &= m;
931 
932  report += offset >> 3;
933  offset &= 7;
934 
935  x = get_unaligned_le64(report);
936  x &= ~(m << offset);
937  x |= ((u64)value) << offset;
938  put_unaligned_le64(x, report);
939 }
940 
941 /*
942  * Search an array for a value.
943  */
944 
945 static int search(__s32 *array, __s32 value, unsigned n)
946 {
947  while (n--) {
948  if (*array++ == value)
949  return 0;
950  }
951  return -1;
952 }
953 
962 static int hid_match_report(struct hid_device *hid, struct hid_report *report)
963 {
964  const struct hid_report_id *id = hid->driver->report_table;
965 
966  if (!id) /* NULL means all */
967  return 1;
968 
969  for (; id->report_type != HID_TERMINATOR; id++)
970  if (id->report_type == HID_ANY_ID ||
971  id->report_type == report->type)
972  return 1;
973  return 0;
974 }
975 
985 static int hid_match_usage(struct hid_device *hid, struct hid_usage *usage)
986 {
987  const struct hid_usage_id *id = hid->driver->usage_table;
988 
989  if (!id) /* NULL means all */
990  return 1;
991 
992  for (; id->usage_type != HID_ANY_ID - 1; id++)
993  if ((id->usage_hid == HID_ANY_ID ||
994  id->usage_hid == usage->hid) &&
995  (id->usage_type == HID_ANY_ID ||
996  id->usage_type == usage->type) &&
997  (id->usage_code == HID_ANY_ID ||
998  id->usage_code == usage->code))
999  return 1;
1000  return 0;
1001 }
1002 
1003 static void hid_process_event(struct hid_device *hid, struct hid_field *field,
1004  struct hid_usage *usage, __s32 value, int interrupt)
1005 {
1006  struct hid_driver *hdrv = hid->driver;
1007  int ret;
1008 
1009  if (!list_empty(&hid->debug_list))
1010  hid_dump_input(hid, usage, value);
1011 
1012  if (hdrv && hdrv->event && hid_match_usage(hid, usage)) {
1013  ret = hdrv->event(hid, field, usage, value);
1014  if (ret != 0) {
1015  if (ret < 0)
1016  hid_err(hid, "%s's event failed with %d\n",
1017  hdrv->name, ret);
1018  return;
1019  }
1020  }
1021 
1022  if (hid->claimed & HID_CLAIMED_INPUT)
1023  hidinput_hid_event(hid, field, usage, value);
1024  if (hid->claimed & HID_CLAIMED_HIDDEV && interrupt && hid->hiddev_hid_event)
1025  hid->hiddev_hid_event(hid, field, usage, value);
1026 }
1027 
1028 /*
1029  * Analyse a received field, and fetch the data from it. The field
1030  * content is stored for next report processing (we do differential
1031  * reporting to the layer).
1032  */
1033 
1034 static void hid_input_field(struct hid_device *hid, struct hid_field *field,
1035  __u8 *data, int interrupt)
1036 {
1037  unsigned n;
1038  unsigned count = field->report_count;
1039  unsigned offset = field->report_offset;
1040  unsigned size = field->report_size;
1041  __s32 min = field->logical_minimum;
1042  __s32 max = field->logical_maximum;
1043  __s32 *value;
1044 
1045  value = kmalloc(sizeof(__s32) * count, GFP_ATOMIC);
1046  if (!value)
1047  return;
1048 
1049  for (n = 0; n < count; n++) {
1050 
1051  value[n] = min < 0 ?
1052  snto32(extract(hid, data, offset + n * size, size),
1053  size) :
1054  extract(hid, data, offset + n * size, size);
1055 
1056  /* Ignore report if ErrorRollOver */
1057  if (!(field->flags & HID_MAIN_ITEM_VARIABLE) &&
1058  value[n] >= min && value[n] <= max &&
1059  field->usage[value[n] - min].hid == HID_UP_KEYBOARD + 1)
1060  goto exit;
1061  }
1062 
1063  for (n = 0; n < count; n++) {
1064 
1065  if (HID_MAIN_ITEM_VARIABLE & field->flags) {
1066  hid_process_event(hid, field, &field->usage[n], value[n], interrupt);
1067  continue;
1068  }
1069 
1070  if (field->value[n] >= min && field->value[n] <= max
1071  && field->usage[field->value[n] - min].hid
1072  && search(value, field->value[n], count))
1073  hid_process_event(hid, field, &field->usage[field->value[n] - min], 0, interrupt);
1074 
1075  if (value[n] >= min && value[n] <= max
1076  && field->usage[value[n] - min].hid
1077  && search(field->value, value[n], count))
1078  hid_process_event(hid, field, &field->usage[value[n] - min], 1, interrupt);
1079  }
1080 
1081  memcpy(field->value, value, count * sizeof(__s32));
1082 exit:
1083  kfree(value);
1084 }
1085 
1086 /*
1087  * Output the field into the report.
1088  */
1089 
1090 static void hid_output_field(const struct hid_device *hid,
1091  struct hid_field *field, __u8 *data)
1092 {
1093  unsigned count = field->report_count;
1094  unsigned offset = field->report_offset;
1095  unsigned size = field->report_size;
1096  unsigned n;
1097 
1098  for (n = 0; n < count; n++) {
1099  if (field->logical_minimum < 0) /* signed values */
1100  implement(hid, data, offset + n * size, size,
1101  s32ton(field->value[n], size));
1102  else /* unsigned values */
1103  implement(hid, data, offset + n * size, size,
1104  field->value[n]);
1105  }
1106 }
1107 
1108 /*
1109  * Create a report.
1110  */
1111 
1112 void hid_output_report(struct hid_report *report, __u8 *data)
1113 {
1114  unsigned n;
1115 
1116  if (report->id > 0)
1117  *data++ = report->id;
1118 
1119  memset(data, 0, ((report->size - 1) >> 3) + 1);
1120  for (n = 0; n < report->maxfield; n++)
1121  hid_output_field(report->device, report->field[n], data);
1122 }
1124 
1125 /*
1126  * Set a field value. The report this field belongs to has to be
1127  * created and transferred to the device, to set this value in the
1128  * device.
1129  */
1130 
1131 int hid_set_field(struct hid_field *field, unsigned offset, __s32 value)
1132 {
1133  unsigned size = field->report_size;
1134 
1135  hid_dump_input(field->report->device, field->usage + offset, value);
1136 
1137  if (offset >= field->report_count) {
1138  hid_err(field->report->device, "offset (%d) exceeds report_count (%d)\n",
1139  offset, field->report_count);
1140  return -1;
1141  }
1142  if (field->logical_minimum < 0) {
1143  if (value != snto32(s32ton(value, size), size)) {
1144  hid_err(field->report->device, "value %d is out of range\n", value);
1145  return -1;
1146  }
1147  }
1148  field->value[offset] = value;
1149  return 0;
1150 }
1152 
1153 static struct hid_report *hid_get_report(struct hid_report_enum *report_enum,
1154  const u8 *data)
1155 {
1156  struct hid_report *report;
1157  unsigned int n = 0; /* Normally report number is 0 */
1158 
1159  /* Device uses numbered reports, data[0] is report number */
1160  if (report_enum->numbered)
1161  n = *data;
1162 
1163  report = report_enum->report_id_hash[n];
1164  if (report == NULL)
1165  dbg_hid("undefined report_id %u received\n", n);
1166 
1167  return report;
1168 }
1169 
1170 int hid_report_raw_event(struct hid_device *hid, int type, u8 *data, int size,
1171  int interrupt)
1172 {
1173  struct hid_report_enum *report_enum = hid->report_enum + type;
1174  struct hid_report *report;
1175  unsigned int a;
1176  int rsize, csize = size;
1177  u8 *cdata = data;
1178  int ret = 0;
1179 
1180  report = hid_get_report(report_enum, data);
1181  if (!report)
1182  goto out;
1183 
1184  if (report_enum->numbered) {
1185  cdata++;
1186  csize--;
1187  }
1188 
1189  rsize = ((report->size - 1) >> 3) + 1;
1190 
1191  if (rsize > HID_MAX_BUFFER_SIZE)
1192  rsize = HID_MAX_BUFFER_SIZE;
1193 
1194  if (csize < rsize) {
1195  dbg_hid("report %d is too short, (%d < %d)\n", report->id,
1196  csize, rsize);
1197  memset(cdata + csize, 0, rsize - csize);
1198  }
1199 
1200  if ((hid->claimed & HID_CLAIMED_HIDDEV) && hid->hiddev_report_event)
1201  hid->hiddev_report_event(hid, report);
1202  if (hid->claimed & HID_CLAIMED_HIDRAW) {
1203  ret = hidraw_report_event(hid, data, size);
1204  if (ret)
1205  goto out;
1206  }
1207 
1208  if (hid->claimed != HID_CLAIMED_HIDRAW) {
1209  for (a = 0; a < report->maxfield; a++)
1210  hid_input_field(hid, report->field[a], cdata, interrupt);
1211  }
1212 
1213  if (hid->claimed & HID_CLAIMED_INPUT)
1214  hidinput_report_event(hid, report);
1215 out:
1216  return ret;
1217 }
1219 
1231 int hid_input_report(struct hid_device *hid, int type, u8 *data, int size, int interrupt)
1232 {
1233  struct hid_report_enum *report_enum;
1234  struct hid_driver *hdrv;
1235  struct hid_report *report;
1236  char *buf;
1237  unsigned int i;
1238  int ret = 0;
1239 
1240  if (!hid)
1241  return -ENODEV;
1242 
1243  if (down_trylock(&hid->driver_lock))
1244  return -EBUSY;
1245 
1246  if (!hid->driver) {
1247  ret = -ENODEV;
1248  goto unlock;
1249  }
1250  report_enum = hid->report_enum + type;
1251  hdrv = hid->driver;
1252 
1253  if (!size) {
1254  dbg_hid("empty report\n");
1255  ret = -1;
1256  goto unlock;
1257  }
1258 
1259  /* Avoid unnecessary overhead if debugfs is disabled */
1260  if (list_empty(&hid->debug_list))
1261  goto nomem;
1262 
1263  buf = kmalloc(sizeof(char) * HID_DEBUG_BUFSIZE, GFP_ATOMIC);
1264 
1265  if (!buf)
1266  goto nomem;
1267 
1268  /* dump the report */
1269  snprintf(buf, HID_DEBUG_BUFSIZE - 1,
1270  "\nreport (size %u) (%snumbered) = ", size, report_enum->numbered ? "" : "un");
1271  hid_debug_event(hid, buf);
1272 
1273  for (i = 0; i < size; i++) {
1274  snprintf(buf, HID_DEBUG_BUFSIZE - 1,
1275  " %02x", data[i]);
1276  hid_debug_event(hid, buf);
1277  }
1278  hid_debug_event(hid, "\n");
1279  kfree(buf);
1280 
1281 nomem:
1282  report = hid_get_report(report_enum, data);
1283 
1284  if (!report) {
1285  ret = -1;
1286  goto unlock;
1287  }
1288 
1289  if (hdrv && hdrv->raw_event && hid_match_report(hid, report)) {
1290  ret = hdrv->raw_event(hid, report, data, size);
1291  if (ret != 0) {
1292  ret = ret < 0 ? ret : 0;
1293  goto unlock;
1294  }
1295  }
1296 
1297  ret = hid_report_raw_event(hid, type, data, size, interrupt);
1298 
1299 unlock:
1300  up(&hid->driver_lock);
1301  return ret;
1302 }
1304 
1305 static bool hid_match_one_id(struct hid_device *hdev,
1306  const struct hid_device_id *id)
1307 {
1308  return (id->bus == HID_BUS_ANY || id->bus == hdev->bus) &&
1309  (id->group == HID_GROUP_ANY || id->group == hdev->group) &&
1310  (id->vendor == HID_ANY_ID || id->vendor == hdev->vendor) &&
1311  (id->product == HID_ANY_ID || id->product == hdev->product);
1312 }
1313 
1314 const struct hid_device_id *hid_match_id(struct hid_device *hdev,
1315  const struct hid_device_id *id)
1316 {
1317  for (; id->bus; id++)
1318  if (hid_match_one_id(hdev, id))
1319  return id;
1320 
1321  return NULL;
1322 }
1323 
1324 static const struct hid_device_id hid_hiddev_list[] = {
1327  { }
1328 };
1329 
1330 static bool hid_hiddev(struct hid_device *hdev)
1331 {
1332  return !!hid_match_id(hdev, hid_hiddev_list);
1333 }
1334 
1335 
1336 static ssize_t
1337 read_report_descriptor(struct file *filp, struct kobject *kobj,
1338  struct bin_attribute *attr,
1339  char *buf, loff_t off, size_t count)
1340 {
1341  struct device *dev = container_of(kobj, struct device, kobj);
1342  struct hid_device *hdev = container_of(dev, struct hid_device, dev);
1343 
1344  if (off >= hdev->rsize)
1345  return 0;
1346 
1347  if (off + count > hdev->rsize)
1348  count = hdev->rsize - off;
1349 
1350  memcpy(buf, hdev->rdesc + off, count);
1351 
1352  return count;
1353 }
1354 
1355 static struct bin_attribute dev_bin_attr_report_desc = {
1356  .attr = { .name = "report_descriptor", .mode = 0444 },
1357  .read = read_report_descriptor,
1358  .size = HID_MAX_DESCRIPTOR_SIZE,
1359 };
1360 
1361 int hid_connect(struct hid_device *hdev, unsigned int connect_mask)
1362 {
1363  static const char *types[] = { "Device", "Pointer", "Mouse", "Device",
1364  "Joystick", "Gamepad", "Keyboard", "Keypad",
1365  "Multi-Axis Controller"
1366  };
1367  const char *type, *bus;
1368  char buf[64];
1369  unsigned int i;
1370  int len;
1371  int ret;
1372 
1373  if (hdev->quirks & HID_QUIRK_HIDDEV_FORCE)
1374  connect_mask |= (HID_CONNECT_HIDDEV_FORCE | HID_CONNECT_HIDDEV);
1375  if (hdev->quirks & HID_QUIRK_HIDINPUT_FORCE)
1376  connect_mask |= HID_CONNECT_HIDINPUT_FORCE;
1377  if (hdev->bus != BUS_USB)
1378  connect_mask &= ~HID_CONNECT_HIDDEV;
1379  if (hid_hiddev(hdev))
1380  connect_mask |= HID_CONNECT_HIDDEV_FORCE;
1381 
1382  if ((connect_mask & HID_CONNECT_HIDINPUT) && !hidinput_connect(hdev,
1383  connect_mask & HID_CONNECT_HIDINPUT_FORCE))
1384  hdev->claimed |= HID_CLAIMED_INPUT;
1385 
1386  if ((connect_mask & HID_CONNECT_HIDDEV) && hdev->hiddev_connect &&
1387  !hdev->hiddev_connect(hdev,
1388  connect_mask & HID_CONNECT_HIDDEV_FORCE))
1389  hdev->claimed |= HID_CLAIMED_HIDDEV;
1390  if ((connect_mask & HID_CONNECT_HIDRAW) && !hidraw_connect(hdev))
1391  hdev->claimed |= HID_CLAIMED_HIDRAW;
1392 
1393  /* Drivers with the ->raw_event callback set are not required to connect
1394  * to any other listener. */
1395  if (!hdev->claimed && !hdev->driver->raw_event) {
1396  hid_err(hdev, "device has no listeners, quitting\n");
1397  return -ENODEV;
1398  }
1399 
1400  if ((hdev->claimed & HID_CLAIMED_INPUT) &&
1401  (connect_mask & HID_CONNECT_FF) && hdev->ff_init)
1402  hdev->ff_init(hdev);
1403 
1404  len = 0;
1405  if (hdev->claimed & HID_CLAIMED_INPUT)
1406  len += sprintf(buf + len, "input");
1407  if (hdev->claimed & HID_CLAIMED_HIDDEV)
1408  len += sprintf(buf + len, "%shiddev%d", len ? "," : "",
1409  hdev->minor);
1410  if (hdev->claimed & HID_CLAIMED_HIDRAW)
1411  len += sprintf(buf + len, "%shidraw%d", len ? "," : "",
1412  ((struct hidraw *)hdev->hidraw)->minor);
1413 
1414  type = "Device";
1415  for (i = 0; i < hdev->maxcollection; i++) {
1416  struct hid_collection *col = &hdev->collection[i];
1417  if (col->type == HID_COLLECTION_APPLICATION &&
1418  (col->usage & HID_USAGE_PAGE) == HID_UP_GENDESK &&
1419  (col->usage & 0xffff) < ARRAY_SIZE(types)) {
1420  type = types[col->usage & 0xffff];
1421  break;
1422  }
1423  }
1424 
1425  switch (hdev->bus) {
1426  case BUS_USB:
1427  bus = "USB";
1428  break;
1429  case BUS_BLUETOOTH:
1430  bus = "BLUETOOTH";
1431  break;
1432  default:
1433  bus = "<UNKNOWN>";
1434  }
1435 
1436  ret = device_create_bin_file(&hdev->dev, &dev_bin_attr_report_desc);
1437  if (ret)
1438  hid_warn(hdev,
1439  "can't create sysfs report descriptor attribute err: %d\n", ret);
1440 
1441  hid_info(hdev, "%s: %s HID v%x.%02x %s [%s] on %s\n",
1442  buf, bus, hdev->version >> 8, hdev->version & 0xff,
1443  type, hdev->name, hdev->phys);
1444 
1445  return 0;
1446 }
1448 
1449 void hid_disconnect(struct hid_device *hdev)
1450 {
1451  device_remove_bin_file(&hdev->dev, &dev_bin_attr_report_desc);
1452  if (hdev->claimed & HID_CLAIMED_INPUT)
1453  hidinput_disconnect(hdev);
1454  if (hdev->claimed & HID_CLAIMED_HIDDEV)
1455  hdev->hiddev_disconnect(hdev);
1456  if (hdev->claimed & HID_CLAIMED_HIDRAW)
1457  hidraw_disconnect(hdev);
1458 }
1460 
1461 /*
1462  * A list of devices for which there is a specialized driver on HID bus.
1463  *
1464  * Please note that for multitouch devices (driven by hid-multitouch driver),
1465  * there is a proper autodetection and autoloading in place (based on presence
1466  * of HID_DG_CONTACTID), so those devices don't need to be added to this list,
1467  * as we are doing the right thing in hid_scan_usage().
1468  */
1469 static const struct hid_device_id hid_have_special_driver[] = {
1473  { HID_USB_DEVICE(USB_VENDOR_ID_ACRUX, 0x0802) },
1586 #if IS_ENABLED(CONFIG_HID_LENOVO_TPKBD)
1588 #endif
1614 #if IS_ENABLED(CONFIG_HID_LOGITECH_DJ)
1617 #endif
1655 #if IS_ENABLED(CONFIG_HID_ROCCAT)
1664 #endif
1715 
1718  { }
1719 };
1720 
1721 struct hid_dynid {
1722  struct list_head list;
1723  struct hid_device_id id;
1724 };
1725 
1735 static ssize_t store_new_id(struct device_driver *drv, const char *buf,
1736  size_t count)
1737 {
1738  struct hid_driver *hdrv = container_of(drv, struct hid_driver, driver);
1739  struct hid_dynid *dynid;
1740  __u32 bus, vendor, product;
1741  unsigned long driver_data = 0;
1742  int ret;
1743 
1744  ret = sscanf(buf, "%x %x %x %lx",
1745  &bus, &vendor, &product, &driver_data);
1746  if (ret < 3)
1747  return -EINVAL;
1748 
1749  dynid = kzalloc(sizeof(*dynid), GFP_KERNEL);
1750  if (!dynid)
1751  return -ENOMEM;
1752 
1753  dynid->id.bus = bus;
1754  dynid->id.group = HID_GROUP_ANY;
1755  dynid->id.vendor = vendor;
1756  dynid->id.product = product;
1757  dynid->id.driver_data = driver_data;
1758 
1759  spin_lock(&hdrv->dyn_lock);
1760  list_add_tail(&dynid->list, &hdrv->dyn_list);
1761  spin_unlock(&hdrv->dyn_lock);
1762 
1763  ret = driver_attach(&hdrv->driver);
1764 
1765  return ret ? : count;
1766 }
1767 static DRIVER_ATTR(new_id, S_IWUSR, NULL, store_new_id);
1768 
1769 static void hid_free_dynids(struct hid_driver *hdrv)
1770 {
1771  struct hid_dynid *dynid, *n;
1772 
1773  spin_lock(&hdrv->dyn_lock);
1774  list_for_each_entry_safe(dynid, n, &hdrv->dyn_list, list) {
1775  list_del(&dynid->list);
1776  kfree(dynid);
1777  }
1778  spin_unlock(&hdrv->dyn_lock);
1779 }
1780 
1781 static const struct hid_device_id *hid_match_device(struct hid_device *hdev,
1782  struct hid_driver *hdrv)
1783 {
1784  struct hid_dynid *dynid;
1785 
1786  spin_lock(&hdrv->dyn_lock);
1787  list_for_each_entry(dynid, &hdrv->dyn_list, list) {
1788  if (hid_match_one_id(hdev, &dynid->id)) {
1789  spin_unlock(&hdrv->dyn_lock);
1790  return &dynid->id;
1791  }
1792  }
1793  spin_unlock(&hdrv->dyn_lock);
1794 
1795  return hid_match_id(hdev, hdrv->id_table);
1796 }
1797 
1798 static int hid_bus_match(struct device *dev, struct device_driver *drv)
1799 {
1800  struct hid_driver *hdrv = container_of(drv, struct hid_driver, driver);
1801  struct hid_device *hdev = container_of(dev, struct hid_device, dev);
1802 
1803  return hid_match_device(hdev, hdrv) != NULL;
1804 }
1805 
1806 static int hid_device_probe(struct device *dev)
1807 {
1808  struct hid_driver *hdrv = container_of(dev->driver,
1809  struct hid_driver, driver);
1810  struct hid_device *hdev = container_of(dev, struct hid_device, dev);
1811  const struct hid_device_id *id;
1812  int ret = 0;
1813 
1814  if (down_interruptible(&hdev->driver_lock))
1815  return -EINTR;
1816 
1817  if (!hdev->driver) {
1818  id = hid_match_device(hdev, hdrv);
1819  if (id == NULL) {
1820  ret = -ENODEV;
1821  goto unlock;
1822  }
1823 
1824  hdev->driver = hdrv;
1825  if (hdrv->probe) {
1826  ret = hdrv->probe(hdev, id);
1827  } else { /* default probe */
1828  ret = hid_open_report(hdev);
1829  if (!ret)
1830  ret = hid_hw_start(hdev, HID_CONNECT_DEFAULT);
1831  }
1832  if (ret) {
1833  hid_close_report(hdev);
1834  hdev->driver = NULL;
1835  }
1836  }
1837 unlock:
1838  up(&hdev->driver_lock);
1839  return ret;
1840 }
1841 
1842 static int hid_device_remove(struct device *dev)
1843 {
1844  struct hid_device *hdev = container_of(dev, struct hid_device, dev);
1845  struct hid_driver *hdrv;
1846 
1847  if (down_interruptible(&hdev->driver_lock))
1848  return -EINTR;
1849 
1850  hdrv = hdev->driver;
1851  if (hdrv) {
1852  if (hdrv->remove)
1853  hdrv->remove(hdev);
1854  else /* default remove */
1855  hid_hw_stop(hdev);
1856  hid_close_report(hdev);
1857  hdev->driver = NULL;
1858  }
1859 
1860  up(&hdev->driver_lock);
1861  return 0;
1862 }
1863 
1864 static ssize_t modalias_show(struct device *dev, struct device_attribute *a,
1865  char *buf)
1866 {
1867  struct hid_device *hdev = container_of(dev, struct hid_device, dev);
1868  int len;
1869 
1870  len = snprintf(buf, PAGE_SIZE, "hid:b%04Xg%04Xv%08Xp%08X\n",
1871  hdev->bus, hdev->group, hdev->vendor, hdev->product);
1872 
1873  return (len >= PAGE_SIZE) ? (PAGE_SIZE - 1) : len;
1874 }
1875 
1876 static struct device_attribute hid_dev_attrs[] = {
1877  __ATTR_RO(modalias),
1878  __ATTR_NULL,
1879 };
1880 
1881 static int hid_uevent(struct device *dev, struct kobj_uevent_env *env)
1882 {
1883  struct hid_device *hdev = container_of(dev, struct hid_device, dev);
1884 
1885  if (add_uevent_var(env, "HID_ID=%04X:%08X:%08X",
1886  hdev->bus, hdev->vendor, hdev->product))
1887  return -ENOMEM;
1888 
1889  if (add_uevent_var(env, "HID_NAME=%s", hdev->name))
1890  return -ENOMEM;
1891 
1892  if (add_uevent_var(env, "HID_PHYS=%s", hdev->phys))
1893  return -ENOMEM;
1894 
1895  if (add_uevent_var(env, "HID_UNIQ=%s", hdev->uniq))
1896  return -ENOMEM;
1897 
1898  if (add_uevent_var(env, "MODALIAS=hid:b%04Xg%04Xv%08Xp%08X",
1899  hdev->bus, hdev->group, hdev->vendor, hdev->product))
1900  return -ENOMEM;
1901 
1902  return 0;
1903 }
1904 
1905 static struct bus_type hid_bus_type = {
1906  .name = "hid",
1907  .dev_attrs = hid_dev_attrs,
1908  .match = hid_bus_match,
1909  .probe = hid_device_probe,
1910  .remove = hid_device_remove,
1911  .uevent = hid_uevent,
1912 };
1913 
1914 /* a list of devices that shouldn't be handled by HID core at all */
1915 static const struct hid_device_id hid_ignore_list[] = {
1933  { HID_USB_DEVICE(USB_VENDOR_ID_CIDC, 0x0103) },
2063  { HID_USB_DEVICE(USB_VENDOR_ID_PANJIT, 0x0001) },
2064  { HID_USB_DEVICE(USB_VENDOR_ID_PANJIT, 0x0002) },
2065  { HID_USB_DEVICE(USB_VENDOR_ID_PANJIT, 0x0003) },
2066  { HID_USB_DEVICE(USB_VENDOR_ID_PANJIT, 0x0004) },
2069 #if defined(CONFIG_MOUSE_SYNAPTICS_USB) || defined(CONFIG_MOUSE_SYNAPTICS_USB_MODULE)
2078 #endif
2089  { }
2090 };
2091 
2099 static const struct hid_device_id hid_mouse_ignore_list[] = {
2100  /* appletouch driver */
2150  { }
2151 };
2152 
2153 static bool hid_ignore(struct hid_device *hdev)
2154 {
2155  switch (hdev->vendor) {
2157  /* ignore all Code Mercenaries IOWarrior devices */
2160  return true;
2161  break;
2165  return true;
2166  /*
2167  * The Keene FM transmitter USB device has the same USB ID as
2168  * the Logitech AudioHub Speaker, but it should ignore the hid.
2169  * Check if the name is that of the Keene device.
2170  * For reference: the name of the AudioHub is
2171  * "HOLTEK AudioHub Speaker".
2172  */
2174  !strcmp(hdev->name, "HOLTEK B-LINK USB Audio "))
2175  return true;
2176  break;
2180  return true;
2181  break;
2182  case USB_VENDOR_ID_HANWANG:
2185  return true;
2186  break;
2187  case USB_VENDOR_ID_JESS:
2188  if (hdev->product == USB_DEVICE_ID_JESS_YUREX &&
2189  hdev->type == HID_TYPE_USBNONE)
2190  return true;
2191  break;
2192  }
2193 
2194  if (hdev->type == HID_TYPE_USBMOUSE &&
2195  hid_match_id(hdev, hid_mouse_ignore_list))
2196  return true;
2197 
2198  return !!hid_match_id(hdev, hid_ignore_list);
2199 }
2200 
2201 int hid_add_device(struct hid_device *hdev)
2202 {
2203  static atomic_t id = ATOMIC_INIT(0);
2204  int ret;
2205 
2206  if (WARN_ON(hdev->status & HID_STAT_ADDED))
2207  return -EBUSY;
2208 
2209  /* we need to kill them here, otherwise they will stay allocated to
2210  * wait for coming driver */
2211  if (!(hdev->quirks & HID_QUIRK_NO_IGNORE)
2212  && (hid_ignore(hdev) || (hdev->quirks & HID_QUIRK_IGNORE)))
2213  return -ENODEV;
2214 
2215  /*
2216  * Read the device report descriptor once and use as template
2217  * for the driver-specific modifications.
2218  */
2219  ret = hdev->ll_driver->parse(hdev);
2220  if (ret)
2221  return ret;
2222  if (!hdev->dev_rdesc)
2223  return -ENODEV;
2224 
2225  /*
2226  * Scan generic devices for group information
2227  */
2228  if (hid_ignore_special_drivers ||
2229  !hid_match_id(hdev, hid_have_special_driver)) {
2230  ret = hid_scan_report(hdev);
2231  if (ret)
2232  hid_warn(hdev, "bad device descriptor (%d)\n", ret);
2233  }
2234 
2235  /* XXX hack, any other cleaner solution after the driver core
2236  * is converted to allow more than 20 bytes as the device name? */
2237  dev_set_name(&hdev->dev, "%04X:%04X:%04X.%04X", hdev->bus,
2238  hdev->vendor, hdev->product, atomic_inc_return(&id));
2239 
2240  hid_debug_register(hdev, dev_name(&hdev->dev));
2241  ret = device_add(&hdev->dev);
2242  if (!ret)
2243  hdev->status |= HID_STAT_ADDED;
2244  else
2245  hid_debug_unregister(hdev);
2246 
2247  return ret;
2248 }
2250 
2261 {
2262  struct hid_device *hdev;
2263  int ret = -ENOMEM;
2264 
2265  hdev = kzalloc(sizeof(*hdev), GFP_KERNEL);
2266  if (hdev == NULL)
2267  return ERR_PTR(ret);
2268 
2269  device_initialize(&hdev->dev);
2270  hdev->dev.release = hid_device_release;
2271  hdev->dev.bus = &hid_bus_type;
2272 
2273  hid_close_report(hdev);
2274 
2276  INIT_LIST_HEAD(&hdev->debug_list);
2277  sema_init(&hdev->driver_lock, 1);
2278 
2279  return hdev;
2280 }
2282 
2283 static void hid_remove_device(struct hid_device *hdev)
2284 {
2285  if (hdev->status & HID_STAT_ADDED) {
2286  device_del(&hdev->dev);
2287  hid_debug_unregister(hdev);
2288  hdev->status &= ~HID_STAT_ADDED;
2289  }
2290  kfree(hdev->dev_rdesc);
2291  hdev->dev_rdesc = NULL;
2292  hdev->dev_rsize = 0;
2293 }
2294 
2303 void hid_destroy_device(struct hid_device *hdev)
2304 {
2305  hid_remove_device(hdev);
2306  put_device(&hdev->dev);
2307 }
2309 
2310 int __hid_register_driver(struct hid_driver *hdrv, struct module *owner,
2311  const char *mod_name)
2312 {
2313  int ret;
2314 
2315  hdrv->driver.name = hdrv->name;
2316  hdrv->driver.bus = &hid_bus_type;
2317  hdrv->driver.owner = owner;
2318  hdrv->driver.mod_name = mod_name;
2319 
2320  INIT_LIST_HEAD(&hdrv->dyn_list);
2321  spin_lock_init(&hdrv->dyn_lock);
2322 
2323  ret = driver_register(&hdrv->driver);
2324  if (ret)
2325  return ret;
2326 
2327  ret = driver_create_file(&hdrv->driver, &driver_attr_new_id);
2328  if (ret)
2329  driver_unregister(&hdrv->driver);
2330 
2331  return ret;
2332 }
2334 
2336 {
2337  driver_remove_file(&hdrv->driver, &driver_attr_new_id);
2338  driver_unregister(&hdrv->driver);
2339  hid_free_dynids(hdrv);
2340 }
2342 
2344 {
2345  struct hid_input *hidinput;
2346  int i;
2347 
2348  if (!(hid->claimed & HID_CLAIMED_INPUT))
2349  return 0;
2350 
2351  list_for_each_entry(hidinput, &hid->inputs, list) {
2352  for (i = 0; i < BITS_TO_LONGS(KEY_MAX); i++)
2353  if (hidinput->input->key[i])
2354  return 1;
2355  }
2356 
2357  return 0;
2358 }
2359 
2361 
2362 static int __init hid_init(void)
2363 {
2364  int ret;
2365 
2366  if (hid_debug)
2367  pr_warn("hid_debug is now used solely for parser and driver debugging.\n"
2368  "debugfs is now used for inspecting the device (report descriptor, reports)\n");
2369 
2370  ret = bus_register(&hid_bus_type);
2371  if (ret) {
2372  pr_err("can't register hid bus\n");
2373  goto err;
2374  }
2375 
2376  ret = hidraw_init();
2377  if (ret)
2378  goto err_bus;
2379 
2380  hid_debug_init();
2381 
2382  return 0;
2383 err_bus:
2384  bus_unregister(&hid_bus_type);
2385 err:
2386  return ret;
2387 }
2388 
2389 static void __exit hid_exit(void)
2390 {
2391  hid_debug_exit();
2392  hidraw_exit();
2393  bus_unregister(&hid_bus_type);
2394 }
2395 
2396 module_init(hid_init);
2397 module_exit(hid_exit);
2398 
2399 MODULE_AUTHOR("Andreas Gal");
2400 MODULE_AUTHOR("Vojtech Pavlik");
2401 MODULE_AUTHOR("Jiri Kosina");
2403