
On Friday, February 20, 2015 at 04:22:58 AM, Stephen Warren wrote:
Hi!
[...]
Existing code that invokes USB transfers will call (a) once. (a) will call (b) as many times as needed to break up the packet into small chunks. (b) will either send the transaction to the HW (HS devices or directly attached LS/FS devices), or perform the split transaction handling (remotely attached LS/FS devices).
Does that sound like a reasonable approach?
I can start looking into getting split transactions going; I just couldn't motivate myself last Friday night.
Do you plan to do this on the USB stack level or USB controller driver level please ?
I expect I'd put at least the split transaction stuff into the USB controller driver. While I'm not that familiar with anything other than standard EHCI, I'd guess the need to manually manage split transaction was unique to DWC2?
Looks that way. +CC Kishon , what about DWC3 ?
The split of transfers into max-packet-sized transfers could plausibly be useful in the core, but again my guess is that the need to do this is DWC2-specific?
Kishon ?
On the RPI 2, even directly attached HS devices (i.e. the on-board USB hub, Ethernet) don't work correctly. I haven't tracked down the cause yet, since I got side-tracked on the two issues above, initially thinking they might have the same/similar root-cause. However, I don't think this issue is related, since the RPi2 on-board devices don't fall into either of the categories above.
Do you get some kind of an error message ?
Yes. It's similar to the message about "can't read descriptor" that I used to get with a LS device on the original RPis, which is why I started looking at keyboards. Your patch to split up large transactions didn't affect this, so I believe they're separate issues now.
OK
[...]