Index: uspace/lib/usbhost/src/iface.c
===================================================================
--- uspace/lib/usbhost/src/iface.c	(revision a00ac0715a9def8198a1019fdf6580eb3ac9d02a)
+++ uspace/lib/usbhost/src/iface.c	(revision 3822f7c929b213d8332f263cbac140648c65cd4d)
@@ -41,5 +41,5 @@
 static inline int send_batch(
     ddf_fun_t *fun, usb_target_t target, usb_direction_t direction,
-    void *data, size_t size, void * setup_data, size_t setup_size,
+    void *data, size_t size, void * setup_data,
     usbhc_iface_transfer_in_callback_t in,
     usbhc_iface_transfer_out_callback_t out, void *arg, const char* name)
@@ -236,5 +236,5 @@
 {
 	return send_batch(fun, target, USB_DIRECTION_OUT, data, size,
-	    NULL, 0, NULL, callback, arg, "Interrupt OUT");
+	    NULL, NULL, callback, arg, "Interrupt OUT");
 }
 /*----------------------------------------------------------------------------*/
@@ -254,5 +254,5 @@
 {
 	return send_batch(fun, target, USB_DIRECTION_IN, data, size,
-	    NULL, 0, callback, NULL, arg, "Interrupt IN");
+	    NULL, callback, NULL, arg, "Interrupt IN");
 }
 /*----------------------------------------------------------------------------*/
@@ -272,5 +272,5 @@
 {
 	return send_batch(fun, target, USB_DIRECTION_OUT, data, size,
-	    NULL, 0, NULL, callback, arg, "Bulk OUT");
+	    NULL, NULL, callback, arg, "Bulk OUT");
 }
 /*----------------------------------------------------------------------------*/
@@ -290,5 +290,5 @@
 {
 	return send_batch(fun, target, USB_DIRECTION_IN, data, size,
-	    NULL, 0, callback, NULL, arg, "Bulk IN");
+	    NULL, callback, NULL, arg, "Bulk IN");
 }
 /*----------------------------------------------------------------------------*/
@@ -311,5 +311,5 @@
 {
 	return send_batch(fun, target, USB_DIRECTION_BOTH, data, size,
-	    setup_data, setup_size, NULL, callback, arg, "Control WRITE");
+	    setup_data, NULL, callback, arg, "Control WRITE");
 }
 /*----------------------------------------------------------------------------*/
@@ -332,5 +332,21 @@
 {
 	return send_batch(fun, target, USB_DIRECTION_BOTH, data, size,
-	    setup_data, setup_size, callback, NULL, arg, "Control READ");
+	    setup_data, 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,
+    void *arg)
+{
+	return send_batch(fun, target, USB_DIRECTION_IN, data, size,
+	    &setup_data, callback, NULL, arg, "READ");
+}
+/*----------------------------------------------------------------------------*/
+static int usb_write(ddf_fun_t *fun, usb_target_t target, uint64_t setup_data,
+    const uint8_t *data, size_t size,
+    usbhc_iface_transfer_out_callback_t callback, void *arg)
+{
+	return send_batch(fun, target, USB_DIRECTION_OUT, (uint8_t*)data, size,
+	    &setup_data, NULL, callback, arg, "WRITE");
 }
 /*----------------------------------------------------------------------------*/
@@ -352,4 +368,7 @@
 	.control_write = control_write,
 	.control_read = control_read,
+
+	.read = usb_read,
+	.write = usb_write,
 };
 /**
