|
@@ -875,12 +875,16 @@ static void dwc3_prepare_one_trb(struct dwc3_ep *dep,
|
|
|
}
|
|
|
|
|
|
/* always enable Continue on Short Packet */
|
|
|
- if (usb_endpoint_dir_out(dep->endpoint.desc))
|
|
|
+ if (usb_endpoint_dir_out(dep->endpoint.desc)) {
|
|
|
trb->ctrl |= DWC3_TRB_CTRL_CSP;
|
|
|
|
|
|
+ if (req->request.short_not_ok)
|
|
|
+ trb->ctrl |= DWC3_TRB_CTRL_ISP_IMI;
|
|
|
+ }
|
|
|
+
|
|
|
if ((!req->request.no_interrupt && !chain) ||
|
|
|
(dwc3_calc_trbs_left(dep) == 0))
|
|
|
- trb->ctrl |= DWC3_TRB_CTRL_IOC | DWC3_TRB_CTRL_ISP_IMI;
|
|
|
+ trb->ctrl |= DWC3_TRB_CTRL_IOC;
|
|
|
|
|
|
if (chain)
|
|
|
trb->ctrl |= DWC3_TRB_CTRL_CHN;
|