Index: uspace/drv/uhci-hcd/iface.c
===================================================================
--- uspace/drv/uhci-hcd/iface.c	(revision fc9f88d9f0d41777b52d2f7694a032f3b6eccac0)
+++ uspace/drv/uhci-hcd/iface.c	(revision 0aae4a6ad49fa1cc3a70d0e077f0ce0844f52df5)
@@ -168,5 +168,6 @@
 	if (ep == NULL)
 		return ENOMEM;
-	ret = endpoint_init(ep, transfer_type, speed, max_packet_size);
+	ret = endpoint_init(ep, address, endpoint, direction,
+	    transfer_type, speed, max_packet_size);
 	if (ret != EOK) {
 		free(ep);
Index: uspace/lib/usb/include/usb/host/endpoint.h
===================================================================
--- uspace/lib/usb/include/usb/host/endpoint.h	(revision fc9f88d9f0d41777b52d2f7694a032f3b6eccac0)
+++ uspace/lib/usb/include/usb/host/endpoint.h	(revision 0aae4a6ad49fa1cc3a70d0e077f0ce0844f52df5)
@@ -42,5 +42,7 @@
 
 typedef struct endpoint {
-	link_t same_device_eps;
+	usb_address_t address;
+	usb_endpoint_t endpoint;
+	usb_direction_t direction;
 	usb_transfer_type_t transfer_type;
 	usb_speed_t speed;
@@ -48,8 +50,10 @@
 	bool active;
 	unsigned toggle:1;
+	link_t same_device_eps;
 } endpoint_t;
 
-int endpoint_init(endpoint_t *instance, usb_transfer_type_t transfer_type,
-    usb_speed_t speed, size_t max_packet_size);
+int endpoint_init(endpoint_t *instance, usb_address_t address,
+    usb_endpoint_t endpoint, usb_direction_t direction,
+    usb_transfer_type_t type, usb_speed_t speed, size_t max_packet_size);
 
 void endpoint_destroy(endpoint_t *instance);
Index: uspace/lib/usb/src/host/endpoint.c
===================================================================
--- uspace/lib/usb/src/host/endpoint.c	(revision fc9f88d9f0d41777b52d2f7694a032f3b6eccac0)
+++ uspace/lib/usb/src/host/endpoint.c	(revision 0aae4a6ad49fa1cc3a70d0e077f0ce0844f52df5)
@@ -37,13 +37,17 @@
 #include <usb/host/endpoint.h>
 
-int endpoint_init(endpoint_t *instance, usb_transfer_type_t transfer_type,
-    usb_speed_t speed, size_t max_packet_size)
+int endpoint_init(endpoint_t *instance, usb_address_t address,
+    usb_endpoint_t endpoint, usb_direction_t direction,
+    usb_transfer_type_t type, usb_speed_t speed, size_t max_packet_size)
 {
 	assert(instance);
-	link_initialize(&instance->same_device_eps);
-	instance->transfer_type = transfer_type;
+	instance->address = address;
+	instance->endpoint = endpoint;
+	instance->direction = direction;
+	instance->transfer_type = type;
 	instance->speed = speed;
 	instance->max_packet_size = max_packet_size;
 	instance->toggle = 0;
+	link_initialize(&instance->same_device_eps);
 	return EOK;
 }
