Hi,
Below are the few questions I would like to clarify:
1. For supported control write requests, does software need to send ZLP explicitly in the Status stage (or hardware will take care that automatically ) ?
2. For supported control read requests, will receiving ZLP in the Status stage generate interrupt and require action from software ?
Subsequent questions are based on this spec:
Universal Serial Bus Specification 2.0
8.5.3.2 Variable-length Data Stage
If the data structure is an exact multiple of wMaxPacketSize for the pipe, the function will return a zero-length packet to indicate the end of the Data stage.
3. For control read requests, if the last data packet is equal to wMaxPacketSize, do I set DATAEND bit immediately ? Or I should only set it after I have send a zero-length packet ?
4. Likewise for control write requests, if the last data packet received is equal to wMaxPacketSize, do I set DATAEND bit immediately ? Or I should only set it after receive a zero-length packet from host?
For the last 2 questions, current assumption is to set DATAEND bit after send a zero-length packet to host (read requests) and after receive a zero-length packet from host (write request).
rgds,
kc Wong