Index: uspace/lib/usbdev/include/usb/dev/device.h
===================================================================
--- uspace/lib/usbdev/include/usb/dev/device.h	(revision 3969a425b60997df437e943e91d861b21c393972)
+++ uspace/lib/usbdev/include/usb/dev/device.h	(revision e0d8b7404a8f8e19b5c91d6e9d75d8cd07c00b37)
@@ -95,8 +95,4 @@
 void * usb_device_data_get(usb_device_t *);
 
-/* Legacy support */
-usb_address_t usb_device_address(usb_device_t *);
-devman_handle_t usb_device_hc_handle(usb_device_t*);
-
 #endif
 /**
Index: uspace/lib/usbdev/include/usb/dev/pipes.h
===================================================================
--- uspace/lib/usbdev/include/usb/dev/pipes.h	(revision 3969a425b60997df437e943e91d861b21c393972)
+++ uspace/lib/usbdev/include/usb/dev/pipes.h	(revision e0d8b7404a8f8e19b5c91d6e9d75d8cd07c00b37)
@@ -41,5 +41,4 @@
 #include <usb/usb.h>
 #include <usb/descriptor.h>
-#include <usb/dev/usb_device_connection.h>
 #include <usb_iface.h>
 
@@ -51,7 +50,4 @@
  */
 typedef struct {
-	/** The connection used for sending the data. */
-	usb_device_connection_t *wire;
-
 	/** Endpoint number. */
 	usb_endpoint_t endpoint_no;
@@ -71,4 +67,5 @@
 	bool auto_reset_halt;
 
+	/** The connection used for sending the data. */
 	usb_dev_session_t *bus_session;
 } usb_pipe_t;
@@ -108,20 +105,14 @@
 } usb_endpoint_mapping_t;
 
-int usb_pipe_initialize(usb_pipe_t *, usb_device_connection_t *,
-    usb_endpoint_t, usb_transfer_type_t, size_t, usb_direction_t,
-    usb_dev_session_t *);
-int usb_pipe_initialize_default_control(usb_pipe_t *,
-    usb_device_connection_t *, usb_dev_session_t *);
+int usb_pipe_initialize(usb_pipe_t *, usb_endpoint_t, usb_transfer_type_t,
+    size_t, usb_direction_t, usb_dev_session_t *);
+int usb_pipe_initialize_default_control(usb_pipe_t *, usb_dev_session_t *);
 
 int usb_pipe_probe_default_control(usb_pipe_t *);
 int usb_pipe_initialize_from_configuration(usb_endpoint_mapping_t *,
-    size_t, const uint8_t *, size_t, usb_device_connection_t *,
-    usb_dev_session_t *);
+    size_t, const uint8_t *, size_t, usb_dev_session_t *);
 
 int usb_pipe_register(usb_pipe_t *, unsigned);
 int usb_pipe_unregister(usb_pipe_t *);
-
-int usb_pipe_start_long_transfer(usb_pipe_t *);
-int usb_pipe_end_long_transfer(usb_pipe_t *);
 
 int usb_pipe_read(usb_pipe_t *, void *, size_t, size_t *);
