Revision df787185 hw/usb-ehci.c
b/hw/usb-ehci.c | ||
---|---|---|
1510 | 1510 |
/* IN */ |
1511 | 1511 |
set_field(&itd->transact[i], ret, ITD_XACT_LENGTH); |
1512 | 1512 |
} |
1513 |
|
|
1514 |
if (itd->transact[i] & ITD_XACT_IOC) { |
|
1515 |
ehci_record_interrupt(ehci, USBSTS_INT); |
|
1513 |
} else { |
|
1514 |
switch (ret) { |
|
1515 |
default: |
|
1516 |
fprintf(stderr, "Unexpected iso usb result: %d\n", ret); |
|
1517 |
/* Fall through */ |
|
1518 |
case USB_RET_NODEV: |
|
1519 |
/* 3.3.2: XACTERR is only allowed on IN transactions */ |
|
1520 |
if (dir) { |
|
1521 |
itd->transact[i] |= ITD_XACT_XACTERR; |
|
1522 |
ehci_record_interrupt(ehci, USBSTS_ERRINT); |
|
1523 |
} |
|
1524 |
break; |
|
1525 |
case USB_RET_BABBLE: |
|
1526 |
itd->transact[i] |= ITD_XACT_BABBLE; |
|
1527 |
ehci_record_interrupt(ehci, USBSTS_ERRINT); |
|
1528 |
break; |
|
1516 | 1529 |
} |
1517 | 1530 |
} |
1531 |
if (itd->transact[i] & ITD_XACT_IOC) { |
|
1532 |
ehci_record_interrupt(ehci, USBSTS_INT); |
|
1533 |
} |
|
1518 | 1534 |
itd->transact[i] &= ~ITD_XACT_ACTIVE; |
1519 | 1535 |
} |
1520 | 1536 |
} |
Also available in: Unified diff