Index: uspace/lib/drv/generic/remote_usbhc.c
===================================================================
--- uspace/lib/drv/generic/remote_usbhc.c	(revision 7eb32a83ecef6c5d3f94768a887700cb83255e65)
+++ uspace/lib/drv/generic/remote_usbhc.c	(revision 8e3d17fdbdbefb176d1318cc8a3b73d89545961d)
@@ -42,10 +42,4 @@
 #define USB_MAX_PAYLOAD_SIZE 1020
 
-static void remote_usbhc_interrupt_out(ddf_fun_t *, void *, ipc_callid_t, ipc_call_t *);
-static void remote_usbhc_interrupt_in(ddf_fun_t *, void *, ipc_callid_t, ipc_call_t *);
-static void remote_usbhc_bulk_out(ddf_fun_t *, void *, ipc_callid_t, ipc_call_t *);
-static void remote_usbhc_bulk_in(ddf_fun_t *, void *, ipc_callid_t, ipc_call_t *);
-static void remote_usbhc_control_write(ddf_fun_t *, void *, ipc_callid_t, ipc_call_t *);
-static void remote_usbhc_control_read(ddf_fun_t *, void *, ipc_callid_t, ipc_call_t *);
 static void remote_usbhc_request_address(ddf_fun_t *, void *, ipc_callid_t, ipc_call_t *);
 static void remote_usbhc_bind_address(ddf_fun_t *, void *, ipc_callid_t, ipc_call_t *);
@@ -54,4 +48,6 @@
 static void remote_usbhc_register_endpoint(ddf_fun_t *, void *, ipc_callid_t, ipc_call_t *);
 static void remote_usbhc_unregister_endpoint(ddf_fun_t *, void *, ipc_callid_t, ipc_call_t *);
+static void remote_usbhc_control_write(ddf_fun_t *, void *, ipc_callid_t, ipc_call_t *);
+static void remote_usbhc_control_read(ddf_fun_t *, void *, ipc_callid_t, ipc_call_t *);
 static void remote_usbhc_data_read(ddf_fun_t *, void *, ipc_callid_t, ipc_call_t *);
 static void remote_usbhc_data_write(ddf_fun_t *, void *, ipc_callid_t, ipc_call_t *);
@@ -65,15 +61,9 @@
 	[IPC_M_USBHC_RELEASE_ADDRESS] = remote_usbhc_release_address,
 
-	[IPC_M_USBHC_INTERRUPT_OUT] = remote_usbhc_interrupt_out,
-	[IPC_M_USBHC_INTERRUPT_IN] = remote_usbhc_interrupt_in,
-
-	[IPC_M_USBHC_BULK_OUT] = remote_usbhc_bulk_out,
-	[IPC_M_USBHC_BULK_IN] = remote_usbhc_bulk_in,
+	[IPC_M_USBHC_REGISTER_ENDPOINT] = remote_usbhc_register_endpoint,
+	[IPC_M_USBHC_UNREGISTER_ENDPOINT] = remote_usbhc_unregister_endpoint,
 
 	[IPC_M_USBHC_CONTROL_WRITE] = remote_usbhc_control_write,
 	[IPC_M_USBHC_CONTROL_READ] = remote_usbhc_control_read,
-
-	[IPC_M_USBHC_REGISTER_ENDPOINT] = remote_usbhc_register_endpoint,
-	[IPC_M_USBHC_UNREGISTER_ENDPOINT] = remote_usbhc_unregister_endpoint,
 
 	[IPC_M_USBHC_DATA_READ] = remote_usbhc_data_read,
@@ -93,5 +83,4 @@
 	ipc_callid_t data_caller;
 	void *buffer;
-	void *setup_packet;
 	size_t size;
 } async_transaction_t;
