Index: uspace/drv/bus/usb/xhci/bus.c
===================================================================
--- uspace/drv/bus/usb/xhci/bus.c	(revision d46ceb2b135bb1118b9cac35e2589807c28d3c97)
+++ uspace/drv/bus/usb/xhci/bus.c	(revision d37514e8be9c7349ee2709bea78b4524fe9c6ed3)
@@ -280,4 +280,49 @@
 }
 
+static int online_device(bus_t *bus_base, hcd_t *hcd, device_t *dev_base)
+{
+	int err;
+
+	xhci_hc_t *hc = hcd_get_driver_data(hcd);
+	assert(hc);
+
+	xhci_bus_t *bus = bus_to_xhci_bus(bus_base);
+	assert(bus);
+
+	xhci_device_t *dev = xhci_device_get(dev_base);
+	assert(dev);
+
+	// TODO: Prepare the device for use. Reset? Configure?
+
+	if ((err = ddf_fun_online(dev_base->fun))) {
+		return err;
+	}
+
+	return EOK;
+}
+
+static int offline_device(bus_t *bus_base, hcd_t *hcd, device_t *dev_base)
+{
+	int err;
+
+	xhci_hc_t *hc = hcd_get_driver_data(hcd);
+	assert(hc);
+
+	xhci_bus_t *bus = bus_to_xhci_bus(bus_base);
+	assert(bus);
+
+	xhci_device_t *dev = xhci_device_get(dev_base);
+	assert(dev);
+
+	/* Tear down all drivers working with the device. */
+	if ((err = ddf_fun_offline(dev_base->fun))) {
+		return err;
+	}
+
+	// TODO: We want to keep the device addressed. Deconfigure?
+
+	return EOK;
+}
+
 static endpoint_t *create_endpoint(bus_t *base)
 {
@@ -442,4 +487,7 @@
 	.remove_device = remove_device,
 
+	.online_device = online_device,
+	.offline_device = offline_device,
+
 	.create_endpoint = create_endpoint,
 	.destroy_endpoint = destroy_endpoint,
Index: uspace/drv/bus/usb/xhci/main.c
===================================================================
--- uspace/drv/bus/usb/xhci/main.c	(revision d46ceb2b135bb1118b9cac35e2589807c28d3c97)
+++ uspace/drv/bus/usb/xhci/main.c	(revision d37514e8be9c7349ee2709bea78b4524fe9c6ed3)
@@ -164,7 +164,18 @@
 }
 
+static int xhci_fun_online(ddf_fun_t *fun)
+{
+	return hcd_ddf_device_online(fun);
+}
+
+static int xhci_fun_offline(ddf_fun_t *fun)
+{
+	return hcd_ddf_device_offline(fun);
+}
 
 static const driver_ops_t xhci_driver_ops = {
 	.dev_add = xhci_dev_add,
+	.fun_online = xhci_fun_online,
+	.fun_offline = xhci_fun_offline
 };
 
