Lines Matching refs:intf

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