Index: uspace/drv/bus/usb/ehci/ehci_bus.c
===================================================================
--- uspace/drv/bus/usb/ehci/ehci_bus.c	(revision 18092dd3bd2c540b2fb12b107dd0e29c08214bf4)
+++ uspace/drv/bus/usb/ehci/ehci_bus.c	(revision f3ae58b5c7e604cb94bfc012cca168ac37d183c4)
@@ -63,4 +63,10 @@
 }
 
+static void ehci_device_gone(device_t *dev)
+{
+	ehci_bus_t *bus = (ehci_bus_t *) dev->bus;
+	usb2_bus_device_gone(&bus->helper, dev);
+}
+
 /** Creates new hcd endpoint representation.
  */
@@ -163,4 +169,5 @@
 
 	.device_enumerate = ehci_device_enumerate,
+	.device_gone = ehci_device_gone,
 
 	.endpoint_destroy = ehci_endpoint_destroy,
Index: uspace/drv/bus/usb/ohci/ohci_bus.c
===================================================================
--- uspace/drv/bus/usb/ohci/ohci_bus.c	(revision 18092dd3bd2c540b2fb12b107dd0e29c08214bf4)
+++ uspace/drv/bus/usb/ohci/ohci_bus.c	(revision f3ae58b5c7e604cb94bfc012cca168ac37d183c4)
@@ -63,4 +63,10 @@
 }
 
+static void ohci_device_gone(device_t *dev)
+{
+	ohci_bus_t *bus = (ohci_bus_t *) dev->bus;
+	usb2_bus_device_gone(&bus->helper, dev);
+}
+
 /** Creates new hcd endpoint representation.
  */
@@ -172,4 +178,5 @@
 
 	.device_enumerate = ohci_device_enumerate,
+	.device_gone = ohci_device_gone,
 
 	.endpoint_destroy = ohci_endpoint_destroy,
Index: uspace/drv/bus/usb/uhci/hc.c
===================================================================
--- uspace/drv/bus/usb/uhci/hc.c	(revision 18092dd3bd2c540b2fb12b107dd0e29c08214bf4)
+++ uspace/drv/bus/usb/uhci/hc.c	(revision f3ae58b5c7e604cb94bfc012cca168ac37d183c4)
@@ -412,4 +412,10 @@
 }
 
+static void device_gone(device_t *dev)
+{
+	hc_t * const hc = bus_to_hc(dev->bus);
+	usb2_bus_device_gone(&hc->bus_helper, dev);
+}
+
 static int hc_status(bus_t *, uint32_t *);
 static int hc_schedule(usb_transfer_batch_t *);
@@ -420,4 +426,5 @@
 
 	.device_enumerate = device_enumerate,
+	.device_gone = device_gone,
 
 	.endpoint_create = endpoint_create,
