Index: uspace/drv/uhci-hcd/Makefile
===================================================================
--- uspace/drv/uhci-hcd/Makefile	(revision 7e62b62c6377dac5febcabe418f93c47871b3a86)
+++ uspace/drv/uhci-hcd/Makefile	(revision 3f189c5b1300e4403cf9b0abc4b174e243d325f4)
@@ -33,5 +33,4 @@
 
 SOURCES = \
-	callback.c \
 	iface.c \
 	main.c \
Index: pace/drv/uhci-hcd/callback.c
===================================================================
--- uspace/drv/uhci-hcd/callback.c	(revision 7e62b62c6377dac5febcabe418f93c47871b3a86)
+++ 	(revision )
@@ -1,98 +1,0 @@
-/*
- * Copyright (c) 2011 Jan Vesely
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - Redistributions in binary form must reproduce the above copyright
- *   notice, this list of conditions and the following disclaimer in the
- *   documentation and/or other materials provided with the distribution.
- * - The name of the author may not be used to endorse or promote products
- *   derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-/** @addtogroup usb
- * @{
- */
-/** @file
- * @brief UHCI driver
- */
-#include <errno.h>
-#include <mem.h>
-
-#include <usb/debug.h>
-
-#include "callback.h"
-int callback_init(callback_t *instance, device_t *dev,
-  void *buffer, size_t size, usbhc_iface_transfer_in_callback_t func_in,
-  usbhc_iface_transfer_out_callback_t func_out, void *arg)
-{
-	assert(instance);
-	assert(func_in == NULL || func_out == NULL);
-	if (size > 0) {
-		instance->new_buffer = malloc32(size);
-		if (!instance->new_buffer) {
-			usb_log_error("Failed to allocate device acessible buffer.\n");
-			return ENOMEM;
-		}
-		if (func_out)
-			memcpy(instance->new_buffer, buffer, size);
-	} else {
-		instance->new_buffer = NULL;
-	}
-
-
-	instance->callback_out = func_out;
-	instance->callback_in = func_in;
-	instance->old_buffer = buffer;
-	instance->buffer_size = size;
-	instance->dev = dev;
-	instance->arg = arg;
-	return EOK;
-}
-/*----------------------------------------------------------------------------*/
-void callback_run(
-callback_t *instance, usb_transaction_outcome_t outcome, size_t act_size)
-{
-	assert(instance);
-
-	/* update the old buffer */
-	if (instance->new_buffer &&
-	  (instance->new_buffer != instance->old_buffer)) {
-		memcpy(instance->old_buffer, instance->new_buffer, instance->buffer_size);
-		free32(instance->new_buffer);
-		instance->new_buffer = NULL;
-	}
-
-	if (instance->callback_in) {
-		assert(instance->callback_out == NULL);
-		usb_log_debug("Callback in: %p %x %d.\n",
-		  instance->callback_in, outcome, act_size);
-		instance->callback_in(
-		  instance->dev, outcome, act_size, instance->arg);
-	} else {
-		assert(instance->callback_out);
-		assert(instance->callback_in == NULL);
-		usb_log_debug("Callback out: %p %p %x %p .\n",
-		 instance->callback_out, instance->dev, outcome, instance->arg);
-		instance->callback_out(
-		  instance->dev, outcome, instance->arg);
-	}
-}
-/**
- * @}
- */
Index: pace/drv/uhci-hcd/callback.h
===================================================================
--- uspace/drv/uhci-hcd/callback.h	(revision 7e62b62c6377dac5febcabe418f93c47871b3a86)
+++ 	(revision )
@@ -1,95 +1,0 @@
-/*
- * Copyright (c) 2010 Jan Vesely
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - Redistributions in binary form must reproduce the above copyright
- *   notice, this list of conditions and the following disclaimer in the
- *   documentation and/or other materials provided with the distribution.
- * - The name of the author may not be used to endorse or promote products
- *   derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-/** @addtogroup usb
- * @{
- */
-/** @file
- * @brief UHCI driver
- */
-#ifndef DRV_UHCI_CALLBACK_H
-#define DRV_UHCI_CALLBACK_H
-
-#include <usbhc_iface.h>
-#include <usb/usb.h>
-
-#include "utils/malloc32.h"
-
-typedef struct callback
-{
-	usbhc_iface_transfer_in_callback_t callback_in;
-	usbhc_iface_transfer_out_callback_t callback_out;
-	void *old_buffer;
-	void *new_buffer;
-	void *arg;
-	size_t buffer_size;
-	size_t actual_size;
-	device_t *dev;
-} callback_t;
-
-
-int callback_init(callback_t *instance, device_t *dev,
-  void *buffer, size_t size, usbhc_iface_transfer_in_callback_t func_in,
-  usbhc_iface_transfer_out_callback_t func_out, void *arg);
-
-#define callback_in_init(instance, dev, buffer, size, func, arg) \
-	callback_init(instance, dev, buffer, size, func, NULL, arg)
-
-#define callback_out_init(instance, dev, buffer, size, func, arg) \
-	callback_init(instance, dev, buffer, size, func, NULL, arg)
-
-static inline callback_t *callback_get(device_t *dev,
-  void *buffer, size_t size, usbhc_iface_transfer_in_callback_t func_in,
-  usbhc_iface_transfer_out_callback_t func_out, void *arg)
-{
-	callback_t *instance = malloc(sizeof(callback_t));
-	if (callback_init(instance, dev, buffer, size, func_in, func_out, arg)) {
-		free(instance);
-		instance = NULL;
-	}
-	return instance;
-}
-
-static inline void callback_fini(callback_t *instance)
-{
-	assert(instance);
-	if (instance->new_buffer)
-		free32(instance->new_buffer);
-}
-
-static inline void callback_dispose(callback_t *instance)
-{
-	callback_fini(instance);
-	free(instance);
-}
-
-void callback_run(
-  callback_t *instance, usb_transaction_outcome_t outcome, size_t act_size);
-#endif
-/**
- * @}
- */
Index: uspace/drv/uhci-hcd/transfer_list.c
===================================================================
--- uspace/drv/uhci-hcd/transfer_list.c	(revision 7e62b62c6377dac5febcabe418f93c47871b3a86)
+++ uspace/drv/uhci-hcd/transfer_list.c	(revision 3f189c5b1300e4403cf9b0abc4b174e243d325f4)
@@ -41,6 +41,4 @@
 {
 	assert(instance);
-	instance->first = NULL;
-	instance->last = NULL;
 	instance->next = NULL;
 	instance->name = name;
@@ -64,35 +62,4 @@
 		return;
 	queue_head_add_next(instance->queue_head, next->queue_head_pa);
-}
-/*----------------------------------------------------------------------------*/
-int transfer_list_append(
-  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);
-	}
-	usb_log_debug("Successfully added transfer to the hc queue %s.\n",
-	  instance->name);
-	return EOK;
 }
 /*----------------------------------------------------------------------------*/
