Lines Matching refs:intf

51 static void release_manifest_descriptors(struct gb_interface *intf)
56 list_for_each_entry_safe(descriptor, next, &intf->manifest_descs, links)
76 static struct manifest_desc *get_next_bundle_desc(struct gb_interface *intf)
81 list_for_each_entry_safe(descriptor, next, &intf->manifest_descs, links)
98 static int identify_descriptor(struct gb_interface *intf,
107 dev_err(&intf->dev, "manifest too small (%zu < %zu)\n", size,
114 dev_err(&intf->dev, "descriptor too big (%zu > %zu)\n",
141 dev_err(&intf->dev, "invalid descriptor type (%u)\n",
147 dev_err(&intf->dev, "%s descriptor too small (%zu < %zu)\n",
155 dev_warn(&intf->dev, "%s descriptor size mismatch (want %zu got %zu)\n",
167 list_add_tail(&descriptor->links, &intf->manifest_descs);
185 static char *gb_string_get(struct gb_interface *intf, u8 string_id)
196 list_for_each_entry(descriptor, &intf->manifest_descs, links) {
230 struct gb_interface *intf = bundle->intf;
240 list_for_each_entry_safe(desc, next, &intf->manifest_descs, links) {
302 release_cport_descriptors(&intf->manifest_descs, bundle_id);
312 static u32 gb_manifest_parse_bundles(struct gb_interface *intf)
321 while ((desc = get_next_bundle_desc(intf))) {
334 dev_dbg(&intf->dev, "%s - ignoring control bundle\n",
336 release_cport_descriptors(&intf->manifest_descs,
343 dev_err(&intf->dev,
349 bundle = gb_bundle_create(intf, bundle_id, class);
381 list_for_each_entry_safe(bundle, bundle_next, &intf->bundles, links) {
388 static bool gb_manifest_parse_interface(struct gb_interface *intf,
392 struct gb_control *control = intf->control;
396 str = gb_string_get(intf, desc_intf->vendor_stringid);
401 str = gb_string_get(intf, desc_intf->product_stringid);
407 intf->features = desc_intf->features;
413 if (!gb_manifest_parse_bundles(intf)) {
414 dev_err(&intf->dev, "manifest bundle descriptors not valid\n");
452 bool gb_manifest_parse(struct gb_interface *intf, void *data, size_t size)
464 if (WARN_ON(!list_empty(&intf->manifest_descs)))
469 dev_err(&intf->dev, "short manifest (%zu < %zu)\n",
479 dev_err(&intf->dev, "manifest size mismatch (%zu != %u)\n",
486 dev_err(&intf->dev, "manifest version too new (%u.%u > %u.%u)\n",
498 desc_size = identify_descriptor(intf, desc, size);
508 list_for_each_entry(descriptor, &intf->manifest_descs, links) {
514 dev_err(&intf->dev, "manifest must have 1 interface descriptor (%u found)\n",
521 result = gb_manifest_parse_interface(intf, interface_desc);
527 if (result && !list_empty(&intf->manifest_descs))
528 dev_info(&intf->dev, "excess descriptors in interface manifest\n");
530 release_manifest_descriptors(intf);