Index: uspace/lib/usbhost/src/ddf_helpers.c
===================================================================
--- uspace/lib/usbhost/src/ddf_helpers.c	(revision 27572478bbfb68a5fe352b71315dfcd899880838)
+++ uspace/lib/usbhost/src/ddf_helpers.c	(revision 0918382f0dd2d21d3af74f39f202b3e0a296bcc8)
@@ -77,8 +77,6 @@
 } usb_dev_t;
 
-static int hcd_ddf_new_device(ddf_dev_t *device, usb_dev_t *hub, unsigned port,
-    usb_address_t *id);
-static int hcd_ddf_remove_device(ddf_dev_t *device, usb_dev_t *hub,
-    usb_address_t id);
+static int hcd_ddf_new_device(ddf_dev_t *device, usb_dev_t *hub, unsigned port);
+static int hcd_ddf_remove_device(ddf_dev_t *device, usb_dev_t *hub, unsigned port);
 
 
@@ -164,5 +162,5 @@
 }
 
-static int device_enumerate(ddf_fun_t *fun, usb_device_handle_t *handle)
+static int device_enumerate(ddf_fun_t *fun, unsigned port)
 {
 	assert(fun);
@@ -171,14 +169,10 @@
 	assert(ddf_dev);
 	assert(dev);
-	usb_address_t address = 0;
-	unsigned port = 0; //TODO provide real value here
-	usb_log_debug("Device %d reported a new USB device\n", dev->address);
-	const int ret = hcd_ddf_new_device(ddf_dev, dev, port, &address);
-	if (ret == EOK && handle)
-		*handle = address;
-	return ret;
-}
-
-static int device_remove(ddf_fun_t *fun, usb_device_handle_t handle)
+	usb_log_debug("Hub %d reported a new USB device on port: %u\n",
+	    dev->address, port);
+	return hcd_ddf_new_device(ddf_dev, dev, port);
+}
+
+static int device_remove(ddf_fun_t *fun, unsigned port)
 {
 	assert(fun);
@@ -187,7 +181,7 @@
 	assert(ddf_dev);
 	assert(dev);
-	usb_log_debug("Hub `%s' reported removal of device %d\n",
-	    ddf_fun_get_name(fun), (int)handle);
-	return hcd_ddf_remove_device(ddf_dev, dev, (usb_address_t)handle);
+	usb_log_debug("Hub `%s' reported removal of device on port %u\n",
+	    ddf_fun_get_name(fun), port);
+	return hcd_ddf_remove_device(ddf_dev, dev, port);
 }
 
@@ -405,5 +399,5 @@
 
 static int hcd_ddf_remove_device(ddf_dev_t *device, usb_dev_t *hub,
-    usb_address_t id)
+    unsigned port)
 {
 	assert(device);
@@ -421,8 +415,8 @@
 	list_foreach(hub->devices, it) {
 		victim = list_get_instance(it, usb_dev_t, link);
-		if (victim->address == id)
+		if (victim->port == port)
 			break;
 	}
-	if (victim && victim->address == id) {
+	if (victim && victim->port == port) {
 		list_remove(&victim->link);
 		fibril_mutex_unlock(&hc_dev->guard);
@@ -432,6 +426,6 @@
 			hcd_release_address(hcd, victim->address);
 		} else {
-			usb_log_warning("Failed to unbind device %d: %s\n",
-			    id, str_error(ret));
+			usb_log_warning("Failed to unbind device `%s': %s\n",
+			    ddf_fun_get_name(victim->fun), str_error(ret));
 		}
 		return EOK;
@@ -440,6 +434,5 @@
 }
 
-static int hcd_ddf_new_device(ddf_dev_t *device, usb_dev_t *hub, unsigned port,
-    usb_address_t *id)
+static int hcd_ddf_new_device(ddf_dev_t *device, usb_dev_t *hub, unsigned port)
 {
 	assert(device);
@@ -552,8 +545,5 @@
 		hcd_remove_ep(hcd, target, USB_DIRECTION_BOTH);
 		hcd_release_address(hcd, target.address);
-		return ret;
-	}
-	if (ret == EOK && id)
-		*id = target.address;
+	}
 
 	return ret;
@@ -574,5 +564,5 @@
 
 	hcd_reserve_default_address(hcd, speed);
-	const int ret = hcd_ddf_new_device(device, NULL, 0, NULL);
+	const int ret = hcd_ddf_new_device(device, NULL, 0);
 	hcd_release_default_address(hcd);
 	return ret;
