- I couldn't meet the deadline for getting the spec doc ready, was away whole day.
- But at night I did some deep investigation on serial and got very interesting results.
- Recall that an Endpoint has two directions IN (towards host) and OUT (away from host) except when control transfer is used, which is bidirectional. Bulk, Interrupt and Isochronous transfers are unidirectional and a direction needs to be specified in the Endpoint description.
- EP0 is a control endpoint and doesn't have IN/OUT direction since it's bidirectional
- We can have BULK IN/BULK OUT on the SAME endpoint number. Search here for the string "two endpoints may have the same endpoint number but opposing data transfer directions".
- See the three variants of CDC ACM serial devices over here. We want to use a Bulk-only protocol because that's what we have been effectively using. It takes only 1 EP for implementing Bulk-only protocol.
- Take a look at this spreadsheet based on my lsbusb -v output of HDMI2USB. It also has a tentative plan of how the endpoints can end up for 8 serial expansion ports
- Currently EP4 and EP6 are used for bulk in and bulk out which is not necessary. An Interrupt IN on EP1 on Cypress FX2LP is also there which is not being used by the FPGA (in usbtop.vhd).
- We have some cleaning up to do in the Cypress FX2LP. And it seems we can have more serial ports (11 I guess) with space for proposed endpoints for UVC A/B preview and HDMI Audio. Let's have just have up to 8 serial ports and leave remaining end points for other possible uses?
- Still investigating whether the standard CDC ACM drivers compulsorily requires the INTERRUPT IN endpoint or not.