|
@@ -68,21 +68,13 @@ static int zpff_init(struct hid_device *hid)
|
|
|
struct hid_report *report;
|
|
|
struct hid_input *hidinput = list_entry(hid->inputs.next,
|
|
|
struct hid_input, list);
|
|
|
- struct list_head *report_list =
|
|
|
- &hid->report_enum[HID_OUTPUT_REPORT].report_list;
|
|
|
struct input_dev *dev = hidinput->input;
|
|
|
- int error;
|
|
|
+ int i, error;
|
|
|
|
|
|
- if (list_empty(report_list)) {
|
|
|
- hid_err(hid, "no output report found\n");
|
|
|
- return -ENODEV;
|
|
|
- }
|
|
|
-
|
|
|
- report = list_entry(report_list->next, struct hid_report, list);
|
|
|
-
|
|
|
- if (report->maxfield < 4) {
|
|
|
- hid_err(hid, "not enough fields in report\n");
|
|
|
- return -ENODEV;
|
|
|
+ for (i = 0; i < 4; i++) {
|
|
|
+ report = hid_validate_values(hid, HID_OUTPUT_REPORT, 0, i, 1);
|
|
|
+ if (!report)
|
|
|
+ return -ENODEV;
|
|
|
}
|
|
|
|
|
|
zpff = kzalloc(sizeof(struct zpff_device), GFP_KERNEL);
|