Index: uspace/drv/bus/usb/xhci/hc.c
===================================================================
--- uspace/drv/bus/usb/xhci/hc.c	(revision 8ea7459db801b3b4eb7340519158b2f47b54d14b)
+++ uspace/drv/bus/usb/xhci/hc.c	(revision f270ecb24851cd4fe8c355f8915b678a646c564c)
@@ -657,8 +657,8 @@
 }
 
-int hc_address_device(xhci_hc_t *hc, uint32_t slot_id, xhci_input_ctx_t *ictx)
+int hc_disable_slot(xhci_hc_t *hc, uint32_t slot_id)
 {
 	assert(hc);
-	
+
 	int err;
 	xhci_cmd_t cmd;
@@ -667,4 +667,24 @@
 	cmd.slot_id = slot_id;
 
+	if ((err = xhci_send_disable_slot_command(hc, &cmd)) != EOK)
+		return err;
+
+	if ((err = xhci_cmd_wait(&cmd, XHCI_DEFAULT_TIMEOUT)) != EOK)
+		return err;
+
+	xhci_cmd_fini(&cmd);
+	return EOK;
+}
+
+int hc_address_device(xhci_hc_t *hc, uint32_t slot_id, xhci_input_ctx_t *ictx)
+{
+	assert(hc);
+
+	int err;
+	xhci_cmd_t cmd;
+	xhci_cmd_init(&cmd);
+
+	cmd.slot_id = slot_id;
+
 	if ((err = xhci_send_address_device_command(hc, &cmd, ictx)) != EOK)
 		return err;
Index: uspace/drv/bus/usb/xhci/hc.h
===================================================================
--- uspace/drv/bus/usb/xhci/hc.h	(revision 8ea7459db801b3b4eb7340519158b2f47b54d14b)
+++ uspace/drv/bus/usb/xhci/hc.h	(revision f270ecb24851cd4fe8c355f8915b678a646c564c)
@@ -99,4 +99,5 @@
 int hc_ring_doorbell(xhci_hc_t *, unsigned, unsigned);
 int hc_enable_slot(xhci_hc_t *, uint32_t *);
+int hc_disable_slot(xhci_hc_t *, uint32_t);
 int hc_address_device(xhci_hc_t *, uint32_t, xhci_input_ctx_t *);
 
