Index: uspace/lib/usbhost/include/usb/host/hcd.h
===================================================================
--- uspace/lib/usbhost/include/usb/host/hcd.h	(revision d9b2c73fe60c8358e376ab8fb1054d86149b1063)
+++ uspace/lib/usbhost/include/usb/host/hcd.h	(revision a720ff6651111e89069db1b10178120b9b32e4b3)
@@ -107,5 +107,5 @@
     const match_id_list_t *mids);
 
-int hcd_setup_device(ddf_dev_t *device);
+int hcd_setup_device(ddf_dev_t *device, ddf_fun_t **fun);
 int hcd_setup_hub(hcd_t *instance, usb_address_t *address, ddf_dev_t *dev);
 
Index: uspace/lib/usbhost/src/hcd.c
===================================================================
--- uspace/lib/usbhost/src/hcd.c	(revision d9b2c73fe60c8358e376ab8fb1054d86149b1063)
+++ uspace/lib/usbhost/src/hcd.c	(revision a720ff6651111e89069db1b10178120b9b32e4b3)
@@ -307,5 +307,5 @@
  *  - registers interrupt handler
  */
-int hcd_setup_device(ddf_dev_t *device)
+int hcd_setup_device(ddf_dev_t *device, ddf_fun_t **hc_fun)
 {
 	if (device == NULL)
@@ -355,4 +355,6 @@
 
 	/* HC should be ok at this point (except it can't do anything) */
+	if (hc_fun)
+		*hc_fun = instance->hc_fun;
 
 	return EOK;