Index: uspace/lib/usbdev/include/usb/dev/usb_device_connection.h
===================================================================
--- uspace/lib/usbdev/include/usb/dev/usb_device_connection.h	(revision 3969a425b60997df437e943e91d861b21c393972)
+++ 	(revision )
@@ -1,140 +1,0 @@
-/*
- * Copyright (c) 2011 Jan Vesely
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - Redistributions in binary form must reproduce the above copyright
- *   notice, this list of conditions and the following disclaimer in the
- *   documentation and/or other materials provided with the distribution.
- * - The name of the author may not be used to endorse or promote products
- *   derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-/** @addtogroup libusbdev
- * @{
- */
-/** @file
- * Common USB types and functions.
- */
-#ifndef LIBUSBDEV_DEVICE_CONNECTION_H_
-#define LIBUSBDEV_DEVICE_CONNECTION_H_
-
-#include <errno.h>
-#include <devman.h>
-#include <usb/usb.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;
-
-/** Initialize device connection. Set address and hc connection.
- * @param instance Structure to initialize.
- * @param hc_connection. Host controller connection to use.
- * @param address USB address.
- * @return Error code.
- */
-static inline int usb_device_connection_initialize(
-    usb_device_connection_t *instance, usb_hc_connection_t *hc_connection,
-    usb_address_t address)
-{
-	assert(instance);
-	if (hc_connection == NULL)
-		return EBADMEM;
-	if (!usb_address_is_valid(address))
-		return EINVAL;
-
-	instance->hc_connection = hc_connection;
-	instance->address = address;
-	return EOK;
-}
-
-
-/** Get data from the device.
- * @param[in] instance device connection structure to use.
- * @param[in] ep target endpoint's number.
- * @param[in] setup Setup stage data (control transfers).
- * @param[in] data data buffer.
- * @param[in] size size of the data buffer.
- * @param[out] rsize bytes actually copied to the buffer.
- * @return Error code.
- */
-static inline int usb_device_control_read(usb_device_connection_t *instance,
-    usb_endpoint_t ep, uint64_t setup, void *data, size_t size, size_t *rsize)
-{
-	assert(instance);
-	return usb_hc_read(instance->hc_connection,
-	    instance->address, ep, setup, data, size, rsize);
-}
-
-/** Send data to the device.
- * @param instance device connection structure to use.
- * @param ep target endpoint's number.
- * @param setup Setup stage data (control transfers).
- * @param data data buffer.
- * @param size size of the data buffer.
- * @return Error code.
- */
-static inline int usb_device_control_write(usb_device_connection_t *instance,
-    usb_endpoint_t ep, uint64_t setup, const void *data, size_t size)
-{
-	assert(instance);
-	return usb_hc_write(instance->hc_connection,
-	    instance->address, ep, setup, data, size);
-}
-
-/** Wrapper for read calls with no setup stage.
- * @param[in] instance device connection structure.
- * @param[in] address USB device address.
- * @param[in] endpoint USB device endpoint.
- * @param[in] data Data buffer.
- * @param[in] size Size of the buffer.
- * @param[out] real_size Size of the transferred data.
- * @return Error code.
- */
-static inline int usb_device_read(usb_device_connection_t *instance,
-    usb_endpoint_t ep, void *data, size_t size, size_t *real_size)
-{
-	return usb_device_control_read(instance, ep, 0, data, size, real_size);
-}
-
-/** Wrapper for write calls with no setup stage.
- * @param instance device connection structure.
- * @param address USB device address.
- * @param endpoint USB device endpoint.
- * @param data Data buffer.
- * @param size Size of the buffer.
- * @return Error code.
- */
-static inline int usb_device_write(usb_device_connection_t *instance,
-    usb_endpoint_t ep, const void *data, size_t size)
-{
-	return usb_device_control_write(instance, ep, 0, data, size);
-}
-#endif
-/**
- * @}
- */
Index: uspace/lib/usbdev/src/devdrv.c
===================================================================
--- uspace/lib/usbdev/src/devdrv.c	(revision 3969a425b60997df437e943e91d861b21c393972)
+++ uspace/lib/usbdev/src/devdrv.c	(revision e0d8b7404a8f8e19b5c91d6e9d75d8cd07c00b37)
@@ -45,10 +45,8 @@
 /** USB device structure. */
 typedef struct usb_device {
-	/** Connection to USB hc, used by wire and arbitrary requests. */
-	usb_hc_connection_t hc_conn;
-	/** Connection backing the pipes.
-	 * Typically, you will not need to use this attribute at all.
-	 */
-	usb_device_connection_t wire;
+	/** Connection to device on USB bus */
+	usb_dev_session_t *bus_session;
+	/** devman handle */
+	devman_handle_t handle;
 	/** The default control pipe. */
 	usb_pipe_t ctrl_pipe;
@@ -78,8 +76,4 @@
 	void *driver_data;
 
-	/** Connection to device on USB bus */
-	usb_dev_session_t *bus_session;
-	/** devman handle */
-	devman_handle_t handle;
 } usb_device_t;
 
