
On Monday 02 March 2015 05:08 PM, Marek Vasut wrote:
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 ?
SPLIT transaction is specific to host controller and the DWC3 work I did is gadget driver. So I'd assume it should be handled by xhci driver.
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 ?
AFAIK dwc3 requires max-packet "aligned" request sizes and we manage it by using bounce buffer and chained TRBs. The hw itself takes care of sending max-packet-sized transfers. But again I'm talking w.r.t gadget driver.
Cheers Kishon