hw/usb/hcd-xhci: Remove XHCI_FLAG_SS_FIRST flag

XHCI_FLAG_SS_FIRST was only used by the pc-i440fx-2.0 machine,
which got removed. Remove it and simplify various functions in
hcd-xhci.c.

Reviewed-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
Message-Id: <20240617071118.60464-5-philmd@linaro.org>
This commit is contained in:
Philippe Mathieu-Daudé 2024-02-28 10:18:40 +01:00
parent 931863ac6f
commit b9599519a0
4 changed files with 9 additions and 39 deletions

View File

@ -41,8 +41,6 @@ struct XHCINecState {
static Property nec_xhci_properties[] = { static Property nec_xhci_properties[] = {
DEFINE_PROP_ON_OFF_AUTO("msi", XHCIPciState, msi, ON_OFF_AUTO_AUTO), DEFINE_PROP_ON_OFF_AUTO("msi", XHCIPciState, msi, ON_OFF_AUTO_AUTO),
DEFINE_PROP_ON_OFF_AUTO("msix", XHCIPciState, msix, ON_OFF_AUTO_AUTO), DEFINE_PROP_ON_OFF_AUTO("msix", XHCIPciState, msix, ON_OFF_AUTO_AUTO),
DEFINE_PROP_BIT("superspeed-ports-first", XHCINecState, flags,
XHCI_FLAG_SS_FIRST, true),
DEFINE_PROP_UINT32("intrs", XHCINecState, intrs, XHCI_MAXINTRS), DEFINE_PROP_UINT32("intrs", XHCINecState, intrs, XHCI_MAXINTRS),
DEFINE_PROP_UINT32("slots", XHCINecState, slots, XHCI_MAXSLOTS), DEFINE_PROP_UINT32("slots", XHCINecState, slots, XHCI_MAXSLOTS),
DEFINE_PROP_END_OF_LIST(), DEFINE_PROP_END_OF_LIST(),

View File

@ -242,7 +242,6 @@ static void qemu_xhci_instance_init(Object *obj)
s->msix = ON_OFF_AUTO_AUTO; s->msix = ON_OFF_AUTO_AUTO;
xhci->numintrs = XHCI_MAXINTRS; xhci->numintrs = XHCI_MAXINTRS;
xhci->numslots = XHCI_MAXSLOTS; xhci->numslots = XHCI_MAXSLOTS;
xhci_set_flag(xhci, XHCI_FLAG_SS_FIRST);
} }
static const TypeInfo qemu_xhci_info = { static const TypeInfo qemu_xhci_info = {

View File

@ -541,18 +541,10 @@ static XHCIPort *xhci_lookup_port(XHCIState *xhci, struct USBPort *uport)
case USB_SPEED_LOW: case USB_SPEED_LOW:
case USB_SPEED_FULL: case USB_SPEED_FULL:
case USB_SPEED_HIGH: case USB_SPEED_HIGH:
if (xhci_get_flag(xhci, XHCI_FLAG_SS_FIRST)) { index = uport->index + xhci->numports_3;
index = uport->index + xhci->numports_3;
} else {
index = uport->index;
}
break; break;
case USB_SPEED_SUPER: case USB_SPEED_SUPER:
if (xhci_get_flag(xhci, XHCI_FLAG_SS_FIRST)) { index = uport->index;
index = uport->index;
} else {
index = uport->index + xhci->numports_2;
}
break; break;
default: default:
return NULL; return NULL;
@ -2779,11 +2771,7 @@ static uint64_t xhci_cap_read(void *ptr, hwaddr reg, unsigned size)
ret = 0x20425355; /* "USB " */ ret = 0x20425355; /* "USB " */
break; break;
case 0x28: /* Supported Protocol:08 */ case 0x28: /* Supported Protocol:08 */
if (xhci_get_flag(xhci, XHCI_FLAG_SS_FIRST)) { ret = (xhci->numports_2 << 8) | (xhci->numports_3 + 1);
ret = (xhci->numports_2<<8) | (xhci->numports_3+1);
} else {
ret = (xhci->numports_2<<8) | 1;
}
break; break;
case 0x2c: /* Supported Protocol:0c */ case 0x2c: /* Supported Protocol:0c */
ret = 0x00000000; /* reserved */ ret = 0x00000000; /* reserved */
@ -2795,11 +2783,7 @@ static uint64_t xhci_cap_read(void *ptr, hwaddr reg, unsigned size)
ret = 0x20425355; /* "USB " */ ret = 0x20425355; /* "USB " */
break; break;
case 0x38: /* Supported Protocol:08 */ case 0x38: /* Supported Protocol:08 */
if (xhci_get_flag(xhci, XHCI_FLAG_SS_FIRST)) { ret = (xhci->numports_3 << 8) | 1;
ret = (xhci->numports_3<<8) | 1;
} else {
ret = (xhci->numports_3<<8) | (xhci->numports_2+1);
}
break; break;
case 0x3c: /* Supported Protocol:0c */ case 0x3c: /* Supported Protocol:0c */
ret = 0x00000000; /* reserved */ ret = 0x00000000; /* reserved */
@ -3349,13 +3333,8 @@ static void usb_xhci_init(XHCIState *xhci)
for (i = 0; i < usbports; i++) { for (i = 0; i < usbports; i++) {
speedmask = 0; speedmask = 0;
if (i < xhci->numports_2) { if (i < xhci->numports_2) {
if (xhci_get_flag(xhci, XHCI_FLAG_SS_FIRST)) { port = &xhci->ports[i + xhci->numports_3];
port = &xhci->ports[i + xhci->numports_3]; port->portnr = i + 1 + xhci->numports_3;
port->portnr = i + 1 + xhci->numports_3;
} else {
port = &xhci->ports[i];
port->portnr = i + 1;
}
port->uport = &xhci->uports[i]; port->uport = &xhci->uports[i];
port->speedmask = port->speedmask =
USB_SPEED_MASK_LOW | USB_SPEED_MASK_LOW |
@ -3366,13 +3345,8 @@ static void usb_xhci_init(XHCIState *xhci)
speedmask |= port->speedmask; speedmask |= port->speedmask;
} }
if (i < xhci->numports_3) { if (i < xhci->numports_3) {
if (xhci_get_flag(xhci, XHCI_FLAG_SS_FIRST)) { port = &xhci->ports[i];
port = &xhci->ports[i]; port->portnr = i + 1;
port->portnr = i + 1;
} else {
port = &xhci->ports[i + xhci->numports_2];
port->portnr = i + 1 + xhci->numports_2;
}
port->uport = &xhci->uports[i]; port->uport = &xhci->uports[i];
port->speedmask = USB_SPEED_MASK_SUPER; port->speedmask = USB_SPEED_MASK_SUPER;
assert(i < XHCI_MAXPORTS); assert(i < XHCI_MAXPORTS);

View File

@ -36,8 +36,7 @@ typedef struct XHCIStreamContext XHCIStreamContext;
typedef struct XHCIEPContext XHCIEPContext; typedef struct XHCIEPContext XHCIEPContext;
enum xhci_flags { enum xhci_flags {
XHCI_FLAG_SS_FIRST = 1, XHCI_FLAG_ENABLE_STREAMS = 1,
XHCI_FLAG_ENABLE_STREAMS,
}; };
typedef enum TRBType { typedef enum TRBType {