Index: uspace/drv/bus/usb/xhci/hc.c
===================================================================
--- uspace/drv/bus/usb/xhci/hc.c	(revision 69a93d02dbe4ec03c8333ae8f68c87ae37a224b7)
+++ uspace/drv/bus/usb/xhci/hc.c	(revision 665368c6c3b26ed24d28915e3fc1f040da36e28d)
@@ -192,4 +192,5 @@
 	hc->ac64 = XHCI_REG_RD(hc->cap_regs, XHCI_CAP_AC64);
 	hc->max_slots = XHCI_REG_RD(hc->cap_regs, XHCI_CAP_MAX_SLOTS);
+	hc->wrap_count = 0;
 	unsigned ist = XHCI_REG_RD(hc->cap_regs, XHCI_CAP_IST);
 	hc->ist = (ist & 0x10 >> 1) * (ist & 0xf);
@@ -377,5 +378,5 @@
 
 /**
- * Ask the xHC to reset its state. Implements sequence 
+ * Ask the xHC to reset its state. Implements sequence
  */
 static int hc_reset(xhci_hc_t *hc)
@@ -422,4 +423,6 @@
 	XHCI_REG_WR(hc->op_regs, XHCI_OP_CRCR_LO, LOWER32(crcr));
 	XHCI_REG_WR(hc->op_regs, XHCI_OP_CRCR_HI, UPPER32(crcr));
+
+	XHCI_REG_SET(hc->op_regs, XHCI_OP_EWE, 1);
 
 	xhci_interrupter_regs_t *intr0 = &hc->rt_regs->ir[0];
@@ -432,4 +435,5 @@
 	XHCI_REG_WR(intr0, XHCI_INTR_ERSTBA_HI, UPPER32(erstptr));
 
+
 	if (irq) {
 		XHCI_REG_SET(intr0, XHCI_INTR_IE, 1);
@@ -470,4 +474,10 @@
 }
 
+static int xhci_handle_mfindex_wrap_event(xhci_hc_t *hc, xhci_trb_t *trb)
+{
+	++hc->wrap_count;
+	return EOK;
+}
+
 typedef int (*event_handler) (xhci_hc_t *, xhci_trb_t *trb);
 
@@ -476,4 +486,5 @@
 	[XHCI_TRB_TYPE_PORT_STATUS_CHANGE_EVENT] = &xhci_rh_handle_port_status_change_event,
 	[XHCI_TRB_TYPE_TRANSFER_EVENT] = &xhci_handle_transfer_event,
+	[XHCI_TRB_TYPE_MFINDEX_WRAP_EVENT] = &xhci_handle_mfindex_wrap_event,
 };
 
@@ -650,5 +661,5 @@
  * Issue a Disable Slot command for a slot occupied by device.
  *
- * Frees the device context 
+ * Frees the device context
  */
 int hc_disable_slot(xhci_hc_t *hc, xhci_device_t *dev)
Index: uspace/drv/bus/usb/xhci/hc.h
===================================================================
--- uspace/drv/bus/usb/xhci/hc.h	(revision 69a93d02dbe4ec03c8333ae8f68c87ae37a224b7)
+++ uspace/drv/bus/usb/xhci/hc.h	(revision 665368c6c3b26ed24d28915e3fc1f040da36e28d)
@@ -84,4 +84,5 @@
 	unsigned max_slots;
 	bool ac64;
+	uint32_t wrap_count;	/** Amount of mfindex wraps HC has done */
 	unsigned ist;			/**< IST in microframes */
 
