From 661189eedef6d895a0b3b2c793cbdfba731bdc7d Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Mon, 23 Mar 2015 14:22:23 +0000 Subject: [PATCH] [xhci] Ring doorbell as part of endpoint reset The endpoint may already have enqueued TRBs at the time that xhci_endpoint_reset() is called. Ring the doorbell to resume processing these TRBs immediately, rather than waiting until the next call to xhci_endpoint_message() or xhci_endpoint_stream(). Signed-off-by: Michael Brown --- src/drivers/usb/xhci.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/drivers/usb/xhci.c b/src/drivers/usb/xhci.c index a71d1278..a940a73a 100644 --- a/src/drivers/usb/xhci.c +++ b/src/drivers/usb/xhci.c @@ -2437,6 +2437,9 @@ static int xhci_endpoint_reset ( struct usb_endpoint *ep ) { if ( ( rc = xhci_set_tr_dequeue_pointer ( xhci, slot, endpoint ) ) != 0) return rc; + /* Ring doorbell to resume processing */ + xhci_doorbell ( &endpoint->ring ); + DBGC ( xhci, "XHCI %p slot %d ctx %d reset\n", xhci, slot->id, endpoint->ctx ); return 0;