Index: uspace/drv/bus/usb/ehci/main.c
===================================================================
--- uspace/drv/bus/usb/ehci/main.c	(revision cb69854fb7d076b075ced86a6da24ecd2f6e04e9)
+++ uspace/drv/bus/usb/ehci/main.c	(revision 366e9b6e9dc1eec138a5ceadc18883937ba67764)
@@ -63,4 +63,5 @@
 	.claim = ehci_driver_claim,
 	.start = ehci_driver_start,
+	.setup_root_hub = hcd_setup_virtual_root_hub,
 	.fini = ehci_driver_fini,
 	.ops = {
Index: uspace/drv/bus/usb/ohci/main.c
===================================================================
--- uspace/drv/bus/usb/ohci/main.c	(revision cb69854fb7d076b075ced86a6da24ecd2f6e04e9)
+++ uspace/drv/bus/usb/ohci/main.c	(revision 366e9b6e9dc1eec138a5ceadc18883937ba67764)
@@ -58,4 +58,5 @@
         .claim = ohci_driver_claim,
         .start = ohci_driver_start,
+	.setup_root_hub = hcd_setup_virtual_root_hub,
         .fini = ohci_driver_fini,
         .name = "OHCI",
Index: uspace/drv/bus/usb/uhci/main.c
===================================================================
--- uspace/drv/bus/usb/uhci/main.c	(revision cb69854fb7d076b075ced86a6da24ecd2f6e04e9)
+++ uspace/drv/bus/usb/uhci/main.c	(revision 366e9b6e9dc1eec138a5ceadc18883937ba67764)
@@ -60,4 +60,5 @@
         .init = uhci_driver_init,
         .start = uhci_driver_start,
+	.setup_root_hub = hcd_setup_virtual_root_hub,
         .fini = uhci_driver_fini,
         .name = "UHCI",
Index: uspace/drv/bus/usb/vhc/main.c
===================================================================
--- uspace/drv/bus/usb/vhc/main.c	(revision cb69854fb7d076b075ced86a6da24ecd2f6e04e9)
+++ uspace/drv/bus/usb/vhc/main.c	(revision 366e9b6e9dc1eec138a5ceadc18883937ba67764)
@@ -111,5 +111,5 @@
 	 * needs to be ready at this time.
 	 */
-	ret = hcd_ddf_setup_root_hub(dev);
+	ret = hcd_setup_virtual_root_hub(dev);
 	if (ret != EOK) {
 		usb_log_error("Failed to init VHC root hub: %s\n",
Index: uspace/lib/usbhost/include/usb/host/ddf_helpers.h
===================================================================
--- uspace/lib/usbhost/include/usb/host/ddf_helpers.h	(revision cb69854fb7d076b075ced86a6da24ecd2f6e04e9)
+++ uspace/lib/usbhost/include/usb/host/ddf_helpers.h	(revision 366e9b6e9dc1eec138a5ceadc18883937ba67764)
@@ -49,4 +49,5 @@
 typedef int (*claim_t)(hcd_t *, ddf_dev_t *);
 typedef int (*driver_start_t)(hcd_t *, bool irq);
+typedef int (*setup_root_hub_t)(ddf_dev_t *);
 
 typedef void (*driver_stop_t)(hcd_t *);
@@ -68,4 +69,5 @@
 	irq_code_gen_t irq_code_gen;       /**< Generate IRQ handling code */
 	driver_start_t start;              /**< Start the HC */
+	setup_root_hub_t setup_root_hub;   /**< Setup the root hub */
 
 	/* Destruction sequence: */
@@ -78,5 +80,6 @@
 int hcd_ddf_setup_hc(ddf_dev_t *device);
 void hcd_ddf_clean_hc(ddf_dev_t *device);
-int hcd_ddf_setup_root_hub(ddf_dev_t *device);
+
+int hcd_setup_virtual_root_hub(ddf_dev_t *);
 
 hcd_t *dev_to_hcd(ddf_dev_t *dev);
Index: uspace/lib/usbhost/src/ddf_helpers.c
===================================================================
--- uspace/lib/usbhost/src/ddf_helpers.c	(revision cb69854fb7d076b075ced86a6da24ecd2f6e04e9)
+++ uspace/lib/usbhost/src/ddf_helpers.c	(revision 366e9b6e9dc1eec138a5ceadc18883937ba67764)
@@ -617,5 +617,5 @@
  * @return Error code
  */
-int hcd_ddf_setup_root_hub(ddf_dev_t *device)
+int hcd_setup_virtual_root_hub(ddf_dev_t *device)
 {
 	assert(device);
@@ -919,5 +919,6 @@
 	 * needs to be ready at this time.
 	 */
-	ret = hcd_ddf_setup_root_hub(device);
+	if (driver->setup_root_hub)
+		ret = driver->setup_root_hub(device);
 	if (ret != EOK) {
 		usb_log_error("Failed to setup HC root hub: %s.\n",
