Index: uspace/drv/bus/usb/xhci/hw_struct/regs.h
===================================================================
--- uspace/drv/bus/usb/xhci/hw_struct/regs.h	(revision ce6e001ef0a10ca6ac198e109c24150d184e9954)
+++ uspace/drv/bus/usb/xhci/hw_struct/regs.h	(revision 62ba2cbee5c3230302472cecb3778a285cb40cd4)
@@ -32,4 +32,6 @@
 /** @file
  * Memory-mapped register structures of the xHC.
+ *
+ * The main pr
  */
 
@@ -42,7 +44,4 @@
 
 /*
- * The macros XHCI_REG_* might seem a bit magic. It is the most compact way to
- * provide flexible interface abstracting from the real storage of given
- * register, but to avoid having to specify several constants per register.
  */
 
@@ -134,7 +133,7 @@
 
 	/*
-	 *  0:3  - IST
+	 *  3:0  - IST
 	 *  7:4  - ERST Max
-	 * 21:25 - Max Scratchpad Bufs Hi
+	 * 24:21 - Max Scratchpad Bufs Hi
 	 *    26 - SPR
 	 * 31:27 - Max Scratchpad Bufs Lo
@@ -188,5 +187,7 @@
 #define XHCI_CAP_IST          hcsparams2, 32, RANGE,  3,  0
 #define XHCI_CAP_ERST_MAX     hcsparams2, 32, RANGE,  7,  4
-#define XHCI_CAP_SPR          hcsparams2, 32, RANGE, 26, 26
+#define XHCI_CAP_MAX_SPBUF_LO hcsparams2, 32, RANGE, 25,  4
+#define XHCI_CAP_SPR          hcsparams2, 32,  FLAG, 26
+#define XHCI_CAP_MAX_SPBUF_HI hcsparams2, 32, RANGE, 31, 27
 #define XHCI_CAP_U1EL         hcsparams3, 32, RANGE,  7,  0
 #define XHCI_CAP_U2EL         hcsparams3, 32, RANGE, 31, 16
@@ -203,6 +204,6 @@
 #define XHCI_CAP_SEC          hccparams1, 32,  FLAG, 10
 #define XHCI_CAP_CFC          hccparams1, 32,  FLAG, 11
-#define XHCI_CAP_MAX_PSA_SIZE hccparams1, 32,  FLAG, 12
-#define XHCI_CAP_XECP         hccparams1, 32,  FLAG, 13
+#define XHCI_CAP_MAX_PSA_SIZE hccparams1, 32, RANGE, 15, 12
+#define XHCI_CAP_XECP         hccparams1, 32, RANGE, 31, 16
 #define XHCI_CAP_DBOFF             dboff, 32, FIELD
 #define XHCI_CAP_RTSOFF           rtsoff, 32, FIELD
@@ -450,4 +451,11 @@
 #define XHCI_RT_MFINDEX        mfindex, 32, FIELD
 
+/**
+ * XHCI Doorbel Registers: section 5.6
+ *
+ * These registers are write-only, thus convenience macros are useless.
+ */
+typedef ioport32_t xhci_doorbell_t;
+
 #endif
 /**
