Index: uspace/lib/drv/generic/remote_usb.c
===================================================================
--- uspace/lib/drv/generic/remote_usb.c	(revision 0a46c41e3250de797aef059df000d7cfc37f1017)
+++ uspace/lib/drv/generic/remote_usb.c	(revision b68b27909054c76dc019f8747e5deced7215822a)
@@ -41,8 +41,10 @@
 
 static void remote_usb_get_hc_handle(device_t *, void *, ipc_callid_t, ipc_call_t *);
+static void remote_usb_get_address(device_t *, void *, ipc_callid_t, ipc_call_t *);
 //static void remote_usb(device_t *, void *, ipc_callid_t, ipc_call_t *);
 
 /** Remote USB interface operations. */
 static remote_iface_func_ptr_t remote_usb_iface_ops [] = {
+	remote_usb_get_address,
 	remote_usb_get_hc_handle
 };
@@ -55,4 +57,26 @@
 	.methods = remote_usb_iface_ops
 };
+
+
+void remote_usb_get_address(device_t *device, void *iface,
+    ipc_callid_t callid, ipc_call_t *call)
+{
+	usb_iface_t *usb_iface = (usb_iface_t *) iface;
+
+	if (usb_iface->get_address == NULL) {
+		async_answer_0(callid, ENOTSUP);
+		return;
+	}
+
+	devman_handle_t handle = DEV_IPC_GET_ARG1(*call);
+
+	usb_address_t address;
+	int rc = usb_iface->get_address(device, handle, &address);
+	if (rc != EOK) {
+		async_answer_0(callid, rc);
+	} else {
+		async_answer_1(callid, EOK, address);
+	}
+}
 
 
Index: uspace/lib/drv/generic/remote_usbhc.c
===================================================================
--- uspace/lib/drv/generic/remote_usbhc.c	(revision 0a46c41e3250de797aef059df000d7cfc37f1017)
+++ uspace/lib/drv/generic/remote_usbhc.c	(revision b68b27909054c76dc019f8747e5deced7215822a)
@@ -43,5 +43,4 @@
 #define HACK_MAX_PACKET_SIZE_INTERRUPT_IN 4
 
-static void remote_usbhc_get_address(device_t *, void *, ipc_callid_t, ipc_call_t *);
 static void remote_usbhc_interrupt_out(device_t *, void *, ipc_callid_t, ipc_call_t *);
 static void remote_usbhc_interrupt_in(device_t *, void *, ipc_callid_t, ipc_call_t *);
@@ -59,6 +58,4 @@
 /** Remote USB host controller interface operations. */
 static remote_iface_func_ptr_t remote_usbhc_iface_ops [] = {
-	remote_usbhc_get_address,
-
 	remote_usbhc_reserve_default_address,
 	remote_usbhc_release_default_address,
@@ -124,25 +121,4 @@
 
 	return trans;
-}
-
-void remote_usbhc_get_address(device_t *device, void *iface,
-    ipc_callid_t callid, ipc_call_t *call)
-{
-	usbhc_iface_t *usb_iface = (usbhc_iface_t *) iface;
-
-	if (!usb_iface->tell_address) {
-		async_answer_0(callid, ENOTSUP);
-		return;
-	}
-
-	devman_handle_t handle = DEV_IPC_GET_ARG1(*call);
-
-	usb_address_t address;
-	int rc = usb_iface->tell_address(device, handle, &address);
-	if (rc != EOK) {
-		async_answer_0(callid, rc);
-	} else {
-		async_answer_1(callid, EOK, address);
-	}
 }
 
Index: uspace/lib/drv/include/usb_iface.h
===================================================================
--- uspace/lib/drv/include/usb_iface.h	(revision 0a46c41e3250de797aef059df000d7cfc37f1017)
+++ uspace/lib/drv/include/usb_iface.h	(revision b68b27909054c76dc019f8747e5deced7215822a)
@@ -41,4 +41,15 @@
 #include <usb/usb.h>
 typedef enum {
+	/** Tell USB address assigned to device.
+	 * Parameters:
+	 * - devman handle id
+	 * Answer:
+	 * - EINVAL - unknown handle or handle not managed by this driver
+	 * - ENOTSUP - operation not supported (shall not happen)
+	 * - arbitrary error code if returned by remote implementation
+	 * - EOK - handle found, first parameter contains the USB address
+	 */
+	IPC_M_USB_GET_ADDRESS,
+
 	/** Tell devman handle of device host controller.
 	 * Parameters:
@@ -55,4 +66,5 @@
 /** USB device communication interface. */
 typedef struct {
+	int (*get_address)(device_t *, devman_handle_t, usb_address_t *);
 	int (*get_hc_handle)(device_t *, devman_handle_t *);
 } usb_iface_t;
Index: uspace/lib/drv/include/usbhc_iface.h
===================================================================
--- uspace/lib/drv/include/usbhc_iface.h	(revision 0a46c41e3250de797aef059df000d7cfc37f1017)
+++ uspace/lib/drv/include/usbhc_iface.h	(revision b68b27909054c76dc019f8747e5deced7215822a)
@@ -85,16 +85,4 @@
  */
 typedef enum {
-	/** Tell USB address assigned to device.
-	 * Parameters:
-	 * - devman handle id
-	 * Answer:
-	 * - EINVAL - unknown handle or handle not managed by this driver
-	 * - ENOTSUP - operation not supported by HC (shall not happen)
-	 * - arbitrary error code if returned by remote implementation
-	 * - EOK - handle found, first parameter contains the USB address
-	 */
-	IPC_M_USBHC_GET_ADDRESS,
-
-
 	/** Reserve usage of default address.
 	 * This call informs the host controller that the caller will be
@@ -206,6 +194,4 @@
 /** USB host controller communication interface. */
 typedef struct {
-	int (*tell_address)(device_t *, devman_handle_t, usb_address_t *);
-
 	int (*reserve_default_address)(device_t *, usb_speed_t);
 	int (*release_default_address)(device_t *);