@@ -101,8 +90,4 @@
 	if (trans == NULL) {
 		return;
-	}
-
-	if (trans->setup_packet != NULL) {
-		free(trans->setup_packet);
 	}
 	if (trans->buffer != NULL) {
@@ -123,5 +108,4 @@
 	trans->data_caller = 0;
 	trans->buffer = NULL;
-	trans->setup_packet = NULL;
 	trans->size = 0;
 
@@ -241,148 +225,4 @@
 
 	async_transaction_destroy(trans);
-}
-
-/** Process an outgoing transfer (both OUT and SETUP).
- *
- * @param device Target device.
- * @param callid Initiating caller.
- * @param call Initiating call.
- * @param transfer_func Transfer function (might be NULL).
- */
-static void remote_usbhc_out_transfer(ddf_fun_t *fun,
-    ipc_callid_t callid, ipc_call_t *call,
-    usbhc_iface_transfer_out_t transfer_func)
-{
-	if (!transfer_func) {
-		async_answer_0(callid, ENOTSUP);
-		return;
-	}
-
-	usb_target_t target = {
-		.address = DEV_IPC_GET_ARG1(*call),
-		.endpoint = DEV_IPC_GET_ARG2(*call)
-	};
-
-	size_t len = 0;
-	void *buffer = NULL;
-
-	int rc = async_data_write_accept(&buffer, false,
-	    1, USB_MAX_PAYLOAD_SIZE,
-	    0, &len);
-
-	if (rc != EOK) {
-		async_answer_0(callid, rc);
-		return;
-	}
-
-	async_transaction_t *trans = async_transaction_create(callid);
-	if (trans == NULL) {
-		if (buffer != NULL) {
-			free(buffer);
-		}
-		async_answer_0(callid, ENOMEM);
-		return;
-	}
-
-	trans->buffer = buffer;
-	trans->size = len;
-
-	rc = transfer_func(fun, target,
-	    buffer, len,
-	    callback_out, trans);
-
-	if (rc != EOK) {
-		async_answer_0(callid, rc);
-		async_transaction_destroy(trans);
-	}
-}
-
-/** Process an incoming transfer.
- *
- * @param device Target device.
- * @param callid Initiating caller.
- * @param call Initiating call.
- * @param transfer_func Transfer function (might be NULL).
- */
-static void remote_usbhc_in_transfer(ddf_fun_t *fun,
-    ipc_callid_t callid, ipc_call_t *call,
-    usbhc_iface_transfer_in_t transfer_func)
-{
-	if (!transfer_func) {
-		async_answer_0(callid, ENOTSUP);
-		return;
-	}
-
-	usb_target_t target = {
-		.address = DEV_IPC_GET_ARG1(*call),
-		.endpoint = DEV_IPC_GET_ARG2(*call)
-	};
-
-	size_t len;
-	ipc_callid_t data_callid;
-	if (!async_data_read_receive(&data_callid, &len)) {
-		async_answer_0(callid, EPARTY);
-		return;
-	}
-
-	async_transaction_t *trans = async_transaction_create(callid);
-	if (trans == NULL) {
-		async_answer_0(data_callid, ENOMEM);
-		async_answer_0(callid, ENOMEM);
-		return;
-	}
-	trans->data_caller = data_callid;
-	trans->buffer = malloc(len);
-	trans->size = len;
-
-	int rc = transfer_func(fun, target,
-	    trans->buffer, len,
-	    callback_in, trans);
-
-	if (rc != EOK) {
-		async_answer_0(data_callid, rc);
-		async_answer_0(callid, rc);
-		async_transaction_destroy(trans);
-	}
-}
-
-void remote_usbhc_interrupt_out(ddf_fun_t *fun, void *iface,
-    ipc_callid_t callid, ipc_call_t *call)
-{
-	usbhc_iface_t *usb_iface = (usbhc_iface_t *) iface;
-	assert(usb_iface != NULL);
-
-	return remote_usbhc_out_transfer(fun, callid, call,
-	    usb_iface->interrupt_out);
-}
-
-void remote_usbhc_interrupt_in(ddf_fun_t *fun, void *iface,
-    ipc_callid_t callid, ipc_call_t *call)
-{
-	usbhc_iface_t *usb_iface = (usbhc_iface_t *) iface;
-	assert(usb_iface != NULL);
-
-	return remote_usbhc_in_transfer(fun, callid, call,
-	    usb_iface->interrupt_in);
-}
-
-void remote_usbhc_bulk_out(ddf_fun_t *fun, void *iface,
-    ipc_callid_t callid, ipc_call_t *call)
-{
-	usbhc_iface_t *usb_iface = (usbhc_iface_t *) iface;
-	assert(usb_iface != NULL);
-
-	return remote_usbhc_out_transfer(fun, callid, call,
-	    usb_iface->bulk_out);
-}
-
-void remote_usbhc_bulk_in(ddf_fun_t *fun, void *iface,
-    ipc_callid_t callid, ipc_call_t *call)
-{
-	usbhc_iface_t *usb_iface = (usbhc_iface_t *) iface;
-	assert(usb_iface != NULL);
-
-	return remote_usbhc_in_transfer(fun, callid, call,
-	    usb_iface->bulk_in);
 }
 
