Index: uspace/drv/ohci/hc.c
===================================================================
--- uspace/drv/ohci/hc.c	(revision a6d1bc10e6f4e06523af1a4676a4d4c4c791e696)
+++ uspace/drv/ohci/hc.c	(revision 8627377e437af3c039cc283b457d341427908fbc)
@@ -67,5 +67,5 @@
 {
 	assert(instance);
-	return rh_register(&instance->rh, dev);
+	return EOK;
 }
 /*----------------------------------------------------------------------------*/
Index: uspace/drv/ohci/main.c
===================================================================
--- uspace/drv/ohci/main.c	(revision a6d1bc10e6f4e06523af1a4676a4d4c4c791e696)
+++ uspace/drv/ohci/main.c	(revision 8627377e437af3c039cc283b457d341427908fbc)
@@ -48,4 +48,29 @@
 
 static int ohci_add_device(ddf_dev_t *device);
+static int get_hc_handle(ddf_fun_t *fun, devman_handle_t *handle)
+{
+	assert(handle);
+  assert(fun != NULL);
+
+  *handle = fun->handle;
+  return EOK;
+}
+/*----------------------------------------------------------------------------*/
+static int get_address(
+    ddf_fun_t *fun, devman_handle_t handle, usb_address_t *address)
+{
+	assert(fun);
+	device_keeper_t *manager = &fun_to_hc(fun)->manager;
+  usb_address_t addr = device_keeper_find(manager, handle);
+  if (addr < 0) {
+    return addr;
+  }
+
+  if (address != NULL) {
+    *address = addr;
+  }
+
+  return EOK;
+}
 /*----------------------------------------------------------------------------*/
 /** IRQ handling callback, identifies device
@@ -71,8 +96,14 @@
 	.driver_ops = &ohci_driver_ops
 };
+/*----------------------------------------------------------------------------*/
+static usb_iface_t hc_usb_iface = {
+	.get_address = get_address,
+	.get_hc_handle = get_hc_handle,
+};
+/*----------------------------------------------------------------------------*/
 static ddf_dev_ops_t hc_ops = {
+	.interfaces[USB_DEV_IFACE] = &hc_usb_iface,
 	.interfaces[USBHC_DEV_IFACE] = &hc_iface,
 };
-
 /*----------------------------------------------------------------------------*/
 /** Initializes a new ddf driver instance of OHCI hcd.
Index: uspace/drv/ohci/root_hub.c
===================================================================
--- uspace/drv/ohci/root_hub.c	(revision a6d1bc10e6f4e06523af1a4676a4d4c4c791e696)
+++ uspace/drv/ohci/root_hub.c	(revision 8627377e437af3c039cc283b457d341427908fbc)
@@ -67,9 +67,4 @@
 	/* TODO: implement */
 }
-/*----------------------------------------------------------------------------*/
-int rh_register(rh_t *instance, ddf_dev_t *dev)
-{
-	return EOK;
-}
 /**
  * @}
Index: uspace/drv/ohci/root_hub.h
===================================================================
--- uspace/drv/ohci/root_hub.h	(revision a6d1bc10e6f4e06523af1a4676a4d4c4c791e696)
+++ uspace/drv/ohci/root_hub.h	(revision 8627377e437af3c039cc283b457d341427908fbc)
@@ -52,6 +52,4 @@
 
 void rh_interrupt(rh_t *instance);
-
-int rh_register(rh_t *instance, ddf_dev_t *dev);
 #endif
 /**
