Lines Matching full:collection

116  * Open a collection. The type/usage is pushed on the stack.
121 struct hid_collection *collection; in open_collection() local
143 collection = kmalloc( in open_collection()
148 if (collection == NULL) { in open_collection()
149 hid_err(parser->device, "failed to reallocate collection array\n"); in open_collection()
152 memcpy(collection, parser->device->collection, in open_collection()
155 memset(collection + parser->device->collection_size, 0, in open_collection()
158 kfree(parser->device->collection); in open_collection()
159 parser->device->collection = collection; in open_collection()
167 collection = parser->device->collection + collection_index; in open_collection()
168 collection->type = type; in open_collection()
169 collection->usage = usage; in open_collection()
170 collection->level = parser->collection_stack_ptr - 1; in open_collection()
171 collection->parent_idx = (collection->level == 0) ? -1 : in open_collection()
172 parser->collection_stack[collection->level - 1]; in open_collection()
181 * Close a collection.
187 hid_err(parser->device, "collection stack underflow\n"); in close_collection()
195 * Climb up the stack, search for the specified collection type
201 struct hid_collection *collection = parser->device->collection; in hid_lookup_collection() local
206 if (collection[index].type == type) in hid_lookup_collection()
207 return collection[index].usage; in hid_lookup_collection()
692 kfree(device->collection); in hid_close_report()
693 device->collection = NULL; in hid_close_report()
1071 struct hid_collection *collection; in hid_apply_multiplier_to_field() local
1078 * Otherwise, it is the Logical Collection the multiplier applies to in hid_apply_multiplier_to_field()
1079 * but our field may be in a subcollection of that collection. in hid_apply_multiplier_to_field()
1084 collection = &hid->collection[usage->collection_index]; in hid_apply_multiplier_to_field()
1085 while (collection->parent_idx != -1 && in hid_apply_multiplier_to_field()
1086 collection != multiplier_collection) in hid_apply_multiplier_to_field()
1087 collection = &hid->collection[collection->parent_idx]; in hid_apply_multiplier_to_field()
1089 if (collection->parent_idx != -1 || in hid_apply_multiplier_to_field()
1108 * Logical Collection as the control(s) to which it is to be applied. in hid_apply_multiplier()
1111 * Logical Collection, the Resolution Multiplier is associated with in hid_apply_multiplier()
1112 * all controls in the collection. If no Logical Collection is in hid_apply_multiplier()
1117 * Thus, search from the current collection upwards until we find a in hid_apply_multiplier()
1118 * logical collection. Then search all fields for that same parent in hid_apply_multiplier()
1119 * collection. Those are the fields the multiplier applies to. in hid_apply_multiplier()
1124 multiplier_collection = &hid->collection[multiplier->usage->collection_index]; in hid_apply_multiplier()
1127 multiplier_collection = &hid->collection[multiplier_collection->parent_idx]; in hid_apply_multiplier()
1257 device->collection = kcalloc(HID_DEFAULT_NUM_COLLECTIONS, in hid_open_report()
1259 if (!device->collection) { in hid_open_report()
1265 device->collection[i].parent_idx = -1; in hid_open_report()
1285 hid_err(device, "unbalanced collection at end of report description\n"); in hid_open_report()
2233 struct hid_collection *col = &hdev->collection[i]; in hid_connect()