Index: uspace/drv/bus/usb/xhci/hc.c
===================================================================
--- uspace/drv/bus/usb/xhci/hc.c	(revision e6b0dba6a456ca7c586d3f0536b65fce1b11d24e)
+++ uspace/drv/bus/usb/xhci/hc.c	(revision c9d905f24da71d7b3de3a02c52a7f4689e544c22)
@@ -327,5 +327,5 @@
 	usb_log_debug2("LEGSUP: bios: %x, os: %x", hc->legsup->sem_bios, hc->legsup->sem_os);
 	XHCI_REG_WR(hc->legsup, XHCI_LEGSUP_SEM_OS, 1);
-	for (int i = 0; i<1001; i++) {
+	for (int i = 0; i<=(XHCI_LEGSUP_BIOS_TIMEOUT_US/XHCI_LEGSUP_POLLING_DELAY_1MS); i++) {
 		usb_log_debug2("LEGSUP: elapsed: %i ms, bios: %x, os: %x", i,
 			XHCI_REG_RD(hc->legsup, XHCI_LEGSUP_SEM_BIOS),
@@ -335,5 +335,5 @@
 			return EOK;
 		}
-		async_usleep(1000);
+		async_usleep(XHCI_LEGSUP_POLLING_DELAY_1MS);
 	}
 	usb_log_error("BIOS did not release XHCI legacy hold!\n");
Index: uspace/drv/bus/usb/xhci/hw_struct/regs.h
===================================================================
--- uspace/drv/bus/usb/xhci/hw_struct/regs.h	(revision e6b0dba6a456ca7c586d3f0536b65fce1b11d24e)
+++ uspace/drv/bus/usb/xhci/hw_struct/regs.h	(revision c9d905f24da71d7b3de3a02c52a7f4689e544c22)
@@ -581,4 +581,7 @@
 #define XHCI_LEGSUP_SEM_OS	sem_os, 8, FLAG, 0
 
+#define XHCI_LEGSUP_POLLING_DELAY_1MS	1000
+#define XHCI_LEGSUP_BIOS_TIMEOUT_US	1000000 /* 4.22.1 BIOS may take up to 1 second to release the device */
+
 #endif
 /**
