Index: uspace/drv/uhci-hcd/iface.c
===================================================================
--- uspace/drv/uhci-hcd/iface.c	(revision da9ebcaebe3f2f652690f890a79e9d9f49d48083)
+++ uspace/drv/uhci-hcd/iface.c	(revision 88702300c98dd32f6dcd809fc99e6a0c9ae9a70a)
@@ -128,4 +128,19 @@
 }
 /*----------------------------------------------------------------------------*/
+static int register_endpoint(
+    ddf_fun_t *fun, usb_address_t address, usb_endpoint_t endpoint,
+    usb_transfer_type_t transfer_type, usb_direction_t direction,
+    size_t max_packet_size, unsigned int interval)
+{
+	return ENOTSUP;
+}
+/*----------------------------------------------------------------------------*/
+static int unregister_endpoint(
+    ddf_fun_t *fun, usb_address_t address,
+    usb_endpoint_t endpoint, usb_direction_t direction)
+{
+	return ENOTSUP;
+}
+/*----------------------------------------------------------------------------*/
 /** Interrupt out transaction interface function
  *
@@ -365,4 +380,7 @@
 	.release_address = release_address,
 
+	.register_endpoint = register_endpoint,
+	.unregister_endpoint = unregister_endpoint,
+
 	.interrupt_out = interrupt_out,
 	.interrupt_in = interrupt_in,
Index: uspace/lib/usb/include/usb/host/bandwidth.h
===================================================================
--- uspace/lib/usb/include/usb/host/bandwidth.h	(revision da9ebcaebe3f2f652690f890a79e9d9f49d48083)
+++ uspace/lib/usb/include/usb/host/bandwidth.h	(revision 88702300c98dd32f6dcd809fc99e6a0c9ae9a70a)
@@ -55,18 +55,16 @@
 
 int bandwidth_reserve(bandwidth_t *instance, usb_address_t address,
-    usb_endpoint_t endpoint, usb_transfer_type_t transfer_type,
-    size_t max_packet_size, size_t size, unsigned interval);
+    usb_endpoint_t endpoint, usb_direction_t direction, usb_speed_t speed,
+    usb_transfer_type_t transfer_type, size_t max_packet_size, size_t size,
+    unsigned interval);
 
 int bandwidth_release(bandwidth_t *instance, usb_address_t address,
-    usb_endpoint_t endpoint, usb_transfer_type_t transfer_type,
-    size_t max_packet_size, size_t size, unsigned interval);
+    usb_endpoint_t endpoint, usb_direction_t direction);
 
 int bandwidth_use(bandwidth_t *instance, usb_address_t address,
-    usb_endpoint_t endpoint, usb_transfer_type_t transfer_type,
-    size_t max_packet_size, size_t size, unsigned interval);
+    usb_endpoint_t endpoint, usb_direction_t direction);
 
 int bandwidth_free(bandwidth_t *instance, usb_address_t address,
-    usb_endpoint_t endpoint, usb_transfer_type_t transfer_type,
-    size_t max_packet_size, size_t size, unsigned interval);
+    usb_endpoint_t endpoint, usb_direction_t direction);
 
 #endif
Index: uspace/lib/usb/src/host/bandwidth.c
===================================================================
--- uspace/lib/usb/src/host/bandwidth.c	(revision da9ebcaebe3f2f652690f890a79e9d9f49d48083)
+++ uspace/lib/usb/src/host/bandwidth.c	(revision 88702300c98dd32f6dcd809fc99e6a0c9ae9a70a)
@@ -34,7 +34,5 @@
 	usb_address_t address;
 	usb_endpoint_t endpoint;
-	usb_transfer_type_t transfer_type;
-	size_t max_packet_size;
-	size_t size;
+	usb_direction_t direction;
 } __attribute__((aligned (sizeof(unsigned long)))) transfer_t;
 /*----------------------------------------------------------------------------*/
@@ -43,4 +41,5 @@
 	link_t link;
 	bool used;
+	size_t required;
 } transfer_status_t;
 /*----------------------------------------------------------------------------*/
@@ -91,14 +90,13 @@
 /*----------------------------------------------------------------------------*/
 int bandwidth_reserve(bandwidth_t *instance, usb_address_t address,
-    usb_endpoint_t endpoint, usb_transfer_type_t transfer_type,
-    size_t max_packet_size, size_t size, unsigned interval)
-{
-	assert(instance);
-	transfer_t trans = {
-		.address = address,
-		.endpoint = endpoint,
-		.transfer_type = transfer_type,
-		.max_packet_size = max_packet_size,
-		.size = size,
+    usb_endpoint_t endpoint, usb_direction_t direction, usb_speed_t speed,
+    usb_transfer_type_t transfer_type, size_t max_packet_size, size_t size,
+    unsigned interval)
+{
+	assert(instance);
+	transfer_t trans = {
+		.address = address,
+		.endpoint = endpoint,
+		.direction = direction,
 	};
 	fibril_mutex_lock(&instance->guard);
@@ -117,4 +115,5 @@
 
 	status->transfer = trans;
+	status->required = 0;
 	status->used = false;
 	link_initialize(&status->link);
@@ -128,14 +127,11 @@
 /*----------------------------------------------------------------------------*/
 int bandwidth_release(bandwidth_t *instance, usb_address_t address,
-    usb_endpoint_t endpoint, usb_transfer_type_t transfer_type,
-    size_t max_packet_size, size_t size, unsigned interval)
-{
-	assert(instance);
-	transfer_t trans = {
-		.address = address,
-		.endpoint = endpoint,
-		.transfer_type = transfer_type,
-		.max_packet_size = max_packet_size,
-		.size = size,
+    usb_endpoint_t endpoint, usb_direction_t direction)
+{
+	assert(instance);
+	transfer_t trans = {
+		.address = address,
+		.endpoint = endpoint,
+		.direction = direction,
 	};
 	fibril_mutex_lock(&instance->guard);
@@ -156,14 +152,11 @@
 /*----------------------------------------------------------------------------*/
 int bandwidth_use(bandwidth_t *instance, usb_address_t address,
-    usb_endpoint_t endpoint, usb_transfer_type_t transfer_type,
-    size_t max_packet_size, size_t size, unsigned interval)
-{
-	assert(instance);
-	transfer_t trans = {
-		.address = address,
-		.endpoint = endpoint,
-		.transfer_type = transfer_type,
-		.max_packet_size = max_packet_size,
-		.size = size,
+    usb_endpoint_t endpoint, usb_direction_t direction)
+{
+	assert(instance);
+	transfer_t trans = {
+		.address = address,
+		.endpoint = endpoint,
+		.direction = direction,
 	};
 	fibril_mutex_lock(&instance->guard);
@@ -187,14 +180,11 @@
 /*----------------------------------------------------------------------------*/
 int bandwidth_free(bandwidth_t *instance, usb_address_t address,
-    usb_endpoint_t endpoint, usb_transfer_type_t transfer_type,
-    size_t max_packet_size, size_t size, unsigned interval)
-{
-	assert(instance);
-	transfer_t trans = {
-		.address = address,
-		.endpoint = endpoint,
-		.transfer_type = transfer_type,
-		.max_packet_size = max_packet_size,
-		.size = size,
+    usb_endpoint_t endpoint, usb_direction_t direction)
+{
+	assert(instance);
+	transfer_t trans = {
+		.address = address,
+		.endpoint = endpoint,
+		.direction = direction,
 	};
 	fibril_mutex_lock(&instance->guard);
