|
@@ -57,7 +57,9 @@ MODULE_PARM_DESC(ignore_special_drivers, "Ignore any special drivers and handle
|
|
|
* Register a new report for a device.
|
|
|
*/
|
|
|
|
|
|
-struct hid_report *hid_register_report(struct hid_device *device, unsigned type, unsigned id)
|
|
|
+struct hid_report *hid_register_report(struct hid_device *device,
|
|
|
+ unsigned int type, unsigned int id,
|
|
|
+ unsigned int application)
|
|
|
{
|
|
|
struct hid_report_enum *report_enum = device->report_enum + type;
|
|
|
struct hid_report *report;
|
|
@@ -78,6 +80,7 @@ struct hid_report *hid_register_report(struct hid_device *device, unsigned type,
|
|
|
report->type = type;
|
|
|
report->size = 0;
|
|
|
report->device = device;
|
|
|
+ report->application = application;
|
|
|
report_enum->report_id_hash[id] = report;
|
|
|
|
|
|
list_add_tail(&report->list, &report_enum->report_list);
|
|
@@ -221,11 +224,15 @@ static int hid_add_field(struct hid_parser *parser, unsigned report_type, unsign
|
|
|
{
|
|
|
struct hid_report *report;
|
|
|
struct hid_field *field;
|
|
|
- unsigned usages;
|
|
|
- unsigned offset;
|
|
|
- unsigned i;
|
|
|
+ unsigned int usages;
|
|
|
+ unsigned int offset;
|
|
|
+ unsigned int i;
|
|
|
+ unsigned int application;
|
|
|
+
|
|
|
+ application = hid_lookup_collection(parser, HID_COLLECTION_APPLICATION);
|
|
|
|
|
|
- report = hid_register_report(parser->device, report_type, parser->global.report_id);
|
|
|
+ report = hid_register_report(parser->device, report_type,
|
|
|
+ parser->global.report_id, application);
|
|
|
if (!report) {
|
|
|
hid_err(parser->device, "hid_register_report failed\n");
|
|
|
return -1;
|
|
@@ -259,7 +266,7 @@ static int hid_add_field(struct hid_parser *parser, unsigned report_type, unsign
|
|
|
|
|
|
field->physical = hid_lookup_collection(parser, HID_COLLECTION_PHYSICAL);
|
|
|
field->logical = hid_lookup_collection(parser, HID_COLLECTION_LOGICAL);
|
|
|
- field->application = hid_lookup_collection(parser, HID_COLLECTION_APPLICATION);
|
|
|
+ field->application = application;
|
|
|
|
|
|
for (i = 0; i < usages; i++) {
|
|
|
unsigned j = i;
|