Index: uspace/drv/uhci/transfer_list.c
===================================================================
--- uspace/drv/uhci/transfer_list.c	(revision b00163f7ee856aeb2ca31b46c5da5d875ab44efe)
+++ uspace/drv/uhci/transfer_list.c	(revision d03ade7c9f858b52fbdb309ff653cb20256dae7b)
@@ -23,4 +23,28 @@
   transfer_list_t *instance, transfer_descriptor_t *transfer)
 {
+	assert(instance);
+	assert(transfer);
+
+	uint32_t pa = (uintptr_t)addr_to_phys(transfer);
+	assert((pa & LINK_POINTER_ADDRESS_MASK) == pa);
+
+	/* empty list */
+	if (instance->first == NULL) {
+		assert(instance->last == NULL);
+		instance->first = instance->last = transfer;
+	} else {
+		assert(instance->last);
+		instance->last->next_va = transfer;
+
+		assert(instance->last->next & LINK_POINTER_TERMINATE_FLAG);
+		instance->last->next = (pa & LINK_POINTER_ADDRESS_MASK);
+		instance->last = transfer;
+	}
+
+	assert(instance->queue_head);
+	if (instance->queue_head->element & LINK_POINTER_TERMINATE_FLAG) {
+		instance->queue_head->element = (pa & LINK_POINTER_ADDRESS_MASK);
+	}
+	uhci_print_info("Successfully added transfer to the hc queue.\n");
 	return EOK;
 }
Index: uspace/drv/uhci/uhci.c
===================================================================
--- uspace/drv/uhci/uhci.c	(revision b00163f7ee856aeb2ca31b46c5da5d875ab44efe)
+++ uspace/drv/uhci/uhci.c	(revision d03ade7c9f858b52fbdb309ff653cb20256dae7b)
@@ -13,11 +13,11 @@
 static inline int uhci_add_transfer(
   device_t *dev,
-	usb_target_t target,
-  usb_transfer_type_t transfer_type,
-	usb_packet_id pid,
+  usb_target_t target,
+  usb_transfer_type_t transfer_type,
+  usb_packet_id pid,
   void *buffer, size_t size,
   usbhc_iface_transfer_out_callback_t callback_out,
   usbhc_iface_transfer_in_callback_t callback_in,
-	void *arg );
+  void *arg );
 
 int uhci_init(device_t *device, void *regs)
@@ -164,11 +164,11 @@
 static inline int uhci_add_transfer(
   device_t *dev,
-	usb_target_t target,
-  usb_transfer_type_t transfer_type,
-	usb_packet_id pid,
+  usb_target_t target,
+  usb_transfer_type_t transfer_type,
+  usb_packet_id pid,
   void *buffer, size_t size,
   usbhc_iface_transfer_out_callback_t callback_out,
   usbhc_iface_transfer_in_callback_t callback_in,
-	void *arg )
+  void *arg )
 {
 	// TODO: Add support for isochronous transfers
@@ -203,6 +203,6 @@
 
 	td = trans_malloc(sizeof(transfer_descriptor_t));
-	ret = td ? ENOMEM : EOK;
-	CHECK_RET_TRANS_FREE_JOB_TD("Failed to allocate tranfer descriptor.\n");
+	ret = td ? EOK : ENOMEM;
+	CHECK_RET_TRANS_FREE_JOB_TD("Failed to allocate transfer descriptor.\n");
 
 	ret = transfer_descriptor_init(td, 3, size, false, target, pid);
