Bulk transfers in EHCI

Question about which tools to use, bugs, the best way to implement a function, etc should go here. Don't forget to see if your question is answered in the wiki first! When in doubt post here.
Post Reply
mariuszp
Member
Member
Posts: 587
Joined: Sat Oct 16, 2010 3:38 pm

Bulk transfers in EHCI

Post 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?
User avatar
BenLunt
Member
Member
Posts: 941
Joined: Sat Nov 22, 2014 6:33 pm
Location: USA
Contact:

Re: Bulk transfers in EHCI

Post 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
Post Reply