@@ -157,12 +151,9 @@
 	assert(usb_dev->descriptors.full_config == NULL);
 
-	/* It is worth to start a long transfer. */
-	usb_pipe_start_long_transfer(&usb_dev->ctrl_pipe);
-
 	/* Get the device descriptor. */
 	int rc = usb_request_get_device_descriptor(&usb_dev->ctrl_pipe,
 	    &usb_dev->descriptors.device);
 	if (rc != EOK) {
-		goto leave;
+		return rc;
 	}
 
@@ -173,6 +164,4 @@
 	    &usb_dev->descriptors.full_config_size);
 
-leave:
-	usb_pipe_end_long_transfer(&usb_dev->ctrl_pipe);
 
 	return rc;
@@ -198,5 +187,4 @@
  * - registers endpoints with the host controller
  *
- * @param[in] wire Initialized backing connection to the host controller.
  * @param[in] endpoints Endpoints description, NULL terminated.
  * @param[in] config_descr Configuration descriptor of active configuration.
@@ -240,5 +228,5 @@
 	int rc = usb_pipe_initialize_from_configuration(pipes, pipe_count,
 	    usb_dev->descriptors.full_config,
-	    usb_dev->descriptors.full_config_size, &usb_dev->wire,
+	    usb_dev->descriptors.full_config_size,
 	    usb_dev->bus_session);
 	if (rc != EOK) {
@@ -353,32 +341,4 @@
 }
 
-static int usb_dev_get_info(usb_device_t *usb_dev, devman_handle_t *handle,
-    usb_address_t *address, int *iface_no)
-{
-	assert(usb_dev);
-
-	int ret = EOK;
-	async_exch_t *exch = async_exchange_begin(usb_dev->bus_session);
-	if (!exch)
-		ret = ENOMEM;
-
-	if (ret == EOK && address)
-		ret = usb_get_my_address(exch, address);
-
-	if (ret == EOK && handle)
-		ret = usb_get_hc_handle(exch, handle);
-
-	if (ret == EOK && iface_no) {
-		ret = usb_get_my_interface(exch, iface_no);
-		if (ret == ENOTSUP) {
-			ret = EOK;
-			*iface_no = -1;
-		}
-	}
-
-	async_exchange_end(exch);
-	return ret;
-}
-
 /** Clean instance of a USB device.
  *
@@ -393,5 +353,4 @@
 		usb_device_destroy_pipes(usb_dev);
 		/* Ignore errors and hope for the best. */
-		usb_hc_connection_deinitialize(&usb_dev->hc_conn);
 		usb_alternate_interfaces_deinit(&usb_dev->alternate_interfaces);
 		usb_device_release_descriptors(usb_dev);
@@ -437,31 +396,8 @@
 	}
 
-	/* Get assigned params */
-	devman_handle_t hc_handle;
-	usb_address_t address;
-
-	int rc = usb_dev_get_info(usb_dev, &hc_handle, &address, NULL);
-	if (rc != EOK) {
-		usb_dev_disconnect(usb_dev->bus_session);
-		*errstr_ptr = "device parameters retrieval";
-		return rc;
-	}
-
-	/* Initialize hc connection. */
-	usb_hc_connection_initialize(&usb_dev->hc_conn, hc_handle);
-
-	/* Initialize backing wire and control pipe. */
-	rc = usb_device_connection_initialize(
-	    &usb_dev->wire, &usb_dev->hc_conn, address);
-	if (rc != EOK) {
-		usb_dev_disconnect(usb_dev->bus_session);
-		*errstr_ptr = "device connection initialization";
-		return rc;
-	}
-
 	/* This pipe was registered by the hub driver,
 	 * during device initialization. */
-	rc = usb_pipe_initialize_default_control(
-	    &usb_dev->ctrl_pipe, &usb_dev->wire, usb_dev->bus_session);
+	int rc = usb_pipe_initialize_default_control(
+	    &usb_dev->ctrl_pipe, usb_dev->bus_session);
 	if (rc != EOK) {
 		usb_dev_disconnect(usb_dev->bus_session);
@@ -470,17 +406,8 @@
 	}
 