Index: uspace/lib/drv/include/usbhc_iface.h
===================================================================
--- uspace/lib/drv/include/usbhc_iface.h	(revision 7eb32a83ecef6c5d3f94768a887700cb83255e65)
+++ uspace/lib/drv/include/usbhc_iface.h	(revision 8e3d17fdbdbefb176d1318cc8a3b73d89545961d)
@@ -123,41 +123,4 @@
 	IPC_M_USBHC_RELEASE_ADDRESS,
 
-
-	/** Send interrupt data to device.
-	 * See explanation at usb_iface_funcs_t (OUT transaction).
-	 */
-	IPC_M_USBHC_INTERRUPT_OUT,
-
-	/** Get interrupt data from device.
-	 * See explanation at usb_iface_funcs_t (IN transaction).
-	 */
-	IPC_M_USBHC_INTERRUPT_IN,
-
-	/** Send bulk data to device.
-	 * See explanation at usb_iface_funcs_t (OUT transaction).
-	 */
-	IPC_M_USBHC_BULK_OUT,
-
-	/** Get bulk data from device.
-	 * See explanation at usb_iface_funcs_t (IN transaction).
-	 */
-	IPC_M_USBHC_BULK_IN,
-
-	/** Issue control WRITE transfer.
-	 * See explanation at usb_iface_funcs_t (OUT transaction) for
-	 * call parameters.
-	 * This call is immediately followed by two IPC data writes
-	 * from the caller (setup packet and actual data).
-	 */
-	IPC_M_USBHC_CONTROL_WRITE,
-
-	/** Issue control READ transfer.
-	 * See explanation at usb_iface_funcs_t (IN transaction) for
-	 * call parameters.
-	 * This call is immediately followed by IPC data write from the caller
-	 * (setup packet) and IPC data read (buffer that was read).
-	 */
-	IPC_M_USBHC_CONTROL_READ,
-
 	/** Register endpoint attributes at host controller.
 	 * This is used to reserve portion of USB bandwidth.
@@ -187,6 +150,28 @@
 	IPC_M_USBHC_UNREGISTER_ENDPOINT,
 
+	/** Issue control WRITE transfer.
+	 * See explanation at usb_iface_funcs_t (OUT transaction) for
+	 * call parameters.
+	 * This call is immediately followed by two IPC data writes
+	 * from the caller (setup packet and actual data).
+	 */
+	IPC_M_USBHC_CONTROL_WRITE,
+
+	/** Issue control READ transfer.
+	 * See explanation at usb_iface_funcs_t (IN transaction) for
+	 * call parameters.
+	 * This call is immediately followed by IPC data write from the caller
+	 * (setup packet) and IPC data read (buffer that was read).
+	 */
+	IPC_M_USBHC_CONTROL_READ,
+
+	/** Get data from device.
+	 * See explanation at usb_iface_funcs_t (IN transaction).
+	 */
 	IPC_M_USBHC_DATA_READ,
 
