usb: dwc3: ep0: fix Data Phase for transfer sizes aligned to wMaxPacketSize
authorFelipe Balbi <balbi@ti.com>
Tue, 30 Sep 2014 15:39:14 +0000 (10:39 -0500)
committerFelipe Balbi <balbi@ti.com>
Thu, 23 Oct 2014 14:55:35 +0000 (09:55 -0500)
commit36f84ffb45c75ff10442a9f8f2fd91dcf6c6f5dd
treeaadbdc58f32334172eb8b19f9b6c944618b7e74b
parent6856d30c6c0038dc0648009853533af3af6c5ba8
usb: dwc3: ep0: fix Data Phase for transfer sizes aligned to wMaxPacketSize

According to Section 8.5.3.2 of the USB 2.0 specification,
a USB device must terminate a Data Phase with either a
short packet or a ZLP (if the previous transfer was
a multiple of wMaxPacketSize).

For reference, here's what the USB 2.0 specification, section
8.5.3.2 says:

"
8.5.3.2 Variable-length Data Stage

A control pipe may have a variable-length data phase
in which the host requests more data than is contained
in the specified data structure. When all of the data
structure is returned to the host, the function should
indicate that the Data stage is ended by returning a
packet that is shorter than the MaxPacketSize for the
pipe. 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.
"

Signed-off-by: Felipe Balbi <balbi@ti.com>
drivers/usb/dwc3/ep0.c