Index: uspace/lib/usb/include/usb/dev.h
===================================================================
--- uspace/lib/usb/include/usb/dev.h	(revision a045ab1e7bd6bb7cd550b95bb706e6279dbb08cc)
+++ uspace/lib/usb/include/usb/dev.h	(revision 2c202c5fbd6658ed3258a4c6281b13f664fc6a46)
@@ -35,10 +35,38 @@
 #define LIBUSB_DEV_H_
 
+#include <devman.h>
 #include <usb/usb.h>
-#include <devman.h>
+#include <usb/hc.h>
+
+
+/** Abstraction of a physical connection to the device.
+ * This type is an abstraction of the USB wire that connects the host and
+ * the function (device).
+ */
+typedef struct {
+	/** Connection to the host controller device is connected to. */
+	usb_hc_connection_t *hc_connection;
+	/** Address of the device. */
+	usb_address_t address;
+} usb_device_connection_t;
+
+int usb_device_connection_initialize(usb_device_connection_t *,
+    usb_hc_connection_t *, usb_address_t);
+
+/** Initialize connection to USB device on default address.
+ *
+ * @param dev_connection Device connection structure to be initialized.
+ * @param hc_connection Initialized connection to host controller.
+ * @return Error code.
+ */
+static inline int usb_device_connection_initialize_on_default_address(
+    usb_device_connection_t *connection, usb_hc_connection_t *hc_conn)
+{
+	return usb_device_connection_initialize(connection, hc_conn, 0);
+}
 
 usb_address_t usb_get_address_by_handle(devman_handle_t);
 
-int usb_find_hc(devman_handle_t, devman_handle_t *);
+int usb_get_hc_by_handle(devman_handle_t, devman_handle_t *);
 
 int usb_resolve_device_handle(const char *, devman_handle_t *, usb_address_t *,
Index: uspace/lib/usb/include/usb/hc.h
===================================================================
--- uspace/lib/usb/include/usb/hc.h	(revision a045ab1e7bd6bb7cd550b95bb706e6279dbb08cc)
+++ uspace/lib/usb/include/usb/hc.h	(revision 2c202c5fbd6658ed3258a4c6281b13f664fc6a46)
@@ -71,5 +71,4 @@
 	connection->ref_count = 0;
 	fibril_mutex_initialize(&connection->guard);
-
 }
 
Index: uspace/lib/usb/src/ddfiface.c
===================================================================
--- uspace/lib/usb/src/ddfiface.c	(revision a045ab1e7bd6bb7cd550b95bb706e6279dbb08cc)
+++ uspace/lib/usb/src/ddfiface.c	(revision 2c202c5fbd6658ed3258a4c6281b13f664fc6a46)
@@ -68,5 +68,5 @@
 {
 	assert(fun);
-	return usb_find_hc(fun->handle, handle);
+	return usb_get_hc_by_handle(fun->handle, handle);
 }
 
Index: uspace/lib/usb/src/dev.c
===================================================================
--- uspace/lib/usb/src/dev.c	(revision a045ab1e7bd6bb7cd550b95bb706e6279dbb08cc)
+++ uspace/lib/usb/src/dev.c	(revision 2c202c5fbd6658ed3258a4c6281b13f664fc6a46)
@@ -68,5 +68,6 @@
  * @return Error code.
  */
-int usb_find_hc(devman_handle_t device_handle, devman_handle_t *hc_handle)
+int usb_get_hc_by_handle(devman_handle_t device_handle,
+    devman_handle_t *hc_handle)
 {
 	async_sess_t *parent_sess =
@@ -88,2 +89,20 @@
 	return ret;
 }
+/*----------------------------------------------------------------------------*/
+int usb_device_connection_initialize(usb_device_connection_t *connection,
+    usb_hc_connection_t *hc_connection, usb_address_t address)
+{
+	assert(connection);
+
+	if (hc_connection == NULL) {
+		return EBADMEM;
+	}
+
+	if ((address < 0) || (address >= USB11_ADDRESS_MAX)) {
+		return EINVAL;
+	}
+
+	connection->hc_connection = hc_connection;
+	connection->address = address;
+	return EOK;
+}
Index: uspace/lib/usb/src/hc.c
===================================================================
--- uspace/lib/usb/src/hc.c	(revision a045ab1e7bd6bb7cd550b95bb706e6279dbb08cc)
+++ uspace/lib/usb/src/hc.c	(revision 2c202c5fbd6658ed3258a4c6281b13f664fc6a46)
@@ -114,5 +114,5 @@
 
 	devman_handle_t hc_handle;
-	const int rc = usb_find_hc(device->handle, &hc_handle);
+	const int rc = usb_get_hc_by_handle(device->handle, &hc_handle);
 	if (rc == EOK) {
 		usb_hc_connection_initialize(connection, hc_handle);
Index: uspace/lib/usb/src/resolve.c
===================================================================
--- uspace/lib/usb/src/resolve.c	(revision a045ab1e7bd6bb7cd550b95bb706e6279dbb08cc)
+++ uspace/lib/usb/src/resolve.c	(revision 2c202c5fbd6658ed3258a4c6281b13f664fc6a46)
@@ -185,5 +185,5 @@
 		/* Try to find its host controller. */
 		if (!found_hc) {
-			rc = usb_find_hc(tmp_handle, &hc_handle);
+			rc = usb_get_hc_by_handle(tmp_handle, &hc_handle);
 			if (rc == EOK) {
 				found_hc = true;
