mirror of https://github.com/xemu-project/xemu.git
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: Hans de Goede <hdegoede@redhat.com>
This commit is contained in:
parent
287fd3f1dd
commit
adf478342b
|
@ -1987,10 +1987,19 @@ static int ehci_state_fetchqtd(EHCIQueue *q)
|
||||||
ehci_set_state(q->ehci, q->async, EST_HORIZONTALQH);
|
ehci_set_state(q->ehci, q->async, EST_HORIZONTALQH);
|
||||||
again = 1;
|
again = 1;
|
||||||
} else if (p != NULL) {
|
} 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);
|
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);
|
ehci_set_state(q->ehci, q->async, EST_EXECUTING);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
again = 1;
|
again = 1;
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in New Issue