Index: uspace/drv/uhci-hcd/transfer_list.h
===================================================================
--- uspace/drv/uhci-hcd/transfer_list.h	(revision 7e62b62c6377dac5febcabe418f93c47871b3a86)
+++ uspace/drv/uhci-hcd/transfer_list.h	(revision 3f189c5b1300e4403cf9b0abc4b174e243d325f4)
@@ -36,12 +36,8 @@
 
 #include "uhci_struct/queue_head.h"
-#include "uhci_struct/transfer_descriptor.h"
 #include "tracker.h"
 
 typedef struct transfer_list
 {
-	transfer_descriptor_t *first;
-	transfer_descriptor_t *last;
-
 	tracker_t *last_tracker;
 
@@ -62,6 +58,4 @@
 }
 
-int transfer_list_append(
-  transfer_list_t *instance, transfer_descriptor_t *transfer);
 
 void transfer_list_add_tracker(transfer_list_t *instance, tracker_t *tracker);
Index: uspace/drv/uhci-hcd/uhci.c
===================================================================
--- uspace/drv/uhci-hcd/uhci.c	(revision 7e62b62c6377dac5febcabe418f93c47871b3a86)
+++ uspace/drv/uhci-hcd/uhci.c	(revision 3f189c5b1300e4403cf9b0abc4b174e243d325f4)
@@ -96,5 +96,5 @@
 	fibril_add_ready(instance->debug_checker);
 
