Index: uspace/lib/drv/include/usb_iface.h
===================================================================
--- uspace/lib/drv/include/usb_iface.h	(revision 8f68913ffa52d241510b0d7f1fd056b1b456661b)
+++ uspace/lib/drv/include/usb_iface.h	(revision e6becb932fda1eb275c4f5eb485fe7c7aed62d78)
@@ -42,7 +42,22 @@
 #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;
+
+usb_dev_session_t *usb_dev_connect(ddf_dev_t *dev);
+void usb_dev_session_close(usb_dev_session_t *);
+
 int usb_get_my_address(async_exch_t *, usb_address_t *);
 int usb_get_my_interface(async_exch_t *, int *);
 int usb_get_hc_handle(async_exch_t *, devman_handle_t *);
+
+int usb_reserve_default_address(async_exch_t *, usb_speed_t);
+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);
 
 /** USB device communication interface. */
@@ -51,4 +66,9 @@
 	int (*get_my_interface)(ddf_fun_t *, int *);
 	int (*get_hc_handle)(ddf_fun_t *, devman_handle_t *);
+
+	int (*reserve_default_address)(ddf_fun_t *, usb_speed_t);
+	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);
 } usb_iface_t;
 
