Index: .bzrignore
===================================================================
--- .bzrignore	(revision 652f484c07231f351f872ef96e2271b839845dc0)
+++ .bzrignore	(revision 4d20ef71a066a447ad6aa8f601b733d4effdc3ad)
@@ -49,5 +49,4 @@
 ./uspace/app/killall/killall
 ./uspace/app/klog/klog
-./uspace/app/lsusb/lsusb
 ./uspace/app/mkfat/mkfat
 ./uspace/app/netstart/netstart
Index: boot/Makefile.common
===================================================================
--- boot/Makefile.common	(revision 652f484c07231f351f872ef96e2271b839845dc0)
+++ boot/Makefile.common	(revision 4d20ef71a066a447ad6aa8f601b733d4effdc3ad)
@@ -128,5 +128,4 @@
 	$(USPACE_PATH)/app/killall/killall \
 	$(USPACE_PATH)/app/mkfat/mkfat \
-	$(USPACE_PATH)/app/lsusb/lsusb \
 	$(USPACE_PATH)/app/sbi/sbi \
 	$(USPACE_PATH)/app/redir/redir \
Index: uspace/Makefile
===================================================================
--- uspace/Makefile	(revision 652f484c07231f351f872ef96e2271b839845dc0)
+++ uspace/Makefile	(revision 4d20ef71a066a447ad6aa8f601b733d4effdc3ad)
@@ -41,5 +41,4 @@
 	app/killall \
 	app/klog \
-	app/lsusb \
 	app/mkfat \
 	app/redir \
Index: pace/app/lsusb/Makefile
===================================================================
--- uspace/app/lsusb/Makefile	(revision 652f484c07231f351f872ef96e2271b839845dc0)
+++ 	(revision )
@@ -1,38 +1,0 @@
-#
-# Copyright (c) 2011 Vojtech Horky
-# 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.
-#
-
-USPACE_PREFIX = ../..
-BINARY = lsusb
-
-LIBS = $(LIBUSB_PREFIX)/libusb.a $(LIBDRV_PREFIX)/libdrv.a
-EXTRA_CFLAGS = -I$(LIBUSB_PREFIX)/include -I$(LIBDRV_PREFIX)/include
-
-SOURCES = \
-	main.c
-
-include $(USPACE_PREFIX)/Makefile.common
Index: pace/app/lsusb/main.c
===================================================================
--- uspace/app/lsusb/main.c	(revision 652f484c07231f351f872ef96e2271b839845dc0)
+++ 	(revision )
@@ -1,80 +1,0 @@
-/*
- * Copyright (c) 2010-2011 Vojtech Horky
- * 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 lsusb
- * @{
- */
-/**
- * @file
- * Listing of USB host controllers.
- */
-
-#include <inttypes.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <errno.h>
-#include <str_error.h>
-#include <bool.h>
-#include <getopt.h>
-#include <devman.h>
-#include <devmap.h>
-#include <usb/host.h>
-
-#define NAME "lsusb"
-
-#define MAX_FAILED_ATTEMPTS 4
-#define MAX_PATH_LENGTH 1024
-
-int main(int argc, char *argv[])
-{
-	size_t class_index = 0;
-	size_t failed_attempts = 0;
-
-	while (failed_attempts < MAX_FAILED_ATTEMPTS) {
-		class_index++;
-		devman_handle_t hc_handle = 0;
-		int rc = usb_ddf_get_hc_handle_by_class(class_index, &hc_handle);
-		if (rc != EOK) {
-			failed_attempts++;
-			continue;
-		}
-		char path[MAX_PATH_LENGTH];
-		rc = devman_get_device_path(hc_handle, path, MAX_PATH_LENGTH);
-		if (rc != EOK) {
-			continue;
-		}
-		printf(NAME ": host controller %zu is `%s'.\n",
-		    class_index, path);
-	}
-
-	return 0;
-}
-
-
-/** @}
- */
Index: uspace/app/usbinfo/main.c
===================================================================
--- uspace/app/usbinfo/main.c	(revision 652f484c07231f351f872ef96e2271b839845dc0)
+++ uspace/app/usbinfo/main.c	(revision 4d20ef71a066a447ad6aa8f601b733d4effdc3ad)
@@ -45,37 +45,5 @@
 #include <usb/usbdevice.h>
 #include <usb/pipes.h>
-#include <usb/host.h>
 #include "usbinfo.h"
