greybus: interface: add gb_interface_find()

Add support for getting a struct gb_interface from an
Interface ID.

Signed-off-by: Matt Porter <mporter@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
diff --git a/drivers/staging/greybus/interface.c b/drivers/staging/greybus/interface.c
index 645f05b..0415db5 100644
--- a/drivers/staging/greybus/interface.c
+++ b/drivers/staging/greybus/interface.c
@@ -60,6 +60,18 @@
 	kfree(interface);
 }
 
+struct gb_interface *gb_interface_find(struct gb_module *module,
+				      u8 interface_id)
+{
+	struct gb_interface *interface;
+
+	list_for_each_entry(interface, &module->interfaces, links)
+		if (interface->id == interface_id)
+			return interface;
+
+	return NULL;
+}
+
 int gb_interface_connections_init(struct gb_interface *interface)
 {
 	struct gb_connection *connection;
diff --git a/drivers/staging/greybus/interface.h b/drivers/staging/greybus/interface.h
index f0c9e1d..907b634 100644
--- a/drivers/staging/greybus/interface.h
+++ b/drivers/staging/greybus/interface.h
@@ -14,6 +14,7 @@
 struct gb_interface {
 	struct gb_module	*gmod;
 	u8			id;
+	u8			device_id;
 	struct list_head	connections;
 
 	struct list_head	links;	/* module->interfaces */
@@ -22,6 +23,8 @@
 struct gb_interface *gb_interface_create(struct gb_module *gmod, u8 module_id);
 void gb_interface_destroy(struct gb_interface *interface);
 
+struct gb_interface *gb_interface_find(struct gb_module *gmod, u8 interface_id);
+
 int gb_interface_connections_init(struct gb_interface *interface);
 void gb_interface_connections_exit(struct gb_interface *interface);