+	/** Send data to device.
+	 * See explanation at usb_iface_funcs_t (OUT transaction).
+	 */
 	IPC_M_USBHC_DATA_WRITE,
 } usbhc_iface_funcs_t;
@@ -199,18 +184,4 @@
 typedef void (*usbhc_iface_transfer_in_callback_t)(ddf_fun_t *,
     int, size_t, void *);
-
-
-/** Out transfer processing function prototype. */
-typedef int (*usbhc_iface_transfer_out_t)(ddf_fun_t *, usb_target_t,
-    void *, size_t,
-    usbhc_iface_transfer_out_callback_t, void *);
-
-/** Setup transfer processing function prototype. @deprecated */
-typedef usbhc_iface_transfer_out_t usbhc_iface_transfer_setup_t;
-
-/** In transfer processing function prototype. */
-typedef int (*usbhc_iface_transfer_in_t)(ddf_fun_t *, usb_target_t,
-    void *, size_t,
-    usbhc_iface_transfer_in_callback_t, void *);
 
 /** USB host controller communication interface. */
@@ -227,18 +198,4 @@
 	    usb_direction_t);
 
-	usbhc_iface_transfer_out_t interrupt_out;
-	usbhc_iface_transfer_in_t interrupt_in;
-
-	usbhc_iface_transfer_out_t bulk_out;
-	usbhc_iface_transfer_in_t bulk_in;
-
-	int (*control_write)(ddf_fun_t *, usb_target_t,
-	    void *, size_t, void *, size_t,
-	    usbhc_iface_transfer_out_callback_t, void *);
-
-	int (*control_read)(ddf_fun_t *, usb_target_t,
-	    void *, size_t, void *, size_t,
-	    usbhc_iface_transfer_in_callback_t, void *);
-
 	int (*read)(ddf_fun_t *, usb_target_t, uint64_t, uint8_t *, size_t,
 	    usbhc_iface_transfer_in_callback_t, void *);
Index: uspace/lib/usbhost/src/iface.c
===================================================================
--- uspace/lib/usbhost/src/iface.c	(revision 7eb32a83ecef6c5d3f94768a887700cb83255e65)
+++ uspace/lib/usbhost/src/iface.c	(revision 8e3d17fdbdbefb176d1318cc8a3b73d89545961d)
@@ -221,122 +221,4 @@
 }
 /*----------------------------------------------------------------------------*/
