Dear Gerd,
On 07/18/17 13:36, Gerd Hoffmann wrote:
xhci controllers have two virtual ports per (usb3 capable) physical
port, one for usb2 and one for usb3 devices. Add a hub portmap callback
to map the virtual ports to physical ports. For now assume we simply
have the same number of usb2 and usb3 ports.
How can the change be tested? Do you have some QEMU command?
Signed-off-by: Gerd Hoffmann <[email protected]>
---
src/hw/usb-xhci.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/src/hw/usb-xhci.c b/src/hw/usb-xhci.c
index 69954b9d8d..803822aece 100644
--- a/src/hw/usb-xhci.c
+++ b/src/hw/usb-xhci.c
@@ -374,6 +374,16 @@ xhci_hub_reset(struct usbhub_s *hub, u32 port)
return rc;
}
+static int
+xhci_hub_portmap(struct usbhub_s *hub, u32 port)
+{
+ struct usb_xhci_s *xhci = container_of(hub->cntl, struct usb_xhci_s, usb);
+
+ // we don't parse the extended capabilities, so we take a shortcut
+ // here and assumes we have the same number of usb2 and usb3 ports
*assume* without the 3rd person singular s?
+ return port % (xhci->ports/2) + 1;
+}
+
static void
xhci_hub_disconnect(struct usbhub_s *hub, u32 port)
{
@@ -383,6 +393,7 @@ xhci_hub_disconnect(struct usbhub_s *hub, u32 port)
static struct usbhub_op_s xhci_hub_ops = {
.detect = xhci_hub_detect,
.reset = xhci_hub_reset,
+ .portmap = xhci_hub_portmap,
.disconnect = xhci_hub_disconnect,
};
Kind regards,
Paul
_______________________________________________
SeaBIOS mailing list
[email protected]
https://mail.coreboot.org/mailman/listinfo/seabios