-	/* Start the hc with large(64b) packet FSBR */
+	/* Start the hc with large(64B) packet FSBR */
 	pio_write_16(&instance->registers->usbcmd,
 	    UHCI_CMD_RUN_STOP | UHCI_CMD_MAX_PACKET);
@@ -146,65 +146,4 @@
 	instance->transfers[0][USB_TRANSFER_CONTROL] =
 	  &instance->transfers_control_full;
-
-	return EOK;
-}
-/*----------------------------------------------------------------------------*/
-int uhci_transfer(
-  uhci_t *instance,
-  device_t *dev,
-  usb_target_t target,
-  usb_transfer_type_t transfer_type,
-	bool toggle,
-  usb_packet_id pid,
-	bool low_speed,
-  void *buffer, size_t size,
-  usbhc_iface_transfer_out_callback_t callback_out,
-  usbhc_iface_transfer_in_callback_t callback_in,
-  void *arg)
-{
-	if (!allowed_usb_packet(low_speed, transfer_type, size)) {
-		usb_log_warning("Invalid USB packet specified %s SPEED %d %zu.\n",
-			low_speed ? "LOW" : "FULL" , transfer_type, size);
-		return ENOTSUP;
-	}
-
-	// TODO: Add support for isochronous transfers
-	if (transfer_type == USB_TRANSFER_ISOCHRONOUS) {
-		usb_log_warning("ISO transfer not supported.\n");
-		return ENOTSUP;
-	}
-
-	transfer_list_t *list = instance->transfers[low_speed][transfer_type];
-	assert(list);
-
-	transfer_descriptor_t *td = NULL;
-	callback_t *job = NULL;
-	int ret = EOK;
-	assert(dev);
-
-#define CHECK_RET_TRANS_FREE_JOB_TD(message) \
-	if (ret != EOK) { \
-		usb_log_error(message); \
-		if (job) { \
-			callback_dispose(job); \
-		} \
-		if (td) { free32(td); } \
-		return ret; \
-	} else (void) 0
-
-	job = callback_get(dev, buffer, size, callback_in, callback_out, arg);
-	ret = job ? EOK : ENOMEM;
-	CHECK_RET_TRANS_FREE_JOB_TD("Failed to allocate callback structure.\n");
-
-	td = transfer_descriptor_get(3, size, false, target, pid, job->new_buffer);
-	ret = td ? EOK : ENOMEM;
-	CHECK_RET_TRANS_FREE_JOB_TD("Failed to setup transfer descriptor.\n");
-
-	td->callback = job;
-
-	usb_log_debug("Appending a new transfer to queue %s.\n", list->name);
-
-	ret = transfer_list_append(list, td);
-	CHECK_RET_TRANS_FREE_JOB_TD("Failed to append transfer descriptor.\n");
 
 	return EOK;
@@ -256,34 +195,4 @@
 			current = next;
 		}
-		/* iterate all transfer queues */
-		transfer_list_t *current_list = &instance->transfers_interrupt;
-		while (current_list) {
-			/* Remove inactive transfers from the top of the queue
-			 * TODO: should I reach queue head or is this enough? */
-			volatile transfer_descriptor_t * it =
-				current_list->first;
-			usb_log_debug("Running cleaning fibril on queue: %s (%s).\n",
-				current_list->name, it ? "SOMETHING" : "EMPTY");
-
-			if (it) {
-				usb_log_debug("First in queue: %p (%x) PA:%x.\n",
-					it, it->status, addr_to_phys((void*)it) );
-				usb_log_debug("First to send: %x\n",
-					(current_list->queue_head->element) );
-			}
-
-			while (current_list->first &&
-			 !(current_list->first->status & TD_STATUS_ERROR_ACTIVE)) {
-				transfer_descriptor_t *transfer = current_list->first;
-				usb_log_info("Inactive transfer calling callback with status %x.\n",
-				  transfer->status);
-				current_list->first = transfer->next_va;
-				transfer_descriptor_dispose(transfer);
-			}
-			if (!current_list->first)
-				current_list->last = current_list->first;
-
-			current_list = current_list->next;
-		}
 		async_usleep(UHCI_CLEANER_TIMEOUT);
 	}
