Index: uspace/lib/usbdev/include/usb/dev/hub.h
===================================================================
--- uspace/lib/usbdev/include/usb/dev/hub.h	(revision 51f033ce445e71ec5c2cc085b4131af071c0f49c)
+++ uspace/lib/usbdev/include/usb/dev/hub.h	(revision 90994fa1ec60bf10a68ef4f056183053240541f5)
@@ -38,4 +38,5 @@
 #define LIBUSBDEV_HUB_H_
 
+#include <ddf/driver.h>
 #include <sys/types.h>
 #include <usb/hc.h>
@@ -55,6 +56,6 @@
 	/** Device address. */
 	usb_address_t address;
-	/** Devman handle of the device. */
-	devman_handle_t handle;
+	/** DDF function (external) of the device. */
+	ddf_fun_t *fun;
 } usb_hub_attached_device_t;
 
Index: uspace/lib/usbdev/src/hub.c
===================================================================
--- uspace/lib/usbdev/src/hub.c	(revision 51f033ce445e71ec5c2cc085b4131af071c0f49c)
+++ uspace/lib/usbdev/src/hub.c	(revision 90994fa1ec60bf10a68ef4f056183053240541f5)
@@ -105,5 +105,5 @@
 	int rc = async_req_3_0(exch, DEV_IFACE_ID(USBHC_DEV_IFACE),
 	    IPC_M_USBHC_BIND_ADDRESS,
-	    attached_device->address, attached_device->handle);
+	    attached_device->address, attached_device->fun->handle);
 	async_exchange_end(exch);
 	
@@ -320,8 +320,8 @@
 	 */
 	/* FIXME: create device_register that will get opened ctrl pipe. */
-	devman_handle_t child_handle;
+	ddf_fun_t *child_fun;
 	rc = usb_device_register_child_in_devman(dev_addr, dev_conn.hc_handle,
-	    parent, &child_handle,
-	    dev_ops, new_dev_data, new_fun);
+	    parent, NULL,
+	    dev_ops, new_dev_data, &child_fun);
 	if (rc != EOK) {
 		rc = ESTALL;
@@ -334,5 +334,5 @@
 	usb_hub_attached_device_t new_device = {
 		.address = dev_addr,
-		.handle = child_handle
+		.fun = child_fun,
 	};
 	rc = usb_hc_register_device(&hc_conn, &new_device);
@@ -351,5 +351,8 @@
 	}
 	if (assigned_handle != NULL) {
-		*assigned_handle = child_handle;
+		*assigned_handle = child_fun->handle;
+	}
+	if (new_fun != NULL) {
+		*new_fun = child_fun;
 	}
 
