aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2013-12-29 18:17:57 -0500
committerKevin O'Connor <kevin@koconnor.net>2014-01-29 12:57:01 -0500
commit81b64824dad0411473e752a66665c4a44c579f6e (patch)
tree6b0024d467b6243d36d42b9d25daed4946d7588d
parente3b9cadd9bef8fc94904c6e00d5ca3050def247b (diff)
downloadseabios-81b64824dad0411473e752a66665c4a44c579f6e.zip
seabios-81b64824dad0411473e752a66665c4a44c579f6e.tar.gz
seabios-81b64824dad0411473e752a66665c4a44c579f6e.tar.bz2
xhci: Don't use a dummy endpoint count in configure command.
At least some real-world controllers expect the endpoint count in the inctx to be accurate, so set it to the pipe currently being activated. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
-rw-r--r--src/hw/usb-xhci.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/hw/usb-xhci.c b/src/hw/usb-xhci.c
index 9a1954c..6f5604e 100644
--- a/src/hw/usb-xhci.c
+++ b/src/hw/usb-xhci.c
@@ -922,7 +922,7 @@ xhci_alloc_pipe(struct usbdevice_s *usbdev
goto fail;
in->add |= (1 << pipe->epid);
struct xhci_slotctx *slot = (void*)&in[1 << xhci->context64];
- slot->ctx[0] |= (31 << 27); // context entries
+ slot->ctx[0] = (slot->ctx[0] & ~0xf8000000) | (pipe->epid << 27);
struct xhci_epctx *ep = (void*)&in[(pipe->epid+1) << xhci->context64];
if (eptype == USB_ENDPOINT_XFER_INT)