|
@@ -46,15 +46,13 @@
|
|
|
#define TRANSFER_LIMIT 256
|
|
|
|
|
|
#define LEN_CAP 0x40
|
|
|
-#define LEN_OPER (0x400 + 0x10 * MAXPORTS)
|
|
|
-#define LEN_RUNTIME ((MAXINTRS + 1) * 0x20)
|
|
|
-#define LEN_DOORBELL ((MAXSLOTS + 1) * 0x20)
|
|
|
+#define LEN_OPER (0x400 + 0x10 * XHCI_MAXPORTS)
|
|
|
+#define LEN_RUNTIME ((XHCI_MAXINTRS + 1) * 0x20)
|
|
|
+#define LEN_DOORBELL ((XHCI_MAXSLOTS + 1) * 0x20)
|
|
|
|
|
|
#define OFF_OPER LEN_CAP
|
|
|
#define OFF_RUNTIME 0x1000
|
|
|
#define OFF_DOORBELL 0x2000
|
|
|
-/* must be power of 2 */
|
|
|
-#define LEN_REGS 0x4000
|
|
|
|
|
|
#if (OFF_OPER + LEN_OPER) > OFF_RUNTIME
|
|
|
#error Increase OFF_RUNTIME
|
|
@@ -62,8 +60,8 @@
|
|
|
#if (OFF_RUNTIME + LEN_RUNTIME) > OFF_DOORBELL
|
|
|
#error Increase OFF_DOORBELL
|
|
|
#endif
|
|
|
-#if (OFF_DOORBELL + LEN_DOORBELL) > LEN_REGS
|
|
|
-# error Increase LEN_REGS
|
|
|
+#if (OFF_DOORBELL + LEN_DOORBELL) > XHCI_LEN_REGS
|
|
|
+# error Increase XHCI_LEN_REGS
|
|
|
#endif
|
|
|
|
|
|
/* bit definitions */
|
|
@@ -3276,11 +3274,11 @@ static void usb_xhci_init(XHCIState *xhci)
|
|
|
|
|
|
xhci->usbsts = USBSTS_HCH;
|
|
|
|
|
|
- if (xhci->numports_2 > MAXPORTS_2) {
|
|
|
- xhci->numports_2 = MAXPORTS_2;
|
|
|
+ if (xhci->numports_2 > XHCI_MAXPORTS_2) {
|
|
|
+ xhci->numports_2 = XHCI_MAXPORTS_2;
|
|
|
}
|
|
|
- if (xhci->numports_3 > MAXPORTS_3) {
|
|
|
- xhci->numports_3 = MAXPORTS_3;
|
|
|
+ if (xhci->numports_3 > XHCI_MAXPORTS_3) {
|
|
|
+ xhci->numports_3 = XHCI_MAXPORTS_3;
|
|
|
}
|
|
|
usbports = MAX(xhci->numports_2, xhci->numports_3);
|
|
|
xhci->numports = xhci->numports_2 + xhci->numports_3;
|
|
@@ -3302,7 +3300,7 @@ static void usb_xhci_init(XHCIState *xhci)
|
|
|
USB_SPEED_MASK_LOW |
|
|
|
USB_SPEED_MASK_FULL |
|
|
|
USB_SPEED_MASK_HIGH;
|
|
|
- assert(i < MAXPORTS);
|
|
|
+ assert(i < XHCI_MAXPORTS);
|
|
|
snprintf(port->name, sizeof(port->name), "usb2 port #%d", i+1);
|
|
|
speedmask |= port->speedmask;
|
|
|
}
|
|
@@ -3316,7 +3314,7 @@ static void usb_xhci_init(XHCIState *xhci)
|
|
|
}
|
|
|
port->uport = &xhci->uports[i];
|
|
|
port->speedmask = USB_SPEED_MASK_SUPER;
|
|
|
- assert(i < MAXPORTS);
|
|
|
+ assert(i < XHCI_MAXPORTS);
|
|
|
snprintf(port->name, sizeof(port->name), "usb3 port #%d", i+1);
|
|
|
speedmask |= port->speedmask;
|
|
|
}
|
|
@@ -3331,8 +3329,8 @@ static void usb_xhci_realize(DeviceState *dev, Error **errp)
|
|
|
|
|
|
XHCIState *xhci = XHCI(dev);
|
|
|
|
|
|
- if (xhci->numintrs > MAXINTRS) {
|
|
|
- xhci->numintrs = MAXINTRS;
|
|
|
+ if (xhci->numintrs > XHCI_MAXINTRS) {
|
|
|
+ xhci->numintrs = XHCI_MAXINTRS;
|
|
|
}
|
|
|
while (xhci->numintrs & (xhci->numintrs - 1)) { /* ! power of 2 */
|
|
|
xhci->numintrs++;
|
|
@@ -3340,8 +3338,8 @@ static void usb_xhci_realize(DeviceState *dev, Error **errp)
|
|
|
if (xhci->numintrs < 1) {
|
|
|
xhci->numintrs = 1;
|
|
|
}
|
|
|
- if (xhci->numslots > MAXSLOTS) {
|
|
|
- xhci->numslots = MAXSLOTS;
|
|
|
+ if (xhci->numslots > XHCI_MAXSLOTS) {
|
|
|
+ xhci->numslots = XHCI_MAXSLOTS;
|
|
|
}
|
|
|
if (xhci->numslots < 1) {
|
|
|
xhci->numslots = 1;
|
|
@@ -3355,7 +3353,7 @@ static void usb_xhci_realize(DeviceState *dev, Error **errp)
|
|
|
usb_xhci_init(xhci);
|
|
|
xhci->mfwrap_timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, xhci_mfwrap_timer, xhci);
|
|
|
|
|
|
- memory_region_init(&xhci->mem, OBJECT(dev), "xhci", LEN_REGS);
|
|
|
+ memory_region_init(&xhci->mem, OBJECT(dev), "xhci", XHCI_LEN_REGS);
|
|
|
memory_region_init_io(&xhci->mem_cap, OBJECT(dev), &xhci_cap_ops, xhci,
|
|
|
"capabilities", LEN_CAP);
|
|
|
memory_region_init_io(&xhci->mem_oper, OBJECT(dev), &xhci_oper_ops, xhci,
|