-
-static bool try_parse_class_and_address(const char *path,
-    devman_handle_t *out_hc_handle, usb_address_t *out_device_address)
-{
-	size_t class_index;
-	size_t address;
-	int rc;
-	char *ptr;
-
-	rc = str_size_t(path, &ptr, 10, false, &class_index);
-	if (rc != EOK) {
-		return false;
-	}
-	if ((*ptr == ':') || (*ptr == '.')) {
-		ptr++;
-	} else {
-		return false;
-	}
-	rc = str_size_t(ptr, NULL, 10, true, &address);
-	if (rc != EOK) {
-		return false;
-	}
-	rc = usb_ddf_get_hc_handle_by_class(class_index, out_hc_handle);
-	if (rc != EOK) {
-		return false;
-	}
-	if (out_device_address != NULL) {
-		*out_device_address = (usb_address_t) address;
-	}
-	return true;
-}
 
 static bool resolve_hc_handle_and_dev_addr(const char *devpath,
@@ -92,9 +60,4 @@
 	if (str_cmp(devpath, "virt") == 0) {
 		devpath = "/virt/usbhc/usb00_a1/usb00_a2";
-	}
-
-	if (try_parse_class_and_address(devpath,
-	    out_hc_handle, out_device_address)) {
-		return true;
 	}
 
Index: uspace/doc/doxygroups.h
===================================================================
--- uspace/doc/doxygroups.h	(revision 652f484c07231f351f872ef96e2271b839845dc0)
+++ uspace/doc/doxygroups.h	(revision 4d20ef71a066a447ad6aa8f601b733d4effdc3ad)
@@ -220,12 +220,4 @@
 
 	/**
-	 * @defgroup lsusb HelenOS version of lsusb command
-	 * @ingroup usb
-	 * @brief Application for listing USB host controllers.
-	 * @details
-	 * List all found host controllers.
-	 */
-
-	/**
 	 * @defgroup drvusbmid USB multi interface device driver
 	 * @ingroup usb
Index: uspace/drv/ehci-hcd/main.c
===================================================================
--- uspace/drv/ehci-hcd/main.c	(revision 652f484c07231f351f872ef96e2271b839845dc0)
+++ uspace/drv/ehci-hcd/main.c	(revision 4d20ef71a066a447ad6aa8f601b733d4effdc3ad)
@@ -97,12 +97,8 @@
 	}
 	hc_fun->ops = &hc_ops;
+	ret = ddf_fun_bind(hc_fun);
 
-	ret = ddf_fun_bind(hc_fun);
 	CHECK_RET_RETURN(ret,
 	    "Failed to bind EHCI function: %s.\n",
-	    str_error(ret));
-	ret = ddf_fun_add_to_class(hc_fun, USB_HC_DDF_CLASS_NAME);
-	CHECK_RET_RETURN(ret,
-	    "Failed to add EHCI to HC class: %s.\n",
 	    str_error(ret));
 
Index: uspace/drv/ohci/ohci.c
===================================================================
--- uspace/drv/ohci/ohci.c	(revision 652f484c07231f351f872ef96e2271b839845dc0)
+++ uspace/drv/ohci/ohci.c	(revision 4d20ef71a066a447ad6aa8f601b733d4effdc3ad)
@@ -185,8 +185,4 @@
 	    "Failed(%d) to bind OHCI device function: %s.\n",
 	    ret, str_error(ret));
-	ret = ddf_fun_add_to_class(instance->hc_fun, USB_HC_DDF_CLASS_NAME);
-	CHECK_RET_DEST_FUN_RETURN(ret,
-	    "Failed to add OHCI to HC class: %s.\n", str_error(ret));
-
 #undef CHECK_RET_HC_RETURN
 
Index: uspace/drv/uhci-hcd/uhci.c
===================================================================
--- uspace/drv/uhci-hcd/uhci.c	(revision 652f484c07231f351f872ef96e2271b839845dc0)
+++ uspace/drv/uhci-hcd/uhci.c	(revision 4d20ef71a066a447ad6aa8f601b733d4effdc3ad)
@@ -210,8 +210,4 @@
 	    "Failed(%d) to bind UHCI device function: %s.\n",
 	    ret, str_error(ret));
-	ret = ddf_fun_add_to_class(instance->hc_fun, USB_HC_DDF_CLASS_NAME);
-	CHECK_RET_DEST_FUN_RETURN(ret,
-	    "Failed to add UHCI to HC class: %s.\n", str_error(ret));
-
 #undef CHECK_RET_HC_RETURN
 
Index: uspace/drv/vhc/main.c
===================================================================
--- uspace/drv/vhc/main.c	(revision 652f484c07231f351f872ef96e2271b839845dc0)
+++ uspace/drv/vhc/main.c	(revision 4d20ef71a066a447ad6aa8f601b733d4effdc3ad)
@@ -104,11 +104,5 @@
 	}
 
-	rc = ddf_fun_add_to_class(hc, USB_HC_DDF_CLASS_NAME);
-	if (rc != EOK) {
-		usb_log_fatal("Failed to add function to HC class: %s.\n",
-		    str_error(rc));
-		free(data);
-		return rc;
-	}
+	ddf_fun_add_to_class(hc, "usbhc");
 
 	virtual_hub_device_init(hc);
Index: uspace/lib/c/generic/devman.c
===================================================================
--- uspace/lib/c/generic/devman.c	(revision 652f484c07231f351f872ef96e2271b839845dc0)
+++ uspace/lib/c/generic/devman.c	(revision 4d20ef71a066a447ad6aa8f601b733d4effdc3ad)
@@ -374,54 +374,4 @@
 }
 
-int devman_get_device_path(devman_handle_t handle, char *path, size_t path_size)
-{
-	int phone = devman_get_phone(DEVMAN_CLIENT, 0);
-
-	if (phone < 0)
-		return phone;
-
-	async_serialize_start();
-
-	ipc_call_t answer;
-	aid_t req = async_send_1(phone, DEVMAN_DEVICE_GET_DEVICE_PATH,
-	    handle, &answer);
-
-	ipc_call_t data_request_call;
-	aid_t data_request = async_data_read(phone, path, path_size,
-	    &data_request_call);
-	if (data_request == 0) {
-		async_wait_for(req, NULL);
-		async_serialize_end();
-		return ENOMEM;
-	}
-
-	sysarg_t data_request_rc;
-	sysarg_t opening_request_rc;
-	async_wait_for(data_request, &data_request_rc);
-	async_wait_for(req, &opening_request_rc);
-
-	async_serialize_end();
-
-	if (data_request_rc != EOK) {
-		/* Prefer the return code of the opening request. */
-		if (opening_request_rc != EOK) {
-			return (int) opening_request_rc;
-		} else {
-			return (int) data_request_rc;
-		}
-	}
-	if (opening_request_rc != EOK) {
-		return (int) opening_request_rc;
-	}
-
-	path[path_size - 1] = 0;
-
-	if (IPC_GET_ARG2(data_request_call) >= path_size) {
-		return ELIMIT;
-	}
-
-	return EOK;
-}
-
 
 /** @}
Index: uspace/lib/c/include/devman.h
===================================================================
--- uspace/lib/c/include/devman.h	(revision 652f484c07231f351f872ef96e2271b839845dc0)
+++ uspace/lib/c/include/devman.h	(revision 4d20ef71a066a447ad6aa8f601b733d4effdc3ad)
@@ -55,5 +55,4 @@
 extern int devman_device_get_handle_by_class(const char *, const char *,
     devman_handle_t *, unsigned int);
-extern int devman_get_device_path(devman_handle_t, char *, size_t);
 
 extern int devman_add_device_to_class(devman_handle_t, const char *);
Index: uspace/lib/c/include/ipc/devman.h
===================================================================
--- uspace/lib/c/include/ipc/devman.h	(revision 652f484c07231f351f872ef96e2271b839845dc0)
+++ uspace/lib/c/include/ipc/devman.h	(revision 4d20ef71a066a447ad6aa8f601b733d4effdc3ad)
@@ -149,6 +149,5 @@
 typedef enum {
 	DEVMAN_DEVICE_GET_HANDLE = IPC_FIRST_USER_METHOD,
-	DEVMAN_DEVICE_GET_HANDLE_BY_CLASS,
-	DEVMAN_DEVICE_GET_DEVICE_PATH
+	DEVMAN_DEVICE_GET_HANDLE_BY_CLASS
 } client_to_devman_t;
 
Index: uspace/lib/usb/Makefile
===================================================================
--- uspace/lib/usb/Makefile	(revision 652f484c07231f351f872ef96e2271b839845dc0)
+++ uspace/lib/usb/Makefile	(revision 4d20ef71a066a447ad6aa8f601b733d4effdc3ad)
@@ -46,5 +46,4 @@
 	src/hidparser.c \
 	src/hiddescriptor.c \
-	src/host.c \
 	src/hub.c \
 	src/pipepriv.c \
Index: pace/lib/usb/include/usb/host.h
===================================================================
--- uspace/lib/usb/include/usb/host.h	(revision 652f484c07231f351f872ef96e2271b839845dc0)
+++ 	(revision )
@@ -1,46 +1,0 @@
-/*
- * Copyright (c) 2011 Vojtech Horky
- * 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 libusb
- * @{
- */
-/** @file
- * Host controller common functions.
- */
-#ifndef LIBUSB_HOST_H_
-#define LIBUSB_HOST_H_
-
-#include <sys/types.h>
-#include <ipc/devman.h>
-
-int usb_ddf_get_hc_handle_by_class(size_t, devman_handle_t *);
-
-#endif
-/**
- * @}
- */
Index: uspace/lib/usb/include/usb/usb.h
===================================================================
--- uspace/lib/usb/include/usb/usb.h	(revision 652f484c07231f351f872ef96e2271b839845dc0)
+++ uspace/lib/usb/include/usb/usb.h	(revision 4d20ef71a066a447ad6aa8f601b733d4effdc3ad)
@@ -172,7 +172,4 @@
 } usb_packet_id;
 
