Index: uspace/drv/bus/usb/xhci/hc.c
===================================================================
--- uspace/drv/bus/usb/xhci/hc.c	(revision 6f3700d7eabdeba5c94a422220fe7b8461ef97ed)
+++ uspace/drv/bus/usb/xhci/hc.c	(revision 4abb13411aaa9eff239874129b4c3dbdd6684e64)
@@ -401,7 +401,9 @@
 	XHCI_REG_WR(hc->op_regs, XHCI_OP_MAX_SLOTS_EN, hc->max_slots);
 
-	uint64_t crptr = xhci_trb_ring_get_dequeue_ptr(&hc->cr.trb_ring);
-	XHCI_REG_WR(hc->op_regs, XHCI_OP_CRCR_LO, LOWER32(crptr) >> 6);
-	XHCI_REG_WR(hc->op_regs, XHCI_OP_CRCR_HI, UPPER32(crptr));
+	uint64_t crcr = xhci_trb_ring_get_dequeue_ptr(&hc->cr.trb_ring);
+	if (hc->cr.trb_ring.pcs)
+		crcr |= XHCI_REG_MASK(XHCI_OP_RCS);
+	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_interrupter_regs_t *intr0 = &hc->rt_regs->ir[0];
Index: uspace/drv/bus/usb/xhci/hw_struct/regs.h
===================================================================
--- uspace/drv/bus/usb/xhci/hw_struct/regs.h	(revision 6f3700d7eabdeba5c94a422220fe7b8461ef97ed)
+++ uspace/drv/bus/usb/xhci/hw_struct/regs.h	(revision 4abb13411aaa9eff239874129b4c3dbdd6684e64)
@@ -409,5 +409,7 @@
 #define XHCI_OP_CA             crcr_lo, 32,  FLAG, 2
 #define XHCI_OP_CRR            crcr_lo, 32,  FLAG, 3
-#define XHCI_OP_CRCR_LO        crcr_lo, 32, RANGE, 31, 6
+/* This shall be RANGE, 6, 0, but the value containing CR pointer and RCS flag
+ * must be written at once. */
+#define XHCI_OP_CRCR_LO        crcr_lo, 32, FIELD
 #define XHCI_OP_CRCR_HI        crcr_hi, 32, FIELD
 #define XHCI_OP_DCBAAP_LO    dcbaap_lo, 32, FIELD
