Index: uspace/lib/usb/include/usb/pipes.h
===================================================================
--- uspace/lib/usb/include/usb/pipes.h	(revision 93ef8f6947fe220983e93e68c045ef9ca63e76c8)
+++ uspace/lib/usb/include/usb/pipes.h	(revision 9d4579e8135741a21c2a9c316decead4f310c371)
@@ -107,4 +107,6 @@
 	/** Found descriptor fitting the description. */
 	usb_standard_endpoint_descriptor_t *descriptor;
+	/** Interface the endpoint belongs to. */
+	usb_standard_interface_descriptor_t *interface;
 	/** Whether the endpoint was actually found. */
 	bool present;
Index: uspace/lib/usb/src/pipesinit.c
===================================================================
--- uspace/lib/usb/src/pipesinit.c	(revision 93ef8f6947fe220983e93e68c045ef9ca63e76c8)
+++ uspace/lib/usb/src/pipesinit.c	(revision 9d4579e8135741a21c2a9c316decead4f310c371)
@@ -194,4 +194,5 @@
 	ep_mapping->present = true;
 	ep_mapping->descriptor = endpoint;
+	ep_mapping->interface = interface;
 
 	return EOK;
@@ -242,4 +243,5 @@
  * - @c description must point to prepared endpoint description
  * - @c descriptor does not need to be initialized (will be overwritten)
+ * - @c interface does not need to be initialized (will be overwritten)
  * - @c present does not need to be initialized (will be overwritten)
  *
@@ -251,4 +253,7 @@
  *   corresponding to given description (or NULL for not found descriptor or
  *   for default control pipe)
+ * - @c interface will point inside the configuration descriptor to interface
+ *   descriptor the endpoint @c descriptor belongs to (or NULL for not found
+ *   descriptor)
  * - @c pipe will be initialized when found, otherwise left untouched
  * - @c description will be untouched under all circumstances
@@ -286,4 +291,5 @@
 		mapping[i].present = false;
 		mapping[i].descriptor = NULL;
+		mapping[i].interface = NULL;
 	}
 
