Index: uspace/drv/bus/usb/xhci/endpoint.c
===================================================================
--- uspace/drv/bus/usb/xhci/endpoint.c	(revision 60876fd36c87b1471e4642d8d42e8bcf02d9d066)
+++ uspace/drv/bus/usb/xhci/endpoint.c	(revision cb19590105311e1ee62c673901c4bdaf9d1d8636)
@@ -103,6 +103,11 @@
 	    ep->transfer_type != USB_TRANSFER_INTERRUPT) {
 
-		if (xhci_ep->interval > 0)
-			xhci_ep->interval = 1 << (xhci_ep->interval - 1);
+		// XXX: According to the spec, the interval should be
+		//      from [1, 16]. However, in QEMU, we get 0 here
+		//      (a QEMU bug?).
+		if (xhci_ep->interval == 0)
+			xhci_ep->interval = 8;
+
+		xhci_ep->interval = 1 << (xhci_ep->interval - 1);
 	}
 