-/** Class name for USB host controllers. */
-#define USB_HC_DDF_CLASS_NAME "usbhc"
-
 #endif
 /**
Index: pace/lib/usb/src/host.c
===================================================================
--- uspace/lib/usb/src/host.c	(revision 652f484c07231f351f872ef96e2271b839845dc0)
+++ 	(revision )
@@ -1,78 +1,0 @@
-/*
- * Copyright (c) 2011 Vojtech Horky
- * 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 libusb
- * @{
- */
-/**
- * @file
- * Host controller common functions (implementation).
- */
-#include <stdio.h>
-#include <str_error.h>
-#include <errno.h>
-#include <assert.h>
-#include <bool.h>
-#include <usb/host.h>
-#include <usb/descriptor.h>
-#include <devman.h>
-
-/** Get host controller handle by its class index.
- *
- * @param class_index Class index for the host controller.
- * @param hc_handle Where to store the HC handle
- *	(can be NULL for existence test only).
- * @return Error code.
- */
-int usb_ddf_get_hc_handle_by_class(size_t class_index,
-    devman_handle_t *hc_handle)
-{
-	char *class_index_str;
-	devman_handle_t hc_handle_tmp;
-	int rc;
-
-	rc = asprintf(&class_index_str, "%zu", class_index);
-	if (rc < 0) {
-		return ENOMEM;
-	}
-	rc = devman_device_get_handle_by_class("usbhc", class_index_str,
-	    &hc_handle_tmp, 0);
-	free(class_index_str);
-	if (rc != EOK) {
-		return rc;
-	}
-
-	if (hc_handle != NULL) {
-		*hc_handle = hc_handle_tmp;
-	}
-
-	return EOK;
-}
-
-/** @}
- */
Index: uspace/srv/devman/main.c
===================================================================
--- uspace/srv/devman/main.c	(revision 652f484c07231f351f872ef96e2271b839845dc0)
+++ uspace/srv/devman/main.c	(revision 4d20ef71a066a447ad6aa8f601b733d4effdc3ad)
@@ -515,41 +515,4 @@
 }
 
