XHCI: Set the DCS bit in SetTRDequeue.

It is needed here as in ConfigureEndpoint. See inline comment.
This matches FreeBSD's behavior.
This commit is contained in:
Augustin Cavalier 2019-06-16 14:09:45 -04:00
parent 4029b219e9
commit 9be728dee0
1 changed files with 3 additions and 1 deletions

View File

@ -2562,7 +2562,9 @@ XHCI::SetTRDequeue(uint64 dequeue, uint16 stream, uint8 endpoint, uint8 slot)
{
TRACE("Set TR Dequeue\n");
xhci_trb trb;
trb.address = dequeue;
trb.address = dequeue | ENDPOINT_2_DCS_BIT;
// The DCS bit is copied from the address field as in ConfigureEndpoint.
// (XHCI 1.1 § 4.6.10 p142.)
trb.status = TRB_2_STREAM(stream);
trb.flags = TRB_3_TYPE(TRB_TYPE_SET_TR_DEQUEUE)
| TRB_3_SLOT(slot) | TRB_3_ENDPOINT(endpoint);