Index: uspace/drv/uhci-hcd/batch.c
===================================================================
--- uspace/drv/uhci-hcd/batch.c	(revision 8f30c2eda223acd6acbb1c5b761d9881db7f34e8)
+++ uspace/drv/uhci-hcd/batch.c	(revision feb10c881f64ba4f899fa9366c46240a927219e6)
@@ -80,11 +80,8 @@
  * transaction and callback.
  */
-usb_transfer_batch_t * batch_get(ddf_fun_t *fun, usb_target_t target,
-    usb_transfer_type_t transfer_type, size_t max_packet_size,
-    usb_speed_t speed, char *buffer, size_t buffer_size,
-    char* setup_buffer, size_t setup_size,
+usb_transfer_batch_t * batch_get(ddf_fun_t *fun, endpoint_t *ep,
+    char *buffer, size_t buffer_size, char* setup_buffer, size_t setup_size,
     usbhc_iface_transfer_in_callback_t func_in,
-    usbhc_iface_transfer_out_callback_t func_out, void *arg, endpoint_t *ep
-    )
+    usbhc_iface_transfer_out_callback_t func_out, void *arg)
 {
 	assert(ep);
@@ -104,6 +101,8 @@
 	CHECK_NULL_DISPOSE_RETURN(instance,
 	    "Failed to allocate batch instance.\n");
+	usb_target_t target =
+	    { .address = ep->address, .endpoint = ep->endpoint };
 	usb_transfer_batch_init(instance, target,
-	    transfer_type, speed, max_packet_size,
+	    ep->transfer_type, ep->speed, ep->max_packet_size,
 	    buffer, NULL, buffer_size, NULL, setup_size, func_in,
 	    func_out, arg, fun, ep, NULL);
@@ -116,6 +115,7 @@
 	instance->private_data = data;
 
-	data->transfers = (buffer_size + max_packet_size - 1) / max_packet_size;
-	if (transfer_type == USB_TRANSFER_CONTROL) {
+	data->transfers =
+	    (buffer_size + ep->max_packet_size - 1) / ep->max_packet_size;
+	if (ep->transfer_type == USB_TRANSFER_CONTROL) {
 		data->transfers += 2;
 	}
@@ -179,7 +179,8 @@
 			    instance, i, data->tds[i].status);
 			td_print_status(&data->tds[i]);
-			if (instance->ep != NULL)
-				endpoint_toggle_set(instance->ep,
-				    td_toggle(&data->tds[i]));
+			assert(instance->ep != NULL);
+
+			endpoint_toggle_set(instance->ep,
+			    td_toggle(&data->tds[i]));
 			if (i > 0)
 				goto substract_ret;
Index: uspace/drv/uhci-hcd/batch.h
===================================================================
--- uspace/drv/uhci-hcd/batch.h	(revision 8f30c2eda223acd6acbb1c5b761d9881db7f34e8)
+++ uspace/drv/uhci-hcd/batch.h	(revision feb10c881f64ba4f899fa9366c46240a927219e6)
@@ -44,18 +44,9 @@
 
 usb_transfer_batch_t * batch_get(
-    ddf_fun_t *fun,
-		usb_target_t target,
-    usb_transfer_type_t transfer_type,
-		size_t max_packet_size,
-    usb_speed_t speed,
-		char *buffer,
-		size_t size,
-		char *setup_buffer,
-		size_t setup_size,
+    ddf_fun_t *fun, endpoint_t *ep, char *buffer, size_t size,
+    char *setup_buffer, size_t setup_size,
     usbhc_iface_transfer_in_callback_t func_in,
     usbhc_iface_transfer_out_callback_t func_out,
-		void *arg,
-		endpoint_t *ep
-		);
+    void *arg);
 
 void batch_dispose(usb_transfer_batch_t *instance);
Index: uspace/drv/uhci-hcd/iface.c
===================================================================
--- uspace/drv/uhci-hcd/iface.c	(revision 8f30c2eda223acd6acbb1c5b761d9881db7f34e8)
+++ uspace/drv/uhci-hcd/iface.c	(revision feb10c881f64ba4f899fa9366c46240a927219e6)
@@ -244,6 +244,5 @@
 
 	usb_transfer_batch_t *batch =
-	    batch_get(fun, target, ep->transfer_type, ep->max_packet_size,
-	        ep->speed, data, size, NULL, 0, NULL, callback, arg, ep);
+	    batch_get(fun, ep, data, size, NULL, 0, NULL, callback, arg);
 	if (!batch)
 		return ENOMEM;
@@ -301,6 +300,5 @@
 
 	usb_transfer_batch_t *batch =
-	    batch_get(fun, target, ep->transfer_type, ep->max_packet_size,
-	        ep->speed, data, size, NULL, 0, callback, NULL, arg, ep);
+	    batch_get(fun, ep, data, size, NULL, 0, callback, NULL, arg);
 	if (!batch)
 		return ENOMEM;
@@ -348,6 +346,5 @@
 
 	usb_transfer_batch_t *batch =
-	    batch_get(fun, target, ep->transfer_type, ep->max_packet_size,
-	        ep->speed, data, size, NULL, 0, NULL, callback, arg, ep);
+	    batch_get(fun, ep, data, size, NULL, 0, NULL, callback, arg);
 	if (!batch)
 		return ENOMEM;
@@ -394,6 +391,5 @@
 
 	usb_transfer_batch_t *batch =
-	    batch_get(fun, target, ep->transfer_type, ep->max_packet_size,
-	        ep->speed, data, size, NULL, 0, callback, NULL, arg, ep);
+	    batch_get(fun, ep, data, size, NULL, 0, callback, NULL, arg);
 	if (!batch)
 		return ENOMEM;
@@ -447,7 +443,6 @@
 
 	usb_transfer_batch_t *batch =
-	    batch_get(fun, target, ep->transfer_type, ep->max_packet_size,
-	        ep->speed, data, size, setup_data, setup_size, NULL, callback,
-		arg, ep);
+	    batch_get(fun, ep, data, size, setup_data, setup_size,
+	        NULL, callback, arg);
 	if (!batch)
 		return ENOMEM;
@@ -499,7 +494,6 @@
 
 	usb_transfer_batch_t *batch =
-	    batch_get(fun, target, ep->transfer_type, ep->max_packet_size,
-	        ep->speed, data, size, setup_data, setup_size,
-		callback, NULL, arg, ep);
+	    batch_get(fun, ep, data, size, setup_data, setup_size,
+		callback, NULL, arg);
 	if (!batch)
 		return ENOMEM;
