diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2022-07-31 13:12:17 +0000 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2022-07-31 13:12:17 +0000 |
commit | 9672be80e84cb3253dc999fbaa5dbc7913a17e0e (patch) | |
tree | 69fa2962395657faccf1b17413ff4ce58240f53b /sys/src/9/port/usbxhci.c | |
parent | 30dcf55ee221b986aee6d428b4da431f6174c66b (diff) |
usb: fix ehci isochronous "in" split transactions
For "in" transactions, the "Total Bytes to Transfer" field in
the siTD is decremented by the controller by the actual transfer
size, so what remains in the field is the residue number of bytes.
Also, handle restart when we get a zero byte read on a isochronous
"in" endpoint in devusb itself (removing the restart code for
xhci drivers).
This fixes audio recording with a usb1.1 audio device connected
to ehci controller.
Diffstat (limited to 'sys/src/9/port/usbxhci.c')
-rw-r--r-- | sys/src/9/port/usbxhci.c | 5 |
1 files changed, 0 insertions, 5 deletions
diff --git a/sys/src/9/port/usbxhci.c b/sys/src/9/port/usbxhci.c index 4c2b60a3b..bdaf968ed 100644 --- a/sys/src/9/port/usbxhci.c +++ b/sys/src/9/port/usbxhci.c @@ -1338,7 +1338,6 @@ isoread(Ep *ep, uchar *p, long n) } ยต = io->period; ctlr = ep->hp->aux; -Again: if(needrecover(ctlr)) error(Erecover); @@ -1386,10 +1385,6 @@ Again: io->frame = i; *io->ring->doorbell = io->ring->id; - if(p == s){ - tsleep(&up->sleep, return0, nil, 5); - goto Again; - } qunlock(io); poperror(); |