Revision 4efe4ef3 hw/usb/hcd-uhci.c
b/hw/usb/hcd-uhci.c | ||
---|---|---|
81 | 81 |
TD_RESULT_STOP_FRAME = 10, |
82 | 82 |
TD_RESULT_COMPLETE, |
83 | 83 |
TD_RESULT_NEXT_QH, |
84 |
TD_RESULT_ASYNC, |
|
84 |
TD_RESULT_ASYNC_START, |
|
85 |
TD_RESULT_ASYNC_CONT, |
|
85 | 86 |
}; |
86 | 87 |
|
87 | 88 |
typedef struct UHCIState UHCIState; |
... | ... | |
812 | 813 |
async->queue->valid = 32; |
813 | 814 |
|
814 | 815 |
if (!async->done) |
815 |
return TD_RESULT_NEXT_QH;
|
|
816 |
return TD_RESULT_ASYNC_CONT;
|
|
816 | 817 |
|
817 | 818 |
uhci_async_unlink(async); |
818 | 819 |
goto done; |
... | ... | |
860 | 861 |
|
861 | 862 |
if (len == USB_RET_ASYNC) { |
862 | 863 |
uhci_async_link(async); |
863 |
return TD_RESULT_ASYNC; |
|
864 |
return TD_RESULT_ASYNC_START;
|
|
864 | 865 |
} |
865 | 866 |
|
866 | 867 |
async->packet.result = len; |
... | ... | |
966 | 967 |
} |
967 | 968 |
trace_usb_uhci_td_queue(plink & ~0xf, ptd.ctrl, ptd.token); |
968 | 969 |
ret = uhci_handle_td(s, plink, &ptd, &int_mask); |
969 |
assert(ret == TD_RESULT_ASYNC); |
|
970 |
assert(ret == TD_RESULT_ASYNC_START);
|
|
970 | 971 |
assert(int_mask == 0); |
971 | 972 |
plink = ptd.link; |
972 | 973 |
} |
... | ... | |
1058 | 1059 |
goto out; |
1059 | 1060 |
|
1060 | 1061 |
case TD_RESULT_NEXT_QH: |
1062 |
case TD_RESULT_ASYNC_CONT: |
|
1061 | 1063 |
trace_usb_uhci_td_nextqh(curr_qh & ~0xf, link & ~0xf); |
1062 | 1064 |
link = curr_qh ? qh.link : td.link; |
1063 | 1065 |
continue; |
1064 | 1066 |
|
1065 |
case TD_RESULT_ASYNC: |
|
1067 |
case TD_RESULT_ASYNC_START:
|
|
1066 | 1068 |
trace_usb_uhci_td_async(curr_qh & ~0xf, link & ~0xf); |
1067 | 1069 |
if (is_valid(td.link)) { |
1068 | 1070 |
uhci_fill_queue(s, &td); |
Also available in: Unified diff