Pierre-Louis Bossart wrote:
- if (frame_diff < 0)
frame_diff += 1024; /* handle 10-bit wrap-around */
After reading through some HCD source files, I deduced the following wrap-arounds:
EHCI: 8-10 bits (default 9) FHCI: 11 bits IMX21: 16 bits ISP1760: 10 bits OHCI: 16 bits OXU210HP: 10 bits R8A66597: 10 bits SL811: 5 bits(!?) UHCI: 32 bits xHCI: ?
As long as there isn't an API that tells us about the valid range of the frame counter, we should probably mask off all except the lowest few bits.
If we only used the 8 least-significant bits, it'd still leave us with up to 256 ms. That should work I guess. But the SL811 with 5 bits is a problem, that makes 32ms, this is probably too low.
Sorry, I read the code wrong; that driver returns a 16-bit frame counter, it just doesn't allow to schedule more than 32 frame AFAICT. And that driver doesn't support USB audio anyway, so 8 bits should be fine.
Regards, Clemens