diff options
Diffstat (limited to 'drivers/usb/dwc3/gadget.c')
-rw-r--r-- | drivers/usb/dwc3/gadget.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c index 679c12e14522..9faad896b3a1 100644 --- a/drivers/usb/dwc3/gadget.c +++ b/drivers/usb/dwc3/gadget.c | |||
@@ -1081,7 +1081,7 @@ static void dwc3_prepare_one_trb_sg(struct dwc3_ep *dep, | |||
1081 | /* Now prepare one extra TRB to align transfer size */ | 1081 | /* Now prepare one extra TRB to align transfer size */ |
1082 | trb = &dep->trb_pool[dep->trb_enqueue]; | 1082 | trb = &dep->trb_pool[dep->trb_enqueue]; |
1083 | __dwc3_prepare_one_trb(dep, trb, dwc->bounce_addr, | 1083 | __dwc3_prepare_one_trb(dep, trb, dwc->bounce_addr, |
1084 | maxp - rem, false, 0, | 1084 | maxp - rem, false, 1, |
1085 | req->request.stream_id, | 1085 | req->request.stream_id, |
1086 | req->request.short_not_ok, | 1086 | req->request.short_not_ok, |
1087 | req->request.no_interrupt); | 1087 | req->request.no_interrupt); |
@@ -1125,7 +1125,7 @@ static void dwc3_prepare_one_trb_linear(struct dwc3_ep *dep, | |||
1125 | /* Now prepare one extra TRB to align transfer size */ | 1125 | /* Now prepare one extra TRB to align transfer size */ |
1126 | trb = &dep->trb_pool[dep->trb_enqueue]; | 1126 | trb = &dep->trb_pool[dep->trb_enqueue]; |
1127 | __dwc3_prepare_one_trb(dep, trb, dwc->bounce_addr, maxp - rem, | 1127 | __dwc3_prepare_one_trb(dep, trb, dwc->bounce_addr, maxp - rem, |
1128 | false, 0, req->request.stream_id, | 1128 | false, 1, req->request.stream_id, |
1129 | req->request.short_not_ok, | 1129 | req->request.short_not_ok, |
1130 | req->request.no_interrupt); | 1130 | req->request.no_interrupt); |
1131 | } else if (req->request.zero && req->request.length && | 1131 | } else if (req->request.zero && req->request.length && |
@@ -1141,7 +1141,7 @@ static void dwc3_prepare_one_trb_linear(struct dwc3_ep *dep, | |||
1141 | /* Now prepare one extra TRB to handle ZLP */ | 1141 | /* Now prepare one extra TRB to handle ZLP */ |
1142 | trb = &dep->trb_pool[dep->trb_enqueue]; | 1142 | trb = &dep->trb_pool[dep->trb_enqueue]; |
1143 | __dwc3_prepare_one_trb(dep, trb, dwc->bounce_addr, 0, | 1143 | __dwc3_prepare_one_trb(dep, trb, dwc->bounce_addr, 0, |
1144 | false, 0, req->request.stream_id, | 1144 | false, 1, req->request.stream_id, |
1145 | req->request.short_not_ok, | 1145 | req->request.short_not_ok, |
1146 | req->request.no_interrupt); | 1146 | req->request.no_interrupt); |
1147 | } else { | 1147 | } else { |
@@ -2259,7 +2259,7 @@ static int dwc3_gadget_ep_reclaim_completed_trb(struct dwc3_ep *dep, | |||
2259 | * with one TRB pending in the ring. We need to manually clear HWO bit | 2259 | * with one TRB pending in the ring. We need to manually clear HWO bit |
2260 | * from that TRB. | 2260 | * from that TRB. |
2261 | */ | 2261 | */ |
2262 | if ((req->zero || req->unaligned) && (trb->ctrl & DWC3_TRB_CTRL_HWO)) { | 2262 | if ((req->zero || req->unaligned) && !(trb->ctrl & DWC3_TRB_CTRL_CHN)) { |
2263 | trb->ctrl &= ~DWC3_TRB_CTRL_HWO; | 2263 | trb->ctrl &= ~DWC3_TRB_CTRL_HWO; |
2264 | return 1; | 2264 | return 1; |
2265 | } | 2265 | } |