Page 1 of 1

Bulk transfers in EHCI

Posted: Wed Sep 26, 2018 5:47 pm
by mariuszp
I think I understand it but I'm not completly sure. My current EHCI driver supports control transfers, and that works. Now I want to support bulk transfers.

The documentation says that both of these are handled by the asynchronous schedule.

So, is the only difference between the two thatcontrol transfers start with a SETUP packet (e.g. SETUP, IN, OUT) while bulk transfers simply don't have the SETUP packet (e.g. IN, OUT), but are otherwise submitted in exactly the same way to the controller?

Re: Bulk transfers in EHCI

Posted: Wed Sep 26, 2018 6:59 pm
by BenLunt
In a general way of an answer, yes, this is correct.

In a more detailed answer, there are things you need to know.
1) Bulk transfers use the Bulk endpoint(s), not the Control endpoint.
2) Bulk transfers use a toggle bit, one each per endpoint direction[1], and toggle independently of the transfer type. The control transfer starts with a toggle = 0 and ends with a toggle = 1. Not so for bulk endpoints.
3) Bulk transfers are not allowed on Low speed devices.
4) many other things.

[1]Some devices have a single bulk endpoint number (IN = 2 and OUT = 2), yet there is an out endpoint and an in endpoint (same number). Each having its own toggle bit. Most devices have a separate numbered endpoint, i.e.: IN = 2, OUT = 3, etc. Again, each having its own toggle bit.

As always, if you have any questions, feel free to post here. I do my best to answer them.

-Ben