-/** Find device path by its handle. */
-static void devman_get_device_path_by_handle(ipc_callid_t iid,
-    ipc_call_t *icall)
-{
-	devman_handle_t handle = IPC_GET_ARG1(*icall);
-
-	fun_node_t *fun = find_fun_node(&device_tree, handle);
-	if (fun == NULL) {
-		async_answer_0(iid, ENOMEM);
-		return;
-	}
-
-	ipc_callid_t data_callid;
-	size_t data_len;
-	if (!async_data_read_receive(&data_callid, &data_len)) {
-		async_answer_0(iid, EINVAL);
-		return;
-	}
-
-	void *buffer = malloc(data_len);
-	if (buffer == NULL) {
-		async_answer_0(data_callid, ENOMEM);
-		async_answer_0(iid, ENOMEM);
-		return;
-	}
-
-	size_t sent_length = str_size(fun->pathname);
-	if (sent_length > data_len) {
-		sent_length = data_len;
-	}
-
-	async_data_read_finalize(data_callid, fun->pathname, sent_length);
-	async_answer_0(iid, EOK);
-
-	free(buffer);
-}
-
 
 /** Function for handling connections from a client to the device manager. */
@@ -573,7 +536,4 @@
 		case DEVMAN_DEVICE_GET_HANDLE_BY_CLASS:
 			devman_function_get_handle_by_class(callid, &call);
-			break;
-		case DEVMAN_DEVICE_GET_DEVICE_PATH:
-			devman_get_device_path_by_handle(callid, &call);
 			break;
 		default:
