dwc3: Add check for sg queued trbs while reclaiming

If we're in the middle of series of chained TRBs, DWC3 will
avoid clearing HWO and SW has to do it manually.
We are doing it while reclaiming trbs for sg transfers.

Add check for sg queued trb and reclaim it as DWC3 skips
clearing HWO bit during sg transfers.

Change-Id: I200254728c0549da6534aea51daad94be6b6295e
Signed-off-by: AKASH KUMAR <quic_akakum@quicinc.com>
This commit is contained in:
AKASH KUMAR 2023-03-13 13:43:08 +05:30
commit f3dae06c15

View file

@ -3277,7 +3277,13 @@ static int dwc3_gadget_ep_cleanup_completed_request(struct dwc3_ep *dep,
* processed by the core. Hence do not reclaim it until
* it is processed by the core.
*/
if (req->trb->ctrl & DWC3_TRB_CTRL_HWO) {
/*
* If sg transfer are in progress, avoid checking
* HWO bit here as these will get cleared during
* ep reclaim.
*/
if ((req->trb->ctrl & DWC3_TRB_CTRL_HWO)
&& (req->num_queued_sgs == 0)) {
dbg_event(0xFF, "PEND TRB", dep->number);
return 1;
}