Index: uspace/lib/drv/generic/remote_usb.c
===================================================================
--- uspace/lib/drv/generic/remote_usb.c	(revision 3121b5f30ef34cc426b12f3245f12ebbbe102c32)
+++ uspace/lib/drv/generic/remote_usb.c	(revision 0918382f0dd2d21d3af74f39f202b3e0a296bcc8)
@@ -139,13 +139,10 @@
  * @return Error code.
  */
-int usb_device_enumerate(async_exch_t *exch, usb_device_handle_t *handle)
-{
-	if (!exch || !handle)
-		return EBADMEM;
-	sysarg_t h;
-	const int ret = async_req_1_1(exch, DEV_IFACE_ID(USB_DEV_IFACE),
-	    IPC_M_USB_DEVICE_ENUMERATE, &h);
-	if (ret == EOK)
-		*handle = (usb_device_handle_t)h;
+int usb_device_enumerate(async_exch_t *exch, unsigned port)
+{
+	if (!exch)
+		return EBADMEM;
+	const int ret = async_req_2_0(exch, DEV_IFACE_ID(USB_DEV_IFACE),
+	    IPC_M_USB_DEVICE_ENUMERATE, port);
 	return ret;
 }
@@ -156,10 +153,10 @@
  * @return Error code.
  */
-int usb_device_remove(async_exch_t *exch, usb_device_handle_t handle)
+int usb_device_remove(async_exch_t *exch, unsigned port)
 {
 	if (!exch)
 		return EBADMEM;
 	return async_req_2_0(exch, DEV_IFACE_ID(USB_DEV_IFACE),
-	    IPC_M_USB_DEVICE_REMOVE, handle);
+	    IPC_M_USB_DEVICE_REMOVE, port);
 }
 
@@ -381,11 +378,7 @@
 	}
 
-	usb_device_handle_t handle = 0;
-	const int ret = usb_iface->device_enumerate(fun, &handle);
-	if (ret != EOK) {
-		async_answer_0(callid, ret);
-	}
-
-	async_answer_1(callid, EOK, (sysarg_t) handle);
+	const unsigned port = DEV_IPC_GET_ARG1(*call);
+	const int ret = usb_iface->device_enumerate(fun, port);
+	async_answer_0(callid, ret);
 }
 
@@ -400,6 +393,6 @@
 	}
 
-	usb_device_handle_t handle = DEV_IPC_GET_ARG1(*call);
-	const int ret = usb_iface->device_remove(fun, handle);
+	const unsigned port = DEV_IPC_GET_ARG1(*call);
+	const int ret = usb_iface->device_remove(fun, port);
 	async_answer_0(callid, ret);
 }
Index: uspace/lib/drv/include/usb_iface.h
===================================================================
--- uspace/lib/drv/include/usb_iface.h	(revision 3121b5f30ef34cc426b12f3245f12ebbbe102c32)
+++ uspace/lib/drv/include/usb_iface.h	(revision 0918382f0dd2d21d3af74f39f202b3e0a296bcc8)
@@ -42,8 +42,4 @@
 #include <usb/usb.h>
 
-typedef intptr_t usb_device_handle_t;
-enum {
-	USB_DEVICE_HANDLE_INVALID = -1
-};
 typedef async_sess_t usb_dev_session_t;
 
@@ -58,6 +54,6 @@
 int usb_release_default_address(async_exch_t *);
 
-int usb_device_enumerate(async_exch_t *, usb_device_handle_t *);
-int usb_device_remove(async_exch_t *, usb_device_handle_t);
+int usb_device_enumerate(async_exch_t *, unsigned port);
+int usb_device_remove(async_exch_t *, unsigned port);
 
 int usb_register_endpoint(async_exch_t *, usb_endpoint_t, usb_transfer_type_t,
@@ -81,6 +77,6 @@
 	int (*release_default_address)(ddf_fun_t *);
 
-	int (*device_enumerate)(ddf_fun_t *, usb_device_handle_t *);
-	int (*device_remove)(ddf_fun_t *, usb_device_handle_t);
+	int (*device_enumerate)(ddf_fun_t *, unsigned);
+	int (*device_remove)(ddf_fun_t *, unsigned);
 
 	int (*register_endpoint)(ddf_fun_t *, usb_endpoint_t,
