Index: uspace/drv/bus/usb/uhci/main.c
===================================================================
--- uspace/drv/bus/usb/uhci/main.c	(revision 8fc61c8b7f468664875b0d491f8e93d95252bc1c)
+++ uspace/drv/bus/usb/uhci/main.c	(revision 2dbfe4497342c4c6132143d23bc5b2c8239479cf)
@@ -106,4 +106,13 @@
 	return rc;
 }
+static const ddf_hc_driver_t uhci_hc_driver = {
+        .claim = disable_legacy,
+        .hc_speed = USB_SPEED_FULL,
+        .irq_code_gen = uhci_hc_gen_irq_code,
+        .init = uhci_driver_init,
+        .fini = uhci_driver_fini,
+        .name = "UHCI"
+};
+
 
 /** Initialize a new ddf driver instance for uhci hc and hub.
@@ -116,26 +125,5 @@
 	usb_log_debug2("uhci_dev_add() called\n");
 	assert(device);
-
-	int ret = disable_legacy(device);
-	if (ret != EOK) {
-		usb_log_error("Failed to disable legacy USB: %s.\n",
-		    str_error(ret));
-		return ret;
-	}
-
-
-	ret = ddf_hcd_device_setup_all(device, USB_SPEED_FULL,
-	    BANDWIDTH_AVAILABLE_USB11, bandwidth_count_usb11,
-	    ddf_hcd_gen_irq_handler, uhci_hc_gen_irq_code,
-	    uhci_driver_init, uhci_driver_fini);
-	if (ret != EOK) {
-		usb_log_error("Failed to initialize UHCI driver: %s.\n",
-		    str_error(ret));
-	} else {
-		usb_log_info("Controlling new UHCI device '%s'.\n",
-		    ddf_dev_get_name(device));
-	}
-
-	return ret;
+	return hcd_ddf_add_hc(device, &uhci_hc_driver);
 }
 