-	/* Open hc connection for pipe registration. */
-	rc = usb_hc_connection_open(&usb_dev->hc_conn);
-	if (rc != EOK) {
-		usb_dev_disconnect(usb_dev->bus_session);
-		*errstr_ptr = "hc connection open";
-		return rc;
-	}
-
 	/* Retrieve standard descriptors. */
 	rc = usb_device_retrieve_descriptors(usb_dev);
 	if (rc != EOK) {
 		*errstr_ptr = "descriptor retrieval";
-		usb_hc_connection_close(&usb_dev->hc_conn);
 		usb_dev_disconnect(usb_dev->bus_session);
 		return rc;
@@ -499,5 +426,4 @@
 		rc = usb_device_create_pipes(usb_dev, endpoints);
 		if (rc != EOK) {
-			usb_hc_connection_close(&usb_dev->hc_conn);
 			usb_device_fini(usb_dev);
 			*errstr_ptr = "pipes initialization";
@@ -506,5 +432,4 @@
 	}
 
-	usb_hc_connection_close(&usb_dev->hc_conn);
 	return EOK;
 }
@@ -645,15 +570,4 @@
 }
 
-usb_address_t usb_device_address(usb_device_t *usb_dev)
-{
-	assert(usb_dev);
-	return usb_dev->wire.address;
-}
-
-devman_handle_t usb_device_hc_handle(usb_device_t *usb_dev)
-{
-	assert(usb_dev);
-	return usb_dev->hc_conn.hc_handle;
-}
 /**
  * @}
Index: uspace/lib/usbdev/src/devpoll.c
===================================================================
--- uspace/lib/usbdev/src/devpoll.c	(revision 3969a425b60997df437e943e91d861b21c393972)
+++ uspace/lib/usbdev/src/devpoll.c	(revision e0d8b7404a8f8e19b5c91d6e9d75d8cd07c00b37)
@@ -87,5 +87,4 @@
 	}
 
-	usb_pipe_start_long_transfer(pipe);
 	size_t failed_attempts = 0;
 	while (failed_attempts <= params->max_failures) {
@@ -148,6 +147,4 @@
 	}
 
-	usb_pipe_end_long_transfer(pipe);
-
 	const bool failed = failed_attempts > 0;
 
Index: uspace/lib/usbdev/src/pipes.c
===================================================================
--- uspace/lib/usbdev/src/pipes.c	(revision 3969a425b60997df437e943e91d861b21c393972)
+++ uspace/lib/usbdev/src/pipes.c	(revision e0d8b7404a8f8e19b5c91d6e9d75d8cd07c00b37)
@@ -38,34 +38,4 @@
 #include <assert.h>
 
-/** Prepare pipe for a long transfer.
- *
- * Long transfer is transfer consisting of several requests to the HC.
- * Calling this function is optional and it has positive effect of
- * improved performance because IPC session is initiated only once.
- *
- * @param pipe Pipe over which the transfer will happen.
- * @return Error code.
- */
-int usb_pipe_start_long_transfer(usb_pipe_t *pipe)
-{
-	assert(pipe);
-	assert(pipe->wire);
-	assert(pipe->wire->hc_connection);
-	return usb_hc_connection_open(pipe->wire->hc_connection);
-}
-
-/** Terminate a long transfer on a pipe.
- * @param pipe Pipe where to end the long transfer.
- * @return Error code.
- * @see usb_pipe_start_long_transfer
- */
-int usb_pipe_end_long_transfer(usb_pipe_t *pipe)
-{
-	assert(pipe);
-	assert(pipe->wire);
-	assert(pipe->wire->hc_connection);
-	return usb_hc_connection_close(pipe->wire->hc_connection);
-}
-
 /** Try to clear endpoint halt of default control pipe.
  *
@@ -271,5 +241,4 @@
  *
  * @param pipe Endpoint pipe to be initialized.
- * @param connection Connection to the USB device backing this pipe (the wire).
  * @param endpoint_no Endpoint number (in USB 1.1 in range 0 to 15).
  * @param transfer_type Transfer type (e.g. interrupt or bulk).
@@ -278,13 +247,10 @@
  * @return Error code.
  */
