Index: uspace/drv/ohci/batch.c
===================================================================
--- uspace/drv/ohci/batch.c	(revision ff0e35463cd46d54710645cae4f1d3c76181a777)
+++ uspace/drv/ohci/batch.c	(revision 87906500fff813e7fa98e3c24caafe7911fef646)
@@ -227,6 +227,7 @@
 	ed_init(data->ed, instance->ep);
 	ed_add_tds(data->ed, &data->tds[0], &data->tds[data->td_count - 1]);
-	usb_log_debug("Created ED: %x:%x:%x:%x.\n", data->ed->status,
-	    data->ed->td_tail, data->ed->td_head, data->ed->next);
+	usb_log_debug("Created ED(%p): %x:%x:%x:%x.\n", data->ed,
+	    data->ed->status, data->ed->td_tail, data->ed->td_head,
+	    data->ed->next);
 	int toggle = 0;
 	/* setup stage */
Index: uspace/drv/ohci/hc.c
===================================================================
--- uspace/drv/ohci/hc.c	(revision ff0e35463cd46d54710645cae4f1d3c76181a777)
+++ uspace/drv/ohci/hc.c	(revision 87906500fff813e7fa98e3c24caafe7911fef646)
@@ -108,11 +108,11 @@
 	    ret, str_error(ret));
 
-
 	hc_gain_control(instance);
+	ret = hc_init_memory(instance);
+	CHECK_RET_RETURN(ret, "Failed to create OHCI memory structures:%s.\n",
+	    ret, str_error(ret));
+	hc_init_hw(instance);
 
 	rh_init(&instance->rh, dev, instance->registers);
-
-	hc_init_memory(instance);
-	hc_init_hw(instance);
 
 	if (!interrupts) {
@@ -122,5 +122,4 @@
 	}
 
-	/* TODO: implement */
 	return EOK;
 }
@@ -141,8 +140,14 @@
 	switch (batch->transfer_type) {
 	case USB_TRANSFER_CONTROL:
+		instance->registers->control &= ~C_CLE;
 		instance->registers->command_status |= CS_CLF;
+		usb_log_debug2("Set control transfer filled: %x.\n",
+			instance->registers->command_status);
+		instance->registers->control |= C_CLE;
 		break;
 	case USB_TRANSFER_BULK:
 		instance->registers->command_status |= CS_BLF;
+		usb_log_debug2("Set bulk transfer filled: %x.\n",
+			instance->registers->command_status);
 		break;
 	default:
@@ -161,4 +166,5 @@
 
 	usb_log_info("OHCI interrupt: %x.\n", status);
+
 
 	LIST_INITIALIZE(done);
@@ -328,8 +334,8 @@
 {
 	assert(instance);
-	/* init queues */
+	/* Init queues */
 	hc_init_transfer_lists(instance);
 
-	/* init HCCA */
+	/*Init HCCA */
 	instance->hcca = malloc32(sizeof(hcca_t));
 	if (instance->hcca == NULL)
@@ -337,9 +343,18 @@
 	bzero(instance->hcca, sizeof(hcca_t));
 	instance->registers->hcca = addr_to_phys(instance->hcca);
-
-	/* use queues */
+	usb_log_debug2("OHCI HCCA initialized at %p(%p).\n",
+	    instance->hcca, instance->registers->hcca);
+
+	/* Use queues */
 	instance->registers->bulk_head = instance->transfers_bulk.list_head_pa;
+	usb_log_debug2("Bulk HEAD set to: %p(%p).\n",
+	    instance->transfers_bulk.list_head,
+	    instance->transfers_bulk.list_head_pa);
+
 	instance->registers->control_head =
 	    instance->transfers_control.list_head_pa;
+	usb_log_debug2("Control HEAD set to: %p(%p).\n",
+	    instance->transfers_control.list_head,
+	    instance->transfers_control.list_head_pa);
 
 	unsigned i = 0;
@@ -348,4 +363,7 @@
 		    instance->transfers_interrupt.list_head_pa;
 	}
+	usb_log_debug2("Interrupt HEADs set to: %p(%p).\n",
+	    instance->transfers_interrupt.list_head,
+	    instance->transfers_interrupt.list_head_pa);
 
 	return EOK;
Index: uspace/drv/ohci/hw_struct/endpoint_descriptor.c
===================================================================
--- uspace/drv/ohci/hw_struct/endpoint_descriptor.c	(revision ff0e35463cd46d54710645cae4f1d3c76181a777)
+++ uspace/drv/ohci/hw_struct/endpoint_descriptor.c	(revision 87906500fff813e7fa98e3c24caafe7911fef646)
@@ -42,5 +42,5 @@
 	bzero(instance, sizeof(ed_t));
 	if (ep == NULL) {
-		instance->status |= ED_STATUS_K_FLAG;
+		instance->status = ED_STATUS_K_FLAG;
 		return;
 	}
Index: uspace/drv/ohci/transfer_list.c
===================================================================
--- uspace/drv/ohci/transfer_list.c	(revision ff0e35463cd46d54710645cae4f1d3c76181a777)
+++ uspace/drv/ohci/transfer_list.c	(revision 87906500fff813e7fa98e3c24caafe7911fef646)
@@ -122,6 +122,11 @@
 	usb_transfer_batch_t *first = list_get_instance(
 	    instance->batch_list.next, usb_transfer_batch_t, link);
-	usb_log_debug("Batch(%p) added to queue %s, first is %p.\n",
-		batch, instance->name, first);
+	usb_log_debug("Batch(%p) added to list %s, first is %p(%p).\n",
+		batch, instance->name, first, batch_ed(first));
+	if (last_ed == instance->list_head) {
+		usb_log_debug2("%s head ED: %x:%x:%x:%x.\n", instance->name,
+			last_ed->status, last_ed->td_tail, last_ed->td_head,
+			last_ed->next);
+	}
 	fibril_mutex_unlock(&instance->guard);
 }