@@ -352,5 +261,5 @@
 			return (!low_speed && size < 1024);
 		case USB_TRANSFER_INTERRUPT:
-			return size <= (low_speed ? 8 :64);
+			return size <= (low_speed ? 8 : 64);
 		case USB_TRANSFER_CONTROL: /* device specifies its own max size */
 			return (size <= (low_speed ? 8 : 64));
Index: uspace/drv/uhci-hcd/uhci_struct/transfer_descriptor.c
===================================================================
--- uspace/drv/uhci-hcd/uhci_struct/transfer_descriptor.c	(revision 7e62b62c6377dac5febcabe418f93c47871b3a86)
+++ uspace/drv/uhci-hcd/uhci_struct/transfer_descriptor.c	(revision 3f189c5b1300e4403cf9b0abc4b174e243d325f4)
@@ -36,4 +36,5 @@
 
 #include "transfer_descriptor.h"
+#include "utils/malloc32.h"
 
 void transfer_descriptor_init(transfer_descriptor_t *instance,
@@ -58,7 +59,4 @@
 
 	instance->buffer_ptr = 0;
-
-	instance->next_va = NULL;
-	instance->callback = NULL;
 
 	if (size) {
@@ -118,13 +116,4 @@
 	return EOK;
 }
-/*----------------------------------------------------------------------------*/
-void transfer_descriptor_fini(transfer_descriptor_t *instance)
-{
-	assert(instance);
-	callback_run(instance->callback,
-		convert_outcome(instance->status),
-		((instance->status >> TD_STATUS_ACTLEN_POS) + 1) & TD_STATUS_ACTLEN_MASK
-	);
-}
 /**
  * @}
Index: uspace/drv/uhci-hcd/uhci_struct/transfer_descriptor.h
===================================================================
--- uspace/drv/uhci-hcd/uhci_struct/transfer_descriptor.h	(revision 7e62b62c6377dac5febcabe418f93c47871b3a86)
+++ uspace/drv/uhci-hcd/uhci_struct/transfer_descriptor.h	(revision 3f189c5b1300e4403cf9b0abc4b174e243d325f4)
@@ -38,6 +38,4 @@
 #include <usb/usb.h>
 
-#include "utils/malloc32.h"
-#include "callback.h"
 #include "link_pointer.h"
 
@@ -86,11 +84,8 @@
 	volatile uint32_t buffer_ptr;
 
-	/* there is 16 bytes of data available here
-	 * those are used to store callback pointer
-	 * and next pointer. Thus, there is some free space
-	 * on 32bits systems.
+	/* there is 16 bytes of data available here, according to UHCI
+	 * Design guide, according to linux kernel the hardware does not care
+	 * we don't use it anyway
 	 */
-	struct transfer_descriptor *next_va;
-	callback_t *callback;
 } __attribute__((packed)) transfer_descriptor_t;
 
@@ -100,25 +95,4 @@
 	int pid, void *buffer);
 
-static inline transfer_descriptor_t * transfer_descriptor_get(
-  int error_count, size_t size, bool isochronous, usb_target_t target,
-  int pid, void *buffer)
-{
-	transfer_descriptor_t * instance =
-	  malloc32(sizeof(transfer_descriptor_t));
-
-	if (instance)
-		transfer_descriptor_init(
-		  instance, error_count, size, isochronous, target, pid, buffer);
-	return instance;
-}
-
-void transfer_descriptor_fini(transfer_descriptor_t *instance);
-
-static inline void transfer_descriptor_dispose(transfer_descriptor_t *instance)
-{
-	assert(instance);
-	transfer_descriptor_fini(instance);
-	free32(instance);
-}
 
 int transfer_descriptor_status(transfer_descriptor_t *instance);
@@ -130,12 +104,4 @@
 	return instance->status & TD_STATUS_ERROR_ACTIVE;
 }
-
-static inline void transfer_descriptor_append(
-  transfer_descriptor_t *instance, transfer_descriptor_t *item)
-{
-	assert(instance);
-	instance->next_va = item;
-	instance->next = (uintptr_t)addr_to_phys(item) & LINK_POINTER_ADDRESS_MASK;
-}
 #endif
 /**
