From 9672be80e84cb3253dc999fbaa5dbc7913a17e0e Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Sun, 31 Jul 2022 13:12:17 +0000 Subject: 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. --- sys/src/9/imx8/usbxhciimx.c | 5 ----- 1 file changed, 5 deletions(-) (limited to 'sys/src/9/imx8') diff --git a/sys/src/9/imx8/usbxhciimx.c b/sys/src/9/imx8/usbxhciimx.c index eed92b1a6..e75b6076d 100644 --- a/sys/src/9/imx8/usbxhciimx.c +++ b/sys/src/9/imx8/usbxhciimx.c @@ -1326,7 +1326,6 @@ isoread(Ep *ep, uchar *p, long n) } ยต = io->period; ctlr = ep->hp->aux; -Again: if(needrecover(ctlr)) error(Erecover); @@ -1374,10 +1373,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(); -- cgit v1.2.3