usb: dwc3: gadget: Allow restarting a transfer
It's possible that there's no new TRBs prepared when kicking a transfer. This happens when we need to stop and restart a transfer such as in the case of reinitiating a stream or retrying isoc transfer. For streams, sometime host may reject a stream and the device may need to reinitiate that stream by stopping and restarting a transfer. In this case, all the TRBs may have already been prepared. Allow the function __dwc3_gadget_kick_transfer() to go through even though there's no new TRB. Signed-off-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com> Signed-off-by: Felipe Balbi <balbi@kernel.org>
This commit is contained in:
parent
a73abc28ce
commit
d72ecc08de
|
@ -1326,8 +1326,13 @@ static int __dwc3_gadget_kick_transfer(struct dwc3_ep *dep)
|
|||
int ret;
|
||||
u32 cmd;
|
||||
|
||||
/*
|
||||
* Note that it's normal to have no new TRBs prepared (i.e. ret == 0).
|
||||
* This happens when we need to stop and restart a transfer such as in
|
||||
* the case of reinitiating a stream or retrying an isoc transfer.
|
||||
*/
|
||||
ret = dwc3_prepare_trbs(dep);
|
||||
if (ret <= 0)
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
starting = !(dep->flags & DWC3_EP_TRANSFER_STARTED);
|
||||
|
|
Loading…
Reference in New Issue