Index: uspace/drv/ohci/iface.c
===================================================================
--- uspace/drv/ohci/iface.c	(revision b9fa0a962eaa3177326795702c1a444540e5cb24)
+++ uspace/drv/ohci/iface.c	(revision f9c03b5741ded16234379e99ce809ea66a8b9f6c)
@@ -151,7 +151,17 @@
     size_t max_packet_size, unsigned int interval)
 {
-	UNSUPPORTED("register_endpoint");
-
-	return ENOTSUP;
+	assert(fun);
+	hc_t *hc = fun_to_hc(fun);
+	assert(hc);
+	if (address == hc->rh.address)
+		return EOK;
+	const usb_speed_t speed =
+		usb_device_keeper_get_speed(&hc->manager, address);
+	const size_t size = max_packet_size;
+	usb_log_debug("Register endpoint %d:%d %s %s(%d) %zu(%zu) %u.\n",
+	    address, endpoint, usb_str_transfer_type(transfer_type),
+	    usb_str_speed(speed), direction, size, max_packet_size, interval);
+	return bandwidth_reserve(&hc->bandwidth, address, endpoint, direction,
+	    speed, transfer_type, max_packet_size, size, interval);
 }
 /*----------------------------------------------------------------------------*/
@@ -168,5 +178,10 @@
     usb_endpoint_t endpoint, usb_direction_t direction)
 {
-	UNSUPPORTED("unregister_endpoint");
+	assert(fun);
+	hc_t *hc = fun_to_hc(fun);
+	assert(hc);
+	usb_log_debug("Unregister endpoint %d:%d %d.\n",
+	    address, endpoint, direction);
+	return bandwidth_release(&hc->bandwidth, address, endpoint, direction);
 
 	return ENOTSUP;
