*/
if (dep->trb_enqueue == dep->trb_dequeue) {
tmp = dwc3_ep_prev_trb(dep, dep->trb_enqueue);
- if (tmp->ctrl & DWC3_TRB_CTRL_HWO)
- return 0;
- return DWC3_TRB_NUM - 1;
+ if (!(tmp->ctrl & DWC3_TRB_CTRL_HWO) ||
+ ((tmp->ctrl & DWC3_TRB_CTRL_HWO) &&
+ (tmp->ctrl & DWC3_TRB_CTRL_CSP) &&
+ !dep->direction))
+ return DWC3_TRB_NUM - 1;
+
+ return 0;
}
trbs_left = dep->trb_dequeue - dep->trb_enqueue;