-/** Interrupt out transaction interface function
- *
- * @param[in] fun DDF function that was called.
- * @param[in] target USB device to write to.
- * @param[in] data Source of data.
- * @param[in] size Size of data source.
- * @param[in] callback Function to call on transaction completion
- * @param[in] arg Additional for callback function.
- * @return Error code.
- */
-static int interrupt_out(
-    ddf_fun_t *fun, usb_target_t target, void *data,
-    size_t size, usbhc_iface_transfer_out_callback_t callback, void *arg)
-{
-	return send_batch(fun, target, USB_DIRECTION_OUT, data, size,
-	    0, NULL, callback, arg, "Interrupt OUT");
-}
-/*----------------------------------------------------------------------------*/
-/** Interrupt in transaction interface function
- *
- * @param[in] fun DDF function that was called.
- * @param[in] target USB device to write to.
- * @param[out] data Data destination.
- * @param[in] size Size of data source.
- * @param[in] callback Function to call on transaction completion
- * @param[in] arg Additional for callback function.
- * @return Error code.
- */
-static int interrupt_in(
-    ddf_fun_t *fun, usb_target_t target, void *data,
-    size_t size, usbhc_iface_transfer_in_callback_t callback, void *arg)
-{
-	return send_batch(fun, target, USB_DIRECTION_IN, data, size,
-	    0, callback, NULL, arg, "Interrupt IN");
-}
-/*----------------------------------------------------------------------------*/
-/** Bulk out transaction interface function
- *
- * @param[in] fun DDF function that was called.
- * @param[in] target USB device to write to.
- * @param[in] data Source of data.
- * @param[in] size Size of data source.
- * @param[in] callback Function to call on transaction completion
- * @param[in] arg Additional for callback function.
- * @return Error code.
- */
-static int bulk_out(
-    ddf_fun_t *fun, usb_target_t target, void *data,
-    size_t size, usbhc_iface_transfer_out_callback_t callback, void *arg)
-{
-	return send_batch(fun, target, USB_DIRECTION_OUT, data, size,
-	    0, NULL, callback, arg, "Bulk OUT");
-}
-/*----------------------------------------------------------------------------*/
-/** Bulk in transaction interface function
- *
- * @param[in] fun DDF function that was called.
- * @param[in] target USB device to write to.
- * @param[out] data Data destination.
- * @param[in] size Size of data source.
- * @param[in] callback Function to call on transaction completion
- * @param[in] arg Additional for callback function.
- * @return Error code.
- */
-static int bulk_in(
-    ddf_fun_t *fun, usb_target_t target, void *data,
-    size_t size, usbhc_iface_transfer_in_callback_t callback, void *arg)
-{
-	return send_batch(fun, target, USB_DIRECTION_IN, data, size,
-	    0, callback, NULL, arg, "Bulk IN");
-}
-/*----------------------------------------------------------------------------*/
-/** Control write transaction interface function
- *
- * @param[in] fun DDF function that was called.
- * @param[in] target USB device to write to.
- * @param[in] setup_data Data to send with SETUP transfer.
- * @param[in] setup_size Size of data to send with SETUP transfer (always 8B).
- * @param[in] data Source of data.
- * @param[in] size Size of data source.
- * @param[in] callback Function to call on transaction completion.
- * @param[in] arg Additional for callback function.
- * @return Error code.
- */
-static int control_write(
-    ddf_fun_t *fun, usb_target_t target,
-    void *setup_data, size_t setup_size, void *data, size_t size,
-    usbhc_iface_transfer_out_callback_t callback, void *arg)
-{
-	uint64_t setup_buffer;
-	memcpy(&setup_buffer, setup_data, 8);
-	return send_batch(fun, target, USB_DIRECTION_BOTH, data, size,
-	    setup_buffer, NULL, callback, arg, "Control WRITE");
-}
-/*----------------------------------------------------------------------------*/
-/** Control read transaction interface function
- *
- * @param[in] fun DDF function that was called.
- * @param[in] target USB device to write to.
- * @param[in] setup_data Data to send with SETUP packet.
- * @param[in] setup_size Size of data to send with SETUP packet (should be 8B).
- * @param[out] data Source of data.
- * @param[in] size Size of data source.
- * @param[in] callback Function to call on transaction completion.
- * @param[in] arg Additional for callback function.
- * @return Error code.
- */
-static int control_read(
-    ddf_fun_t *fun, usb_target_t target,
-    void *setup_data, size_t setup_size, void *data, size_t size,
-    usbhc_iface_transfer_in_callback_t callback, void *arg)
-{
-	uint64_t setup_buffer;
-	memcpy(&setup_buffer, setup_data, 8);
-	return send_batch(fun, target, USB_DIRECTION_BOTH, data, size,
-	    setup_buffer, callback, NULL, arg, "Control READ");
-}
-/*----------------------------------------------------------------------------*/
 static int usb_read(ddf_fun_t *fun, usb_target_t target, uint64_t setup_data,
     uint8_t *data, size_t size, usbhc_iface_transfer_in_callback_t callback,
@@ -364,13 +246,4 @@
 	.unregister_endpoint = unregister_endpoint,
 
-	.interrupt_out = interrupt_out,
-	.interrupt_in = interrupt_in,
-
-	.bulk_out = bulk_out,
-	.bulk_in = bulk_in,
-
-	.control_write = control_write,
-	.control_read = control_read,
-
 	.read = usb_read,
 	.write = usb_write,
