usb: dwc3: gadget: Set all ctrl fields of Transfer Control Blocks (TRB) to be LST
authorLukasz Majewski <l.majewski@samsung.com>
Tue, 3 Mar 2015 16:32:13 +0000 (17:32 +0100)
committerMarek Vasut <marex@denx.de>
Tue, 14 Apr 2015 03:48:12 +0000 (05:48 +0200)
commit29e7fc19ceda9d93fba21a35990e2eb157901010
treeea69ef4c530997db6ac5f40c0ccce56f9f2d3483
parent137f7c590d37279f49caf4d3152a0a7d12f01831
usb: dwc3: gadget: Set all ctrl fields of Transfer Control Blocks (TRB) to be LST

It turned out that current dwc3 gadget code is preparing multiple TRBs
for a transfer. Unfortunately, when multiple requests are in the same
queue, only for the last one the LST (last) ctrl bit is set.

Due to that dwc3 HW executes all TRBs up till the one marked as last.
Unfortunately, UMS requires call of ->complete callback after any send TRB.
This is the reason for "hangs" in executing UMS.

This code simplifies this situation and set each TRB's ctrl field bit to be
last (LST bit).

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
drivers/usb/dwc3/gadget.c