Index: uspace/lib/usbhost/include/usb/host/ddf_helpers.h
===================================================================
--- uspace/lib/usbhost/include/usb/host/ddf_helpers.h	(revision ba4a03a5128c12a813b86aec7796e57c21dffead)
+++ uspace/lib/usbhost/include/usb/host/ddf_helpers.h	(revision 2ef8023ab6ae067070010a24c97a48158b82d6d3)
@@ -58,4 +58,11 @@
     interrupt_handler_t handler,
     int (*gen_irq_code)(irq_code_t *, const hw_res_list_parsed_t *));
+void ddf_hcd_gen_irq_handler(ddf_dev_t *dev, ipc_callid_t iid, ipc_call_t *call);
+int ddf_hcd_device_setup_all(ddf_dev_t *device, usb_speed_t speed, size_t bw,
+    bw_count_func_t bw_count,
+    interrupt_handler_t irq_handler,
+    int (*gen_irq_code)(irq_code_t *, const hw_res_list_parsed_t *hw_res),
+    int (*driver_init)(hcd_t *, const hw_res_list_parsed_t *, bool),
+    void (*driver_fini)(hcd_t *));
 
 #endif
Index: uspace/lib/usbhost/include/usb/host/hcd.h
===================================================================
--- uspace/lib/usbhost/include/usb/host/hcd.h	(revision ba4a03a5128c12a813b86aec7796e57c21dffead)
+++ uspace/lib/usbhost/include/usb/host/hcd.h	(revision 2ef8023ab6ae067070010a24c97a48158b82d6d3)
@@ -51,4 +51,5 @@
 typedef int (*ep_add_hook_t)(hcd_t *, endpoint_t *);
 typedef void (*ep_remove_hook_t)(hcd_t *, endpoint_t *);
+typedef void (*interrupt_hook_t)(hcd_t *, uint32_t);
 
 typedef struct {
@@ -61,4 +62,6 @@
 	/** Hook called upon removing of an endpoint. */
 	ep_remove_hook_t ep_remove_hook;
+	/** Hook to be called on device interrupt, passes ARG1 */
+	interrupt_hook_t irq_hook;
 } hc_driver_t;
 
@@ -76,5 +79,6 @@
 
 static inline void hcd_set_implementation(hcd_t *hcd, void *data,
-    schedule_hook_t schedule, ep_add_hook_t add_hook, ep_remove_hook_t rem_hook)
+    schedule_hook_t schedule, ep_add_hook_t add_hook, ep_remove_hook_t rem_hook,
+    interrupt_hook_t irq_hook)
 {
 	assert(hcd);
@@ -83,4 +87,5 @@
 	hcd->driver.ep_add_hook = add_hook;
 	hcd->driver.ep_remove_hook = rem_hook;
+	hcd->driver.irq_hook = irq_hook;
 }
 
