Commit adf47834 authored by Hans de Goede's avatar Hans de Goede Committed by Gerd Hoffmann

ehci: Fix interrupt endpoints no longer working

One of the recent changes (likely the addition of queuing support) has broken
interrupt endpoints, this patch fixes this.
Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
parent 287fd3f1
......@@ -1987,10 +1987,19 @@ static int ehci_state_fetchqtd(EHCIQueue *q)
ehci_set_state(q->ehci, q->async, EST_HORIZONTALQH);
again = 1;
} else if (p != NULL) {
if (p->async == EHCI_ASYNC_INFLIGHT) {
switch (p->async) {
case EHCI_ASYNC_NONE:
/* Previously nacked packet (likely interrupt ep) */
ehci_set_state(q->ehci, q->async, EST_EXECUTE);
break;
case EHCI_ASYNC_INFLIGHT:
/* Unfinyshed async handled packet, go horizontal */
ehci_set_state(q->ehci, q->async, EST_HORIZONTALQH);
} else {
break;
case EHCI_ASYNC_FINISHED:
/* Should never happen, as this case is caught by fetchqh */
ehci_set_state(q->ehci, q->async, EST_EXECUTING);
break;
}
again = 1;
} else {
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment