Index: uspace/drv/uhci/Makefile
===================================================================
--- uspace/drv/uhci/Makefile	(revision 977fcea2d1f12932431b92aaae48a7368a2db4d6)
+++ uspace/drv/uhci/Makefile	(revision f9dd44da8b6e01746d4445f7c5ad99c216e9d165)
@@ -38,8 +38,5 @@
 	root_hub/port_status.c \
 	root_hub/root_hub.c \
-	uhci.c \
-	utils/fibril_semaphore.c \
-	utils/hc_synchronizer.c \
-	utils/usb_device.c
+	uhci.c 
 
 include $(USPACE_PREFIX)/Makefile.common
Index: uspace/drv/uhci/root_hub/port.c
===================================================================
--- uspace/drv/uhci/root_hub/port.c	(revision 977fcea2d1f12932431b92aaae48a7368a2db4d6)
+++ uspace/drv/uhci/root_hub/port.c	(revision f9dd44da8b6e01746d4445f7c5ad99c216e9d165)
@@ -1,6 +1,7 @@
 
 #include <errno.h>
-#include <usb/devreq.h> /* for usb_device_request_setup_packet_t */
+//#include <usb/devreq.h> /* for usb_device_request_setup_packet_t */
 #include <usb/usb.h>
+#include <usb/usbdrv.h>
 
 #include "debug.h"
@@ -8,11 +9,8 @@
 #include "port.h"
 #include "port_status.h"
-#include "utils/hc_synchronizer.h"
-#include "utils/usb_device.h"
 
 static int uhci_port_new_device(uhci_port_t *port);
 static int uhci_port_remove_device(uhci_port_t *port);
 static int uhci_port_set_enabled(uhci_port_t *port, bool enabled);
-static usb_address_t assign_address_to_zero_device(device_t *hc);
 
 /*----------------------------------------------------------------------------*/
@@ -21,4 +19,5 @@
 	uhci_port_t *port_instance = port;
 	assert(port_instance);
+	port_instance->hc_phone = devman_device_connect(port_instance->hc->handle, 0);
 
 	while (1) {
@@ -52,4 +51,5 @@
 	assert(port->hc);
 
+
 	uhci_print_info("Adding new device on port %d.\n", port->number);
 
@@ -59,13 +59,20 @@
 	usb_address_keeping_reserve_default(&uhci_instance->address_manager);
 
+	const usb_address_t usb_address =
+	  usb_address_keeping_request(&uhci_instance->address_manager);
+
+	if (usb_address <= 0) {
+		return usb_address;
+	}
+
 	/* enable port */
 	uhci_port_set_enabled( port, true );
 
 	/* assign address to device */
-	usb_address_t address = assign_address_to_zero_device(port->hc);
+	int ret = usb_drv_req_set_address( port->hc_phone, 0, usb_address );
 
 
-	if (address <= 0) { /* address assigning went wrong */
-		uhci_print_error("Failed to assign address to the device.\n");
+	if (ret != EOK) { /* address assigning went wrong */
+		uhci_print_error("Failed(%d) to assign address to the device.\n", ret);
 		uhci_port_set_enabled(port, false);
 		usb_address_keeping_release_default(&uhci_instance->address_manager);
@@ -79,30 +86,13 @@
 	assert(port->attached_device == 0);
 
-#define CHECK_RET_DELETE_CHILD_RETURN(ret, child, message, args...)\
-	if (ret < 0) { \
-		uhci_print_error("Failed(%d) to "message, ret, ##args); \
-		if (child) { \
-			delete_device(child); \
-		} \
-		uhci_port_set_enabled(port, false); \
-		usb_address_keeping_release(&uhci_instance->address_manager, address); \
-		return ret; \
-	} else (void)0
+	ret = usb_drv_register_child_in_devman(port->hc_phone, port->hc, usb_address,
+		&port->attached_device);
 
-	device_t *child = create_device();
+	if (ret != EOK) { /* something went wrong */
+		uhci_print_error("Failed(%d) in usb_drv_register_child.\n", ret);
+		uhci_port_set_enabled(port, false);
+		return ENOMEM;
+	}
 
-	int ret = child ? EOK : ENOMEM;
-	CHECK_RET_DELETE_CHILD_RETURN(ret, child, "create device.\n" );
-
-	ret = usb_device_init(child, port->hc, address, port->number );
-	CHECK_RET_DELETE_CHILD_RETURN(ret, child, "init usb device.\n" );
-
-	ret = child_device_register(child, port->hc);
-	CHECK_RET_DELETE_CHILD_RETURN(ret, child, "register usb device.\n" );
-
-	/* store device and bind address, can not fail */
-	port->attached_device = child->handle;
-	usb_address_keeping_devman_bind(&uhci_instance->address_manager,
-	  address, port->attached_device);
 
 	return EOK;
@@ -138,43 +128,2 @@
 }
 /*----------------------------------------------------------------------------*/
-static usb_address_t assign_address_to_zero_device( device_t *hc )
-{
-	assert( hc );
-	assert( hc->driver_data );
-
-	uhci_t *uhci_instance = (uhci_t*)hc->driver_data;
-
-	/* get new address */
-	const usb_address_t usb_address =
-	  usb_address_keeping_request(&uhci_instance->address_manager);
-
-	if (usb_address <= 0) {
-		return usb_address;
-	}
-
-	/* assign new address */
-	usb_target_t new_device = { USB_ADDRESS_DEFAULT, 0 };
-	usb_device_request_setup_packet_t data =
-	{
-		.request_type = 0,
-		.request = USB_DEVREQ_SET_ADDRESS,
-		{ .value = usb_address },
-		.index = 0,
-		.length = 0
-	};
-
-	sync_value_t sync;
-	uhci_setup_sync(hc, new_device,
-	  USB_TRANSFER_CONTROL, &data, sizeof(data), &sync);
-
-	if (sync.result != USB_OUTCOME_OK) {
-		uhci_print_error(
-		  "Failed to assign address to the connected device.\n");
-		usb_address_keeping_release(&uhci_instance->address_manager,
-		  usb_address);
-		return -1;
-	}
-
-	uhci_print_info("Assigned address %#x.\n", usb_address);
-	return usb_address;
-}
Index: uspace/drv/uhci/root_hub/port.h
===================================================================
--- uspace/drv/uhci/root_hub/port.h	(revision 977fcea2d1f12932431b92aaae48a7368a2db4d6)
+++ uspace/drv/uhci/root_hub/port.h	(revision f9dd44da8b6e01746d4445f7c5ad99c216e9d165)
@@ -47,4 +47,5 @@
 	unsigned number;
 	unsigned wait_period_usec;
+	int hc_phone;
 	devman_handle_t attached_device;
 } uhci_port_t;
@@ -58,4 +59,5 @@
 	port->hc = hc;
 	port->number = number;
+	port->hc_phone = -1;
 	port->wait_period_usec = usec;
 	port->attached_device = 0;
Index: uspace/drv/uhci/root_hub/root_hub.c
===================================================================
--- uspace/drv/uhci/root_hub/root_hub.c	(revision 977fcea2d1f12932431b92aaae48a7368a2db4d6)
+++ uspace/drv/uhci/root_hub/root_hub.c	(revision f9dd44da8b6e01746d4445f7c5ad99c216e9d165)
@@ -8,5 +8,5 @@
 #include "root_hub.h"
 
-#define ROOT_HUB_WAIT_USEC 10000000 /* 10 second */
+#define ROOT_HUB_WAIT_USEC 10000000 /* 10 seconds */
 
 int uhci_root_hub_init( uhci_root_hub_t *hub, device_t *hc, void *addr )
Index: uspace/drv/uhci/uhci.c
===================================================================
--- uspace/drv/uhci/uhci.c	(revision 977fcea2d1f12932431b92aaae48a7368a2db4d6)
+++ uspace/drv/uhci/uhci.c	(revision f9dd44da8b6e01746d4445f7c5ad99c216e9d165)
@@ -6,5 +6,4 @@
 #include "name.h"
 #include "uhci.h"
-
 
 int uhci_init(device_t *device, void *regs)
@@ -58,5 +57,7 @@
 	    size);
 
-	return ENOTSUP;
+	callback( dev, 0, USB_OUTCOME_OK, arg );
+
+	return EOK;
 }
 /*----------------------------------------------------------------------------*/
@@ -74,5 +75,6 @@
 	    size);
 
-	return ENOTSUP;
+	callback( dev, USB_OUTCOME_OK, arg );
+	return EOK;
 }
 /*----------------------------------------------------------------------------*/
@@ -89,7 +91,7 @@
 	    usb_str_transfer_type(transfer_type),
 	    size);
+
 	callback( dev, USB_OUTCOME_OK, arg );
-
-	return ENOTSUP;
+	return EOK;
 }
 /*----------------------------------------------------------------------------*/
Index: pace/drv/uhci/utils/fibril_semaphore.c
===================================================================
--- uspace/drv/uhci/utils/fibril_semaphore.c	(revision 977fcea2d1f12932431b92aaae48a7368a2db4d6)
+++ 	(revision )
@@ -1,121 +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.
- */
-#include <assert.h>
-#include <async.h>
-#include <async_priv.h>
-#include <futex.h>
-
-#include "fibril_semaphore.h"
-static void optimize_execution_power(void)
-{
-  /*
-   * When waking up a worker fibril previously blocked in fibril
-   * synchronization, chances are that there is an idle manager fibril
-   * waiting for IPC, that could start executing the awakened worker
-   * fibril right away. We try to detect this and bring the manager
-   * fibril back to fruitful work.
-   */
-  if (atomic_get(&threads_in_ipc_wait) > 0)
-    ipc_poke();
-}
-/*----------------------------------------------------------------------------*/
-void fibril_semaphore_initialize(fibril_semaphore_t *fs, int value)
-{
-	assert( fs );
-  fs->oi.owned_by = NULL;
-  fs->counter = 1;
-	fs->value = value;
-  list_initialize(&fs->waiters);
-}
-/*----------------------------------------------------------------------------*/
-void fibril_semaphore_down(fibril_semaphore_t *fs)
-{
-	assert( fs );
-  fibril_t *f = (fibril_t *) fibril_get_id();
-
-  futex_down(&async_futex);
-  if (--fs->value < 0) {
-    awaiter_t wdata;
-    wdata.fid = fibril_get_id();
-    wdata.active = false;
-    wdata.wu_event.inlist = true;
-    link_initialize(&wdata.wu_event.link);
-    list_append(&wdata.wu_event.link, &fs->waiters);
-//    check_for_deadlock(&fm->oi);
-    f->waits_for = &fs->oi;
-		++fs->counter;
-    fibril_switch(FIBRIL_TO_MANAGER);
-  } else {
-    fs->oi.owned_by = f;
-    futex_up(&async_futex);
-  }
-}
-/*----------------------------------------------------------------------------*/
-bool fibril_semaphore_trydown(fibril_semaphore_t *fs)
-{
-  bool locked = false;
-
-  futex_down(&async_futex);
-  if (fs->value > 0) {
-    --fs->value;
-    fs->oi.owned_by = (fibril_t *) fibril_get_id();
-    locked = true;
-  }
-  futex_up(&async_futex);
-
-  return locked;
-}
-/*----------------------------------------------------------------------------*/
-void fibril_semaphore_up(fibril_semaphore_t *fs)
-{
-	assert(fs);
-	futex_down(&async_futex);
-  if (++fs->value <= 0) {
-    link_t *tmp;
-    awaiter_t *wdp;
-    fibril_t *f;
-
-    assert(!list_empty(&fs->waiters));
-
-    tmp = fs->waiters.next;
-    wdp = list_get_instance(tmp, awaiter_t, wu_event.link);
-    wdp->active = true;
-    wdp->wu_event.inlist = false;
-
-    f = (fibril_t *) wdp->fid;
-    fs->oi.owned_by = f;
-    f->waits_for = NULL;
-
-    list_remove(&wdp->wu_event.link);
-    fibril_add_ready(wdp->fid);
-    optimize_execution_power();
-  } else {
-    fs->oi.owned_by = NULL;
-  }
-	futex_up(&async_futex);
-}
Index: pace/drv/uhci/utils/fibril_semaphore.h
===================================================================
--- uspace/drv/uhci/utils/fibril_semaphore.h	(revision 977fcea2d1f12932431b92aaae48a7368a2db4d6)
+++ 	(revision )
@@ -1,69 +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_UTILS_FIBRIL_SEMAPHORE_H
-#define DRV_UHCI_UTILS_FIBRIL_SEMAPHORE_H
-
-#include <bool.h>
-#include <fibril.h>
-
-typedef struct {
-  fibril_owner_info_t oi;   /* Keep this the first thing. */
-  int counter;
-	int value;
-  link_t waiters;
-} fibril_semaphore_t;
-
-#define FIBRIL_SEMAPHORE_INITIALIZER(name) \
-  { \
-    .oi = { \
-      .owned_by = NULL \
-    }, \
-    .counter = 0, \
-		.value = 0, \
-    .waiters = { \
-      .prev = &name.waiters, \
-      .next = &name.waiters, \
-    } \
-  }
-
-extern void fibril_semaphore_initialize(fibril_semaphore_t *, int value);
-extern void fibril_semaphore_down(fibril_semaphore_t *);
-extern bool fibril_semaphore_trydown(fibril_semaphore_t *);
-extern void fibril_semaphore_up(fibril_semaphore_t *);
-
-#endif
-/**
- * @}
- */
Index: pace/drv/uhci/utils/hc_synchronizer.c
===================================================================
--- uspace/drv/uhci/utils/hc_synchronizer.c	(revision 977fcea2d1f12932431b92aaae48a7368a2db4d6)
+++ 	(revision )
@@ -1,60 +1,0 @@
-#include "debug.h"
-#include "hc_synchronizer.h"
-#include "uhci.h"
-
-void sync_init(sync_value_t *value)
-{
-	assert(value);
-	fibril_semaphore_initialize(&value->done, 0);
-}
-/*----------------------------------------------------------------------------*/
-void sync_wait_for(sync_value_t *value)
-{
-	assert( value );
-	fibril_semaphore_down(&value->done);
-}
-/*----------------------------------------------------------------------------*/
-void sync_in_callback(
-  device_t *device, usb_transaction_outcome_t result, size_t size, void *arg)
-{
-	sync_value_t *value = arg;
-	assert(value);
-	value->size = size;
-	value->result = result;
-	fibril_semaphore_up(&value->done);
-}
-/*----------------------------------------------------------------------------*/
-void sync_out_callback(
-  device_t *device, usb_transaction_outcome_t result, void *arg)
-{
-	sync_value_t *value = arg;
-	assert(value);
-	value->result = result;
-	fibril_semaphore_up(&value->done);
-}
-/*----------------------------------------------------------------------------*/
-int uhci_setup_sync(
-  device_t *hc,
-  usb_target_t target,
-  usb_transfer_type_t type,
-  void *buffer, size_t size,
-  sync_value_t *result
-  )
-{
-	assert(result);
-	sync_init(result);
-
-	int ret =
-	  uhci_setup(hc, target, type, buffer, size,
-		  sync_out_callback, (void*)result);
-
-	if (ret) {
-		uhci_print_error("sync setup transaction failed(%d).\n", ret);
-		return ret;
-	}
-
-	uhci_print_verbose("setup transaction sent, waiting to complete.\n");
-	sync_wait_for(result);
-
-	return ret;
-}
Index: pace/drv/uhci/utils/hc_synchronizer.h
===================================================================
--- uspace/drv/uhci/utils/hc_synchronizer.h	(revision 977fcea2d1f12932431b92aaae48a7368a2db4d6)
+++ 	(revision )
@@ -1,72 +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_UTIL_SYNCHRONIZER_H
-#define DRV_UHCI_UTIL_SYNCHRONIZER_H
-
-#include <assert.h>
-#include <driver.h>
-#include <usb/usb.h>
-
-#include "debug.h"
-#include "utils/fibril_semaphore.h"
-
-typedef struct value
-{
-	/* TODO Think of better fibril synch to use */
-	usb_transaction_outcome_t result;
-	size_t size;
-	fibril_semaphore_t done;
-} sync_value_t;
-
-void sync_init(sync_value_t *value);
-
-void sync_wait_for(sync_value_t *value);
-
-void sync_in_callback(
-  device_t *device, usb_transaction_outcome_t result, size_t size, void *value);
-
-void sync_out_callback(
-  device_t *device, usb_transaction_outcome_t result, void *value);
-
-int uhci_setup_sync(
-  device_t *hc,
-  usb_target_t target,
-  usb_transfer_type_t type,
-  void *buffer, size_t size,
-  sync_value_t *result
-  );
-#endif
-/**
- * @}
- */
Index: pace/drv/uhci/utils/usb_device.c
===================================================================
--- uspace/drv/uhci/utils/usb_device.c	(revision 977fcea2d1f12932431b92aaae48a7368a2db4d6)
+++ 	(revision )
@@ -1,113 +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.
- */
-
-#include <errno.h>
-#include <usb/classes/classes.h>
-#include <usb/descriptor.h>
-#include <usb/usbdrv.h>
-
-#include "debug.h"
-#include "usb_device.h"
-
-/*----------------------------------------------------------------------------*/
-#define CHECK_RET_RETURN(ret, child, message, args...)\
-  if (ret < 0) { \
-    uhci_print_error("Failed(%d) to "message, ret, ##args); \
-    return ret; \
-  } else (void)0
-
-int usb_device_init(device_t *device, device_t *hc, usb_address_t address,
-  int hub_port)
-{
-	assert(device);
-	assert(hc);
-
-	int ret = 0;
-  char *name;
-
-  /* create name */
-  ret = asprintf(&name, "usbdevice on hc%p/root_hub[%d]/%#x",
-	  hc, hub_port, address);
-  CHECK_RET_RETURN(ret, child, "create device name.\n");
-
-  device->name = name;
-
-	/* use descriptors to identify the device */
-  ret = usb_device_identify(device, hc, address);
-  CHECK_RET_RETURN(ret, child, "identify device.\n");
-
-	return EOK;
-}
-/*----------------------------------------------------------------------------*/
-struct device_descriptor_packet
-{
-	usb_device_request_setup_packet_t request;
-	usb_standard_device_descriptor_t descriptor;
-};
-#define DEVICE_DESCRIPTOR_PACKET_INITIALIZER \
-	{ \
-		.request = { \
-			.request_type = 0, \
-			.request = USB_DEVREQ_GET_DESCRIPTOR, \
-			{ .value = USB_DESCTYPE_DEVICE }, \
-			.index = 0, \
-			.length = sizeof(usb_standard_device_descriptor_t) \
-		} \
-	}
-/*----------------------------------------------------------------------------*/
-struct configuration_descriptor_packet
-{
-	usb_device_request_setup_packet_t request;
-	usb_standard_configuration_descriptor_t descriptor;
-};
-#define CONFIGURATION_DESCRIPTOR_PACKET_INITIALIZER \
-	{ \
-		.request = { \
-			.request_type = 0, \
-			.request = USB_DEVREQ_GET_DESCRIPTOR, \
-			{ .value = USB_DESCTYPE_CONFIGURATION }, \
-			.index = 0, \
-			.length = sizeof(usb_standard_device_descriptor_t); \
-		}; \
-	}
-/*----------------------------------------------------------------------------*/
-int usb_device_identify(device_t *device, device_t *hc, usb_address_t address)
-{
-	assert(device);
-	assert(hc);
-
-	struct device_descriptor_packet packet =
-	  DEVICE_DESCRIPTOR_PACKET_INITIALIZER;
-
-  packet.descriptor.device_class = USB_CLASS_HUB;
-  usb_drv_create_match_ids_from_device_descriptor(
-	  &device->match_ids, &packet.descriptor );
-
-	return 0;
-}
-/*----------------------------------------------------------------------------*/
Index: pace/drv/uhci/utils/usb_device.h
===================================================================
--- uspace/drv/uhci/utils/usb_device.h	(revision 977fcea2d1f12932431b92aaae48a7368a2db4d6)
+++ 	(revision )
@@ -1,48 +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_UTILS_IDENTIFY_H
-#define DRV_UHCI_UTILS_IDENTIFY_H
-
-#include <driver.h>
-#include <usb/usb.h>
-
-int usb_device_identify(device_t *device, device_t *hc, usb_address_t address);
-
-int usb_device_init(device_t *device, device_t *hc, usb_address_t address,
-  int port);
-
-#endif
-/**
- * @}
- */
