Index: uspace/drv/uhci/iface.c
===================================================================
--- uspace/drv/uhci/iface.c	(revision 621fdaa75ad6f9b36a3978a6df9994b9ed71ffe4)
+++ uspace/drv/uhci/iface.c	(revision 86b39f7e0677ec9415e12ffd3438650c75dfa9db)
@@ -35,5 +35,59 @@
     usb_address_t *address)
 {
-	return ENOTSUP;
+	assert(dev);
+	uhci_t *hc = (uhci_t *)dev->driver_data;
+	assert(hc);
+	*address = usb_address_keeping_find(&hc->address_manager, handle);
+	if (*address <= 0)
+	  return *address;
+	return EOK;
+}
+/*----------------------------------------------------------------------------*/
+static int reserve_default_address(device_t *dev)
+{
+	assert(dev);
+	uhci_t *hc = (uhci_t *)dev->driver_data;
+	assert(hc);
+	usb_address_keeping_reserve_default(&hc->address_manager);
+	return EOK;
+}
+/*----------------------------------------------------------------------------*/
+static int release_default_address(device_t *dev)
+{
+	assert(dev);
+	uhci_t *hc = (uhci_t *)dev->driver_data;
+	assert(hc);
+	usb_address_keeping_release_default(&hc->address_manager);
+	return EOK;
+}
+/*----------------------------------------------------------------------------*/
+static int request_address(device_t *dev, usb_address_t *address)
+{
+	assert(dev);
+	uhci_t *hc = (uhci_t *)dev->driver_data;
+	assert(hc);
+	*address = usb_address_keeping_request(&hc->address_manager);
+	if (*address <= 0)
+	  return *address;
+	return EOK;
+}
+/*----------------------------------------------------------------------------*/
+static int bind_address(
+  device_t *dev, usb_address_t address, devman_handle_t handle)
+{
+	assert(dev);
+	uhci_t *hc = (uhci_t *)dev->driver_data;
+	assert(hc);
+	usb_address_keeping_devman_bind(&hc->address_manager, address, handle);
+	return EOK;
+}
+/*----------------------------------------------------------------------------*/
+static int release_address(device_t *dev, usb_address_t address)
+{
+	assert(dev);
+	uhci_t *hc = (uhci_t *)dev->driver_data;
+	assert(hc);
+	usb_address_keeping_release_default(&hc->address_manager);
+	return EOK;
 }
 /*----------------------------------------------------------------------------*/
@@ -104,9 +158,9 @@
 	.tell_address = get_address,
 
-	.reserve_default_address = NULL,
-	.release_default_address = NULL,
-	.request_address = NULL,
-	.bind_address = NULL,
-	.release_address = NULL,
+	.reserve_default_address = reserve_default_address,
+	.release_default_address = release_default_address,
+	.request_address = request_address,
+	.bind_address = bind_address,
+	.release_address = release_address,
 
 	.interrupt_out = interrupt_out,
