Commit c27a253f authored by Alex Elder's avatar Alex Elder Committed by Greg Kroah-Hartman

greybus: manifest: rework bundle parsing

Rework the the code that parses the manifest for bundles so it only
touches each manifest descriptor once.  (Previously the list was
scanned from the beginning repeatedly until all bundles were found.)
Shorten the name of the descriptor variable, to avoid line wrap.
Signed-off-by: default avatarAlex Elder <elder@linaro.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@google.com>
parent a6b13eb6
......@@ -241,26 +241,19 @@ static u32 gb_manifest_parse_cports(struct gb_bundle *bundle)
*/
static u32 gb_manifest_parse_bundles(struct gb_interface *intf)
{
struct manifest_desc *desc;
struct manifest_desc *next;
u32 count = 0;
while (true) {
struct manifest_desc *descriptor;
list_for_each_entry_safe(desc, next, &intf->manifest_descs, links) {
struct greybus_descriptor_bundle *desc_bundle;
struct gb_bundle *bundle;
bool found = false;
/* Find an bundle descriptor */
list_for_each_entry(descriptor, &intf->manifest_descs, links) {
if (descriptor->type == GREYBUS_TYPE_BUNDLE) {
found = true;
break;
}
}
if (!found)
break;
if (desc->type != GREYBUS_TYPE_BUNDLE)
continue;
/* Found one. Set up its bundle structure*/
desc_bundle = descriptor->data;
desc_bundle = desc->data;
bundle = gb_bundle_create(intf, desc_bundle->id,
desc_bundle->class);
if (!bundle)
......@@ -273,7 +266,7 @@ static u32 gb_manifest_parse_bundles(struct gb_interface *intf)
count++;
/* Done with this bundle descriptor */
release_manifest_descriptor(descriptor);
release_manifest_descriptor(desc);
}
return count;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment