Lines Matching refs:field
123 struct hid_field *field; in hid_register_field() local
130 field = kvzalloc((sizeof(struct hid_field) + in hid_register_field()
133 if (!field) in hid_register_field()
136 field->index = report->maxfield++; in hid_register_field()
137 report->field[field->index] = field; in hid_register_field()
138 field->usage = (struct hid_usage *)(field + 1); in hid_register_field()
139 field->value = (s32 *)(field->usage + usages); in hid_register_field()
140 field->new_value = (s32 *)(field->value + usages); in hid_register_field()
141 field->usages_priorities = (s32 *)(field->new_value + usages); in hid_register_field()
142 field->report = report; in hid_register_field()
144 return field; in hid_register_field()
290 struct hid_field *field; in hid_add_field() local
337 field = hid_register_field(report, usages); in hid_add_field()
338 if (!field) in hid_add_field()
341 field->physical = hid_lookup_collection(parser, HID_COLLECTION_PHYSICAL); in hid_add_field()
342 field->logical = hid_lookup_collection(parser, HID_COLLECTION_LOGICAL); in hid_add_field()
343 field->application = application; in hid_add_field()
350 field->usage[i].hid = parser->local.usage[j]; in hid_add_field()
351 field->usage[i].collection_index = in hid_add_field()
353 field->usage[i].usage_index = i; in hid_add_field()
354 field->usage[i].resolution_multiplier = 1; in hid_add_field()
357 field->maxusage = usages; in hid_add_field()
358 field->flags = flags; in hid_add_field()
359 field->report_offset = offset; in hid_add_field()
360 field->report_type = report_type; in hid_add_field()
361 field->report_size = parser->global.report_size; in hid_add_field()
362 field->report_count = parser->global.report_count; in hid_add_field()
363 field->logical_minimum = parser->global.logical_minimum; in hid_add_field()
364 field->logical_maximum = parser->global.logical_maximum; in hid_add_field()
365 field->physical_minimum = parser->global.physical_minimum; in hid_add_field()
366 field->physical_maximum = parser->global.physical_maximum; in hid_add_field()
367 field->unit_exponent = parser->global.unit_exponent; in hid_add_field()
368 field->unit = parser->global.unit; in hid_add_field()
700 kvfree(report->field[n]); in hid_free_report()
1073 if (report->field[field_index]->report_count < report_counts) { in hid_validate_values()
1122 struct hid_field *field, in hid_apply_multiplier_to_field() argument
1136 for (i = 0; i < field->maxusage; i++) { in hid_apply_multiplier_to_field()
1137 usage = &field->usage[i]; in hid_apply_multiplier_to_field()
1156 struct hid_field *field; in hid_apply_multiplier() local
1191 field = rep->field[i]; in hid_apply_multiplier()
1192 hid_apply_multiplier_to_field(hid, field, in hid_apply_multiplier()
1233 if (rep->field[i]->report_count < 1) in hid_setup_resolution_multiplier()
1236 for (j = 0; j < rep->field[i]->maxusage; j++) { in hid_setup_resolution_multiplier()
1237 usage = &rep->field[i]->usage[j]; in hid_setup_resolution_multiplier()
1240 rep->field[i]); in hid_setup_resolution_multiplier()
1545 static void hid_process_event(struct hid_device *hid, struct hid_field *field, in hid_process_event() argument
1555 ret = hdrv->event(hid, field, usage, value); in hid_process_event()
1565 hidinput_hid_event(hid, field, usage, value); in hid_process_event()
1567 hid->hiddev_hid_event(hid, field, usage, value); in hid_process_event()
1573 static inline int hid_array_value_is_valid(struct hid_field *field, in hid_array_value_is_valid() argument
1576 __s32 min = field->logical_minimum; in hid_array_value_is_valid()
1584 value <= field->logical_maximum && in hid_array_value_is_valid()
1585 value - min < field->maxusage; in hid_array_value_is_valid()
1593 struct hid_field *field, in hid_input_fetch_field() argument
1597 unsigned count = field->report_count; in hid_input_fetch_field()
1598 unsigned offset = field->report_offset; in hid_input_fetch_field()
1599 unsigned size = field->report_size; in hid_input_fetch_field()
1600 __s32 min = field->logical_minimum; in hid_input_fetch_field()
1603 value = field->new_value; in hid_input_fetch_field()
1605 field->ignored = false; in hid_input_fetch_field()
1615 if (!(field->flags & HID_MAIN_ITEM_VARIABLE) && in hid_input_fetch_field()
1616 hid_array_value_is_valid(field, value[n]) && in hid_input_fetch_field()
1617 field->usage[value[n] - min].hid == HID_UP_KEYBOARD + 1) { in hid_input_fetch_field()
1618 field->ignored = true; in hid_input_fetch_field()
1629 struct hid_field *field, in hid_input_var_field() argument
1632 unsigned int count = field->report_count; in hid_input_var_field()
1633 __s32 *value = field->new_value; in hid_input_var_field()
1638 field, in hid_input_var_field()
1639 &field->usage[n], in hid_input_var_field()
1643 memcpy(field->value, value, count * sizeof(__s32)); in hid_input_var_field()
1652 struct hid_field *field, in hid_input_array_field() argument
1656 unsigned int count = field->report_count; in hid_input_array_field()
1657 __s32 min = field->logical_minimum; in hid_input_array_field()
1660 value = field->new_value; in hid_input_array_field()
1663 if (field->ignored) in hid_input_array_field()
1667 if (hid_array_value_is_valid(field, field->value[n]) && in hid_input_array_field()
1668 search(value, field->value[n], count)) in hid_input_array_field()
1670 field, in hid_input_array_field()
1671 &field->usage[field->value[n] - min], in hid_input_array_field()
1675 if (hid_array_value_is_valid(field, value[n]) && in hid_input_array_field()
1676 search(field->value, value[n], count)) in hid_input_array_field()
1678 field, in hid_input_array_field()
1679 &field->usage[value[n] - min], in hid_input_array_field()
1684 memcpy(field->value, value, count * sizeof(__s32)); in hid_input_array_field()
1699 struct hid_field *field; in hid_process_report() local
1703 hid_input_fetch_field(hid, report->field[a], data); in hid_process_report()
1710 field = entry->field; in hid_process_report()
1712 if (field->flags & HID_MAIN_ITEM_VARIABLE) in hid_process_report()
1714 field, in hid_process_report()
1715 &field->usage[entry->index], in hid_process_report()
1716 field->new_value[entry->index], in hid_process_report()
1719 hid_input_array_field(hid, field, interrupt); in hid_process_report()
1724 field = report->field[a]; in hid_process_report()
1726 if (field->flags & HID_MAIN_ITEM_VARIABLE) in hid_process_report()
1727 memcpy(field->value, field->new_value, in hid_process_report()
1728 field->report_count * sizeof(__s32)); in hid_process_report()
1733 field = report->field[a]; in hid_process_report()
1735 if (field->flags & HID_MAIN_ITEM_VARIABLE) in hid_process_report()
1736 hid_input_var_field(hid, field, interrupt); in hid_process_report()
1738 hid_input_array_field(hid, field, interrupt); in hid_process_report()
1753 struct hid_field *field, in __hid_insert_field_entry() argument
1758 entry->field = field; in __hid_insert_field_entry()
1760 entry->priority = field->usages_priorities[usage_index]; in __hid_insert_field_entry()
1783 struct hid_field *field; in hid_report_process_ordering() local
1790 field = report->field[a]; in hid_report_process_ordering()
1792 if (field->flags & HID_MAIN_ITEM_VARIABLE) in hid_report_process_ordering()
1793 count += field->report_count; in hid_report_process_ordering()
1814 field = report->field[a]; in hid_report_process_ordering()
1816 if (field->flags & HID_MAIN_ITEM_VARIABLE) { in hid_report_process_ordering()
1817 for (u = 0; u < field->report_count; u++) { in hid_report_process_ordering()
1820 field, u); in hid_report_process_ordering()
1825 field, 0); in hid_report_process_ordering()
1845 struct hid_field *field, __u8 *data) in hid_output_field() argument
1847 unsigned count = field->report_count; in hid_output_field()
1848 unsigned offset = field->report_offset; in hid_output_field()
1849 unsigned size = field->report_size; in hid_output_field()
1853 if (field->logical_minimum < 0) /* signed values */ in hid_output_field()
1855 s32ton(field->value[n], size)); in hid_output_field()
1858 field->value[n]); in hid_output_field()
1887 hid_output_field(report->device, report->field[n], data); in hid_output_report()
1916 int hid_set_field(struct hid_field *field, unsigned offset, __s32 value) in hid_set_field() argument
1920 if (!field) in hid_set_field()
1923 size = field->report_size; in hid_set_field()
1925 hid_dump_input(field->report->device, field->usage + offset, value); in hid_set_field()
1927 if (offset >= field->report_count) { in hid_set_field()
1928 hid_err(field->report->device, "offset (%d) exceeds report_count (%d)\n", in hid_set_field()
1929 offset, field->report_count); in hid_set_field()
1932 if (field->logical_minimum < 0) { in hid_set_field()
1934 hid_err(field->report->device, "value %d is out of range\n", value); in hid_set_field()
1938 field->value[offset] = value; in hid_set_field()
1955 struct hid_field *field = report->field[i]; in hid_find_field() local
1957 for (j = 0; j < field->maxusage; j++) { in hid_find_field()
1958 if (field->usage[j].hid == usage) in hid_find_field()
1959 return field; in hid_find_field()