Index: uspace/drv/uhci-hcd/batch.c
===================================================================
--- uspace/drv/uhci-hcd/batch.c	(revision 81dce9f771a48fddabf8296e844817d7c79b4879)
+++ uspace/drv/uhci-hcd/batch.c	(revision bab7163525ed97f10f31ea301461846fc39725ec)
@@ -183,5 +183,6 @@
 
 			device_keeper_set_toggle(data->manager,
-			    instance->target, td_toggle(&data->tds[i]));
+			    instance->target, instance->direction,
+			    td_toggle(&data->tds[i]));
 			if (i > 0)
 				goto substract_ret;
@@ -238,4 +239,5 @@
 {
 	assert(instance);
+	instance->direction = USB_DIRECTION_IN;
 	batch_data(instance, USB_PID_IN);
 	instance->next_step = batch_call_in_and_dispose;
@@ -252,4 +254,5 @@
 {
 	assert(instance);
+	instance->direction = USB_DIRECTION_OUT;
 	/* We are data out, we are supposed to provide data */
 	memcpy(instance->transport_buffer, instance->buffer,
@@ -270,4 +273,5 @@
 	assert(instance);
 	batch_data(instance, USB_PID_IN);
+	instance->direction = USB_DIRECTION_IN;
 	instance->next_step = batch_call_in_and_dispose;
 	usb_log_debug("Batch(%p) BULK IN initialized.\n", instance);
@@ -283,4 +287,5 @@
 {
 	assert(instance);
+	instance->direction = USB_DIRECTION_OUT;
 	/* We are data out, we are supposed to provide data */
 	memcpy(instance->transport_buffer, instance->buffer,
@@ -306,5 +311,6 @@
 
 	const bool low_speed = instance->speed == USB_SPEED_LOW;
-	int toggle = device_keeper_get_toggle(data->manager, instance->target);
+	int toggle = device_keeper_get_toggle(
+	    data->manager, instance->target, instance->direction);
 	assert(toggle == 0 || toggle == 1);
 
@@ -337,5 +343,6 @@
 	}
 	td_set_ioc(&data->tds[packet - 1]);
-	device_keeper_set_toggle(data->manager, instance->target, toggle);
+	device_keeper_set_toggle(data->manager, instance->target,
+	    instance->direction, toggle);
 }
 /*----------------------------------------------------------------------------*/