-int usb_pipe_initialize(usb_pipe_t *pipe,
-    usb_device_connection_t *connection, usb_endpoint_t endpoint_no,
+int usb_pipe_initialize(usb_pipe_t *pipe, usb_endpoint_t endpoint_no,
     usb_transfer_type_t transfer_type, size_t max_packet_size,
     usb_direction_t direction, usb_dev_session_t *bus_session)
 {
 	assert(pipe);
-	assert(connection);
-
-	pipe->wire = connection;
+
 	pipe->endpoint_no = endpoint_no;
 	pipe->transfer_type = transfer_type;
@@ -300,14 +266,12 @@
  *
  * @param pipe Endpoint pipe to be initialized.
- * @param connection Connection to the USB device backing this pipe (the wire).
  * @return Error code.
  */
 int usb_pipe_initialize_default_control(usb_pipe_t *pipe,
-    usb_device_connection_t *connection, usb_dev_session_t *bus_session)
-{
-	assert(pipe);
-	assert(connection);
-
-	int rc = usb_pipe_initialize(pipe, connection, 0, USB_TRANSFER_CONTROL,
+    usb_dev_session_t *bus_session)
+{
+	assert(pipe);
+
+	const int rc = usb_pipe_initialize(pipe, 0, USB_TRANSFER_CONTROL,
 	    CTRL_PIPE_MIN_PACKET_SIZE, USB_DIRECTION_BOTH, bus_session);
 
Index: uspace/lib/usbdev/src/pipesinit.c
===================================================================
--- uspace/lib/usbdev/src/pipesinit.c	(revision 3969a425b60997df437e943e91d861b21c393972)
+++ uspace/lib/usbdev/src/pipesinit.c	(revision e0d8b7404a8f8e19b5c91d6e9d75d8cd07c00b37)
@@ -148,5 +148,4 @@
  * @param interface Interface descriptor under which belongs the @p endpoint.
  * @param endpoint Endpoint descriptor.
- * @param wire Connection backing the endpoint pipes.
  * @return Error code.
  */
@@ -155,5 +154,5 @@
     usb_standard_interface_descriptor_t *interface,
     usb_standard_endpoint_descriptor_t *endpoint_desc,
-    usb_device_connection_t *wire, usb_dev_session_t *bus_session)
+    usb_dev_session_t *bus_session)
 {
 
@@ -193,5 +192,5 @@
 	}
 
-	int rc = usb_pipe_initialize(&ep_mapping->pipe, wire,
+	int rc = usb_pipe_initialize(&ep_mapping->pipe,
 	    ep_no, description.transfer_type,
 	    uint16_usb2host(endpoint_desc->max_packet_size),
@@ -236,5 +235,4 @@
 			    (usb_standard_endpoint_descriptor_t *)
 			        descriptor,
-			    (usb_device_connection_t *) parser_data->arg,
 			    bus_session);
 		}
@@ -281,7 +279,6 @@
     usb_endpoint_mapping_t *mapping, size_t mapping_count,
     const uint8_t *config_descriptor, size_t config_descriptor_size,
-    usb_device_connection_t *connection, usb_dev_session_t *bus_session)
-{
-	assert(connection);
+    usb_dev_session_t *bus_session)
+{
 
 	if (config_descriptor == NULL) {
@@ -307,5 +304,4 @@
 		.data = config_descriptor,
 		.size = config_descriptor_size,
-		.arg = connection
 	};
 
@@ -348,7 +344,4 @@
 		return EINVAL;
 	}
-
-
-	usb_pipe_start_long_transfer(pipe);
 
 	uint8_t dev_descr_start[CTRL_PIPE_MIN_PACKET_SIZE];
@@ -368,5 +361,4 @@
 		}
 	}
-	usb_pipe_end_long_transfer(pipe);
 	if (rc != EOK) {
 		return rc;
