Index: uspace/lib/drv/generic/driver.c
===================================================================
--- uspace/lib/drv/generic/driver.c	(revision dcb7d7cd6753bc17b6e14b5b93793cb4b97abc4d)
+++ uspace/lib/drv/generic/driver.c	(revision f3f97332d56ce8693a0ffcb97b4ffefaa24cd316)
@@ -405,5 +405,6 @@
 				/* The interface has not such method */
 				printf("%s: driver_connection_gen error - "
-				    "invalid interface method (%d).\n",
+				    "invalid interface method "
+				    "(index %" PRIun ").\n",
 				    driver->name, iface_method_idx);
 				async_answer_0(callid, ENOTSUP);
Index: uspace/lib/drv/include/usbhc_iface.h
===================================================================
--- uspace/lib/drv/include/usbhc_iface.h	(revision dcb7d7cd6753bc17b6e14b5b93793cb4b97abc4d)
+++ uspace/lib/drv/include/usbhc_iface.h	(revision f3f97332d56ce8693a0ffcb97b4ffefaa24cd316)
@@ -212,6 +212,4 @@
 /** USB host controller communication interface. */
 typedef struct {
-	int (*reserve_default_address)(ddf_fun_t *, usb_speed_t);
-	int (*release_default_address)(ddf_fun_t *);
 	int (*request_address)(ddf_fun_t *, usb_speed_t, usb_address_t *);
 	int (*bind_address)(ddf_fun_t *, usb_address_t, devman_handle_t);
Index: uspace/lib/usbdev/include/usb/dev/driver.h
===================================================================
--- uspace/lib/usbdev/include/usb/dev/driver.h	(revision dcb7d7cd6753bc17b6e14b5b93793cb4b97abc4d)
+++ uspace/lib/usbdev/include/usb/dev/driver.h	(revision f3f97332d56ce8693a0ffcb97b4ffefaa24cd316)
@@ -168,4 +168,5 @@
 int usb_device_destroy_pipes(ddf_dev_t *, usb_endpoint_mapping_t *, size_t);
 int usb_device_create(ddf_dev_t *, usb_endpoint_description_t **, usb_device_t **, const char **);
+void usb_device_destroy(usb_device_t *);
 
 size_t usb_interface_count_alternates(uint8_t *, size_t, uint8_t);
Index: uspace/lib/usbdev/src/devdrv.c
===================================================================
--- uspace/lib/usbdev/src/devdrv.c	(revision dcb7d7cd6753bc17b6e14b5b93793cb4b97abc4d)
+++ uspace/lib/usbdev/src/devdrv.c	(revision f3f97332d56ce8693a0ffcb97b4ffefaa24cd316)
@@ -533,4 +533,30 @@
 }
 
+/** Destroy instance of a USB device.
+ *
+ * @param dev Device to be destroyed.
+ */
+void usb_device_destroy(usb_device_t *dev)
+{
+	if (dev == NULL) {
+		return;
+	}
+
+	/* Ignore errors and hope for the best. */
+	usb_device_destroy_pipes(dev->ddf_dev, dev->pipes, dev->pipes_count);
+	if (dev->descriptors.configuration != NULL) {
+		free(dev->descriptors.configuration);
+	}
+
+	if (dev->alternate_interfaces != NULL) {
+		if (dev->alternate_interfaces->alternatives != NULL) {
+			free(dev->alternate_interfaces->alternatives);
+		}
+		free(dev->alternate_interfaces);
+	}
+
+	free(dev);
+}
+
 /**
  * @}
