Re: [PATCH v5 04/23] hw/usb/hcd-xhci: Remove XHCI_FLAG_SS_FIRST flag

2024-05-29 Thread Igor Mammedov
On Wed, 29 May 2024 07:15:20 +0200
Philippe Mathieu-Daudé  wrote:

> 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 
> Signed-off-by: Philippe Mathieu-Daudé 
> Reviewed-by: Zhao Liu 

Reviewed-by: Igor Mammedov 

> ---
>  hw/usb/hcd-xhci.h |  3 +--
>  hw/usb/hcd-xhci-nec.c |  2 --
>  hw/usb/hcd-xhci-pci.c |  1 -
>  hw/usb/hcd-xhci.c | 42 --
>  4 files changed, 9 insertions(+), 39 deletions(-)
> 
> diff --git a/hw/usb/hcd-xhci.h b/hw/usb/hcd-xhci.h
> index 1efa4858fb..fe16d7ad05 100644
> --- a/hw/usb/hcd-xhci.h
> +++ b/hw/usb/hcd-xhci.h
> @@ -36,8 +36,7 @@ typedef struct XHCIStreamContext XHCIStreamContext;
>  typedef struct XHCIEPContext XHCIEPContext;
>  
>  enum xhci_flags {
> -XHCI_FLAG_SS_FIRST = 1,
> -XHCI_FLAG_ENABLE_STREAMS,
> +XHCI_FLAG_ENABLE_STREAMS = 1,
>  };
>  
>  typedef enum TRBType {
> diff --git a/hw/usb/hcd-xhci-nec.c b/hw/usb/hcd-xhci-nec.c
> index 5d5b069cf9..0c063b3697 100644
> --- a/hw/usb/hcd-xhci-nec.c
> +++ b/hw/usb/hcd-xhci-nec.c
> @@ -41,8 +41,6 @@ struct XHCINecState {
>  static Property nec_xhci_properties[] = {
>  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_BIT("superspeed-ports-first", XHCINecState, flags,
> -XHCI_FLAG_SS_FIRST, true),
>  DEFINE_PROP_UINT32("intrs", XHCINecState, intrs, XHCI_MAXINTRS),
>  DEFINE_PROP_UINT32("slots", XHCINecState, slots, XHCI_MAXSLOTS),
>  DEFINE_PROP_END_OF_LIST(),
> diff --git a/hw/usb/hcd-xhci-pci.c b/hw/usb/hcd-xhci-pci.c
> index cbad96f393..264d7ebb77 100644
> --- a/hw/usb/hcd-xhci-pci.c
> +++ b/hw/usb/hcd-xhci-pci.c
> @@ -242,7 +242,6 @@ static void qemu_xhci_instance_init(Object *obj)
>  s->msix = ON_OFF_AUTO_AUTO;
>  xhci->numintrs = XHCI_MAXINTRS;
>  xhci->numslots = XHCI_MAXSLOTS;
> -xhci_set_flag(xhci, XHCI_FLAG_SS_FIRST);
>  }
>  
>  static const TypeInfo qemu_xhci_info = {
> diff --git a/hw/usb/hcd-xhci.c b/hw/usb/hcd-xhci.c
> index ad40232eb6..b6411f0bda 100644
> --- a/hw/usb/hcd-xhci.c
> +++ b/hw/usb/hcd-xhci.c
> @@ -541,18 +541,10 @@ static XHCIPort *xhci_lookup_port(XHCIState *xhci, 
> struct USBPort *uport)
>  case USB_SPEED_LOW:
>  case USB_SPEED_FULL:
>  case USB_SPEED_HIGH:
> -if (xhci_get_flag(xhci, XHCI_FLAG_SS_FIRST)) {
> -index = uport->index + xhci->numports_3;
> -} else {
> -index = uport->index;
> -}
> +index = uport->index + xhci->numports_3;
>  break;
>  case USB_SPEED_SUPER:
> -if (xhci_get_flag(xhci, XHCI_FLAG_SS_FIRST)) {
> -index = uport->index;
> -} else {
> -index = uport->index + xhci->numports_2;
> -}
> +index = uport->index;
>  break;
>  default:
>  return NULL;
> @@ -2779,11 +2771,7 @@ static uint64_t xhci_cap_read(void *ptr, hwaddr reg, 
> unsigned size)
>  ret = 0x20425355; /* "USB " */
>  break;
>  case 0x28: /* Supported Protocol:08 */
> -if (xhci_get_flag(xhci, XHCI_FLAG_SS_FIRST)) {
> -ret = (xhci->numports_2<<8) | (xhci->numports_3+1);
> -} else {
> -ret = (xhci->numports_2<<8) | 1;
> -}
> +ret = (xhci->numports_2 << 8) | (xhci->numports_3 + 1);
>  break;
>  case 0x2c: /* Supported Protocol:0c */
>  ret = 0x; /* reserved */
> @@ -2795,11 +2783,7 @@ static uint64_t xhci_cap_read(void *ptr, hwaddr reg, 
> unsigned size)
>  ret = 0x20425355; /* "USB " */
>  break;
>  case 0x38: /* Supported Protocol:08 */
> -if (xhci_get_flag(xhci, XHCI_FLAG_SS_FIRST)) {
> -ret = (xhci->numports_3<<8) | 1;
> -} else {
> -ret = (xhci->numports_3<<8) | (xhci->numports_2+1);
> -}
> +ret = (xhci->numports_3 << 8) | 1;
>  break;
>  case 0x3c: /* Supported Protocol:0c */
>  ret = 0x; /* reserved */
> @@ -3349,13 +,8 @@ static void usb_xhci_init(XHCIState *xhci)
>  for (i = 0; i < usbports; i++) {
>  speedmask = 0;
>  if (i < xhci->numports_2) {
> -if (xhci_get_flag(xhci, XHCI_FLAG_SS_FIRST)) {
> -port = >ports[i + xhci->numports_3];
> -port->portnr = i + 1 + xhci->numports_3;
> -} else {
> -port = >ports[i];
> -port->portnr = i + 1;
> -}
> +port = >ports[i + xhci->numports_3];
> +port->portnr = i + 1 + xhci->numports_3;
>  port->uport = >uports[i];
>  port->speedmask =
>  USB_SPEED_MASK_LOW  |
> @@ -3366,13 +3345,8 @@ static void usb_xhci_init(XHCIState *xhci)
>  speedmask |= port->speedmask;
>  }
>   

[PATCH v5 04/23] hw/usb/hcd-xhci: Remove XHCI_FLAG_SS_FIRST flag

2024-05-28 Thread Philippe Mathieu-Daudé
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 
Signed-off-by: Philippe Mathieu-Daudé 
Reviewed-by: Zhao Liu 
---
 hw/usb/hcd-xhci.h |  3 +--
 hw/usb/hcd-xhci-nec.c |  2 --
 hw/usb/hcd-xhci-pci.c |  1 -
 hw/usb/hcd-xhci.c | 42 --
 4 files changed, 9 insertions(+), 39 deletions(-)

diff --git a/hw/usb/hcd-xhci.h b/hw/usb/hcd-xhci.h
index 1efa4858fb..fe16d7ad05 100644
--- a/hw/usb/hcd-xhci.h
+++ b/hw/usb/hcd-xhci.h
@@ -36,8 +36,7 @@ typedef struct XHCIStreamContext XHCIStreamContext;
 typedef struct XHCIEPContext XHCIEPContext;
 
 enum xhci_flags {
-XHCI_FLAG_SS_FIRST = 1,
-XHCI_FLAG_ENABLE_STREAMS,
+XHCI_FLAG_ENABLE_STREAMS = 1,
 };
 
 typedef enum TRBType {
diff --git a/hw/usb/hcd-xhci-nec.c b/hw/usb/hcd-xhci-nec.c
index 5d5b069cf9..0c063b3697 100644
--- a/hw/usb/hcd-xhci-nec.c
+++ b/hw/usb/hcd-xhci-nec.c
@@ -41,8 +41,6 @@ struct XHCINecState {
 static Property nec_xhci_properties[] = {
 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_BIT("superspeed-ports-first", XHCINecState, flags,
-XHCI_FLAG_SS_FIRST, true),
 DEFINE_PROP_UINT32("intrs", XHCINecState, intrs, XHCI_MAXINTRS),
 DEFINE_PROP_UINT32("slots", XHCINecState, slots, XHCI_MAXSLOTS),
 DEFINE_PROP_END_OF_LIST(),
diff --git a/hw/usb/hcd-xhci-pci.c b/hw/usb/hcd-xhci-pci.c
index cbad96f393..264d7ebb77 100644
--- a/hw/usb/hcd-xhci-pci.c
+++ b/hw/usb/hcd-xhci-pci.c
@@ -242,7 +242,6 @@ static void qemu_xhci_instance_init(Object *obj)
 s->msix = ON_OFF_AUTO_AUTO;
 xhci->numintrs = XHCI_MAXINTRS;
 xhci->numslots = XHCI_MAXSLOTS;
-xhci_set_flag(xhci, XHCI_FLAG_SS_FIRST);
 }
 
 static const TypeInfo qemu_xhci_info = {
diff --git a/hw/usb/hcd-xhci.c b/hw/usb/hcd-xhci.c
index ad40232eb6..b6411f0bda 100644
--- a/hw/usb/hcd-xhci.c
+++ b/hw/usb/hcd-xhci.c
@@ -541,18 +541,10 @@ static XHCIPort *xhci_lookup_port(XHCIState *xhci, struct 
USBPort *uport)
 case USB_SPEED_LOW:
 case USB_SPEED_FULL:
 case USB_SPEED_HIGH:
-if (xhci_get_flag(xhci, XHCI_FLAG_SS_FIRST)) {
-index = uport->index + xhci->numports_3;
-} else {
-index = uport->index;
-}
+index = uport->index + xhci->numports_3;
 break;
 case USB_SPEED_SUPER:
-if (xhci_get_flag(xhci, XHCI_FLAG_SS_FIRST)) {
-index = uport->index;
-} else {
-index = uport->index + xhci->numports_2;
-}
+index = uport->index;
 break;
 default:
 return NULL;
@@ -2779,11 +2771,7 @@ static uint64_t xhci_cap_read(void *ptr, hwaddr reg, 
unsigned size)
 ret = 0x20425355; /* "USB " */
 break;
 case 0x28: /* Supported Protocol:08 */
-if (xhci_get_flag(xhci, XHCI_FLAG_SS_FIRST)) {
-ret = (xhci->numports_2<<8) | (xhci->numports_3+1);
-} else {
-ret = (xhci->numports_2<<8) | 1;
-}
+ret = (xhci->numports_2 << 8) | (xhci->numports_3 + 1);
 break;
 case 0x2c: /* Supported Protocol:0c */
 ret = 0x; /* reserved */
@@ -2795,11 +2783,7 @@ static uint64_t xhci_cap_read(void *ptr, hwaddr reg, 
unsigned size)
 ret = 0x20425355; /* "USB " */
 break;
 case 0x38: /* Supported Protocol:08 */
-if (xhci_get_flag(xhci, XHCI_FLAG_SS_FIRST)) {
-ret = (xhci->numports_3<<8) | 1;
-} else {
-ret = (xhci->numports_3<<8) | (xhci->numports_2+1);
-}
+ret = (xhci->numports_3 << 8) | 1;
 break;
 case 0x3c: /* Supported Protocol:0c */
 ret = 0x; /* reserved */
@@ -3349,13 +,8 @@ static void usb_xhci_init(XHCIState *xhci)
 for (i = 0; i < usbports; i++) {
 speedmask = 0;
 if (i < xhci->numports_2) {
-if (xhci_get_flag(xhci, XHCI_FLAG_SS_FIRST)) {
-port = >ports[i + xhci->numports_3];
-port->portnr = i + 1 + xhci->numports_3;
-} else {
-port = >ports[i];
-port->portnr = i + 1;
-}
+port = >ports[i + xhci->numports_3];
+port->portnr = i + 1 + xhci->numports_3;
 port->uport = >uports[i];
 port->speedmask =
 USB_SPEED_MASK_LOW  |
@@ -3366,13 +3345,8 @@ static void usb_xhci_init(XHCIState *xhci)
 speedmask |= port->speedmask;
 }
 if (i < xhci->numports_3) {
-if (xhci_get_flag(xhci, XHCI_FLAG_SS_FIRST)) {
-port = >ports[i];
-port->portnr = i + 1;
-} else {
-port = >ports[i + xhci->numports_2];
-port->portnr = i + 1 + xhci->numports_2;
-}
+port = >ports[i];
+