I'm experimenting with CSUD..
First, I see in the code (designware20.h) that ReceiveFifoSize = NonPeriodicFifoSize = PeriodicFifoSize = 20480. But doesn't the sume of those have to be less than Hardware.FifoDepth (= 4080)? And the code has ChannelCount = 16. I think (?) that should be 8.
And I think that Hardware.HostChannelCount is the number of actual channels MINUS 1 (i.e., it's 7). So (in designware20.c) the "for channel .." loops in HcdStart should really go while channel is less than OR EQUAL TO (i.e., "<=") Hardware.HostChannelCount.
But here's my current issue:
The ONE AND ONLY place where the physical FIFO size registers are set (via WriteThroughReg) is in HcdStart. I set things up so ReceiveFifoSize = NonPeriodicFifoSize = PeriodicFifoSize = 1024. (This means Receive.Size (20980024) is 00000400, NonPeriodicFifo (20980028) is 04000400 and PeriodicFifo.HostSize (20980100) is 04000800.) But if I read them back after HcdStart/HcdInitiailize are done, the values are 04000400 (okay), 01000400 (?) and 02000200 (?).