Index: uspace/drv/bus/usb/uhci/hc.c
===================================================================
--- uspace/drv/bus/usb/uhci/hc.c	(revision 832cbe7f6539badd99e8e5715f4a59e044c65c44)
+++ uspace/drv/bus/usb/uhci/hc.c	(revision 8300c7235387052a3ffb96accd6cc6528ea75b5b)
@@ -1,3 +1,4 @@
 /*
+ * Copyright (c) 2025 Jiri Svoboda
  * Copyright (c) 2011 Jan Vesely
  * Copyright (c) 2018 Ondrej Hlavaty, Petr Manek
@@ -267,4 +268,27 @@
 }
 
+/** Quiesce host controller.
+ *
+ * @param[in] instance Host controller structure to use.
+ */
+int hc_quiesce(hc_device_t *hcd)
+{
+	hc_t *instance = hcd_to_hc(hcd);
+	uhci_regs_t *registers = instance->registers;
+
+	/* Reset everything, who knows what touched it before us */
+	pio_write_16(&registers->usbcmd, UHCI_CMD_GLOBAL_RESET);
+	fibril_usleep(50000); /* 50ms according to USB spec(root hub reset) */
+	pio_write_16(&registers->usbcmd, 0);
+
+	/* Reset hc, all states and counters. Hope that hw is not broken */
+	pio_write_16(&registers->usbcmd, UHCI_CMD_HCRESET);
+	do {
+		fibril_usleep(10);
+	} while ((pio_read_16(&registers->usbcmd) & UHCI_CMD_HCRESET) != 0);
+
+	return EOK;
+}
+
 /** Initialize UHCI hc hw resources.
  *
Index: uspace/drv/bus/usb/uhci/hc.h
===================================================================
--- uspace/drv/bus/usb/uhci/hc.h	(revision 832cbe7f6539badd99e8e5715f4a59e044c65c44)
+++ uspace/drv/bus/usb/uhci/hc.h	(revision 8300c7235387052a3ffb96accd6cc6528ea75b5b)
@@ -1,3 +1,4 @@
 /*
+ * Copyright (c) 2025 Jiri Svoboda
  * Copyright (c) 2011 Jan Vesely
  * Copyright (c) 2018 Ondrej Hlavaty
@@ -164,4 +165,5 @@
 extern errno_t hc_setup_roothub(hc_device_t *);
 extern errno_t hc_gone(hc_device_t *);
+extern errno_t hc_quiesce(hc_device_t *);
 
 #endif
Index: uspace/drv/bus/usb/uhci/main.c
===================================================================
--- uspace/drv/bus/usb/uhci/main.c	(revision 832cbe7f6539badd99e8e5715f4a59e044c65c44)
+++ uspace/drv/bus/usb/uhci/main.c	(revision 8300c7235387052a3ffb96accd6cc6528ea75b5b)
@@ -1,3 +1,4 @@
 /*
+ * Copyright (c) 2025 Jiri Svoboda
  * Copyright (c) 2011 Vojtech Horky, Jan Vesely
  * Copyright (c) 2018 Ondrej Hlavaty, Petr Manek
@@ -61,4 +62,5 @@
 	.setup_root_hub = hc_setup_roothub,
 	.hc_gone = hc_gone,
+	.hc_quiesce = hc_quiesce
 };
 
Index: uspace/drv/bus/usb/xhci/hc.c
===================================================================
--- uspace/drv/bus/usb/xhci/hc.c	(revision 832cbe7f6539badd99e8e5715f4a59e044c65c44)
+++ uspace/drv/bus/usb/xhci/hc.c	(revision 8300c7235387052a3ffb96accd6cc6528ea75b5b)
@@ -1,3 +1,4 @@
 /*
+ * Copyright (c) 2025 Jiri Svoboda
  * Copyright (c) 2018 Ondrej Hlavaty, Petr Manek, Jaroslav Jindrak, Jan Hrach, Michal Staruch
  * All rights reserved.
@@ -746,4 +747,14 @@
 }
 
+/**
+ * Quiesce host controller.
+ */
+errno_t hc_quiesce(xhci_hc_t *hc)
+{
+	hc_stop(hc);
+	usb_log_info("HC quiesced.");
+	return EOK;
+}
+
 unsigned hc_speed_to_psiv(usb_speed_t speed)
 {
Index: uspace/drv/bus/usb/xhci/hc.h
===================================================================
--- uspace/drv/bus/usb/xhci/hc.h	(revision 832cbe7f6539badd99e8e5715f4a59e044c65c44)
+++ uspace/drv/bus/usb/xhci/hc.h	(revision 8300c7235387052a3ffb96accd6cc6528ea75b5b)
@@ -1,3 +1,4 @@
 /*
+ * Copyright (c) 2025 Jiri Svoboda
  * Copyright (c) 2018 Ondrej Hlavaty, Jan Hrach, Jaroslav Jindrak, Petr Manek
  * All rights reserved.
@@ -119,4 +120,5 @@
 extern errno_t hc_start(xhci_hc_t *);
 extern void hc_fini(xhci_hc_t *);
+extern errno_t hc_quiesce(xhci_hc_t *);
 
 extern void hc_ring_doorbell(xhci_hc_t *, unsigned, unsigned);
Index: uspace/drv/bus/usb/xhci/main.c
===================================================================
--- uspace/drv/bus/usb/xhci/main.c	(revision 832cbe7f6539badd99e8e5715f4a59e044c65c44)
+++ uspace/drv/bus/usb/xhci/main.c	(revision 8300c7235387052a3ffb96accd6cc6528ea75b5b)
@@ -1,3 +1,4 @@
 /*
+ * Copyright (c) 2025 Jiri Svoboda
  * Copyright (c) 2018 Ondrej Hlavaty, Petr Manek
  * All rights reserved.
@@ -94,4 +95,11 @@
 }
 
+static errno_t hcd_hc_quiesce(hc_device_t *hcd)
+{
+	xhci_hc_t *hc = hcd_to_hc(hcd);
+	hc_quiesce(hc);
+	return EOK;
+}
+
 static const hc_driver_t xhci_driver = {
 	.name = NAME,
@@ -103,4 +111,5 @@
 	.start = hcd_start,
 	.hc_gone = hcd_hc_gone,
+	.hc_quiesce = hcd_hc_quiesce
 };
 
