0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011 #include <linux/hid.h>
0012 #include <linux/module.h>
0013
0014 #include "hid-ids.h"
0015
0016 #define HID_UP_VENDOR_DEFINED_MIN 0xff000000
0017 #define HID_UP_VENDOR_DEFINED_MAX 0xffff0000
0018
0019 static int jabra_input_mapping(struct hid_device *hdev,
0020 struct hid_input *hi,
0021 struct hid_field *field,
0022 struct hid_usage *usage,
0023 unsigned long **bit, int *max)
0024 {
0025 int is_vendor_defined =
0026 ((usage->hid & HID_USAGE_PAGE) >= HID_UP_VENDOR_DEFINED_MIN &&
0027 (usage->hid & HID_USAGE_PAGE) <= HID_UP_VENDOR_DEFINED_MAX);
0028
0029 dbg_hid("hid=0x%08x appl=0x%08x coll_idx=0x%02x usage_idx=0x%02x: %s\n",
0030 usage->hid,
0031 field->application,
0032 usage->collection_index,
0033 usage->usage_index,
0034 is_vendor_defined ? "ignored" : "defaulted");
0035
0036
0037 return is_vendor_defined ? -1 : 0;
0038 }
0039
0040 static const struct hid_device_id jabra_devices[] = {
0041 { HID_USB_DEVICE(USB_VENDOR_ID_JABRA, HID_ANY_ID) },
0042 { }
0043 };
0044 MODULE_DEVICE_TABLE(hid, jabra_devices);
0045
0046 static struct hid_driver jabra_driver = {
0047 .name = "jabra",
0048 .id_table = jabra_devices,
0049 .input_mapping = jabra_input_mapping,
0050 };
0051 module_hid_driver(jabra_driver);
0052
0053 MODULE_AUTHOR("Niels Skou Olsen <nolsen@jabra.com>");
0054 MODULE_DESCRIPTION("Jabra USB HID Driver");
0055 MODULE_LICENSE("GPL");