Index: uspace/drv/ohci/hw_struct/endpoint_descriptor.c
===================================================================
--- uspace/drv/ohci/hw_struct/endpoint_descriptor.c	(revision eaf1e3d30428e166ffcfa2cd5f0abf79d01c9120)
+++ uspace/drv/ohci/hw_struct/endpoint_descriptor.c	(revision 7628050704273f2f93129546d6caf64dc4034f4f)
@@ -53,8 +53,12 @@
 	        << ED_STATUS_MPS_SHIFT);
 
+
 	if (ep->speed == USB_SPEED_LOW)
 		instance->status |= ED_STATUS_S_FLAG;
 	if (ep->transfer_type == USB_TRANSFER_ISOCHRONOUS)
 		instance->status |= ED_STATUS_F_FLAG;
+
+	if (ep->toggle)
+		instance->td_head |= ED_TDHEAD_TOGGLE_CARRY;
 }
 /**
Index: uspace/drv/ohci/hw_struct/endpoint_descriptor.h
===================================================================
--- uspace/drv/ohci/hw_struct/endpoint_descriptor.h	(revision eaf1e3d30428e166ffcfa2cd5f0abf79d01c9120)
+++ uspace/drv/ohci/hw_struct/endpoint_descriptor.h	(revision 7628050704273f2f93129546d6caf64dc4034f4f)
@@ -53,6 +53,6 @@
 #define ED_STATUS_D_MASK (0x3)     /* direction */
 #define ED_STATUS_D_SHIFT (11)
-#define ED_STATUS_D_IN (0x1)
-#define ED_STATUS_D_OUT (0x2)
+#define ED_STATUS_D_OUT (0x1)
+#define ED_STATUS_D_IN (0x2)
 #define ED_STATUS_D_TRANSFER (0x3)
 
@@ -84,5 +84,7 @@
 {
 	assert(instance);
-	instance->td_head = addr_to_phys(head) & ED_TDHEAD_PTR_MASK;
+	instance->td_head =
+	    ((addr_to_phys(head) & ED_TDHEAD_PTR_MASK)
+	    | (instance->td_head & ~ED_TDHEAD_PTR_MASK));
 	instance->td_tail = addr_to_phys(tail) & ED_TDTAIL_PTR_MASK;
 }
@@ -96,5 +98,4 @@
 	instance->next = pa;
 }
-
 #endif
 /**
