|
@@ -585,12 +585,16 @@ static int __dwc3_gadget_ep_enable(struct dwc3_ep *dep,
|
|
|
if (usb_endpoint_xfer_control(desc))
|
|
|
return 0;
|
|
|
|
|
|
+ /* Initialize the TRB ring */
|
|
|
+ dep->trb_dequeue = 0;
|
|
|
+ dep->trb_enqueue = 0;
|
|
|
+ memset(dep->trb_pool, 0,
|
|
|
+ sizeof(struct dwc3_trb) * DWC3_TRB_NUM);
|
|
|
+
|
|
|
/* Link TRB. The HWO bit is never reset */
|
|
|
trb_st_hw = &dep->trb_pool[0];
|
|
|
|
|
|
trb_link = &dep->trb_pool[DWC3_TRB_NUM - 1];
|
|
|
- memset(trb_link, 0, sizeof(*trb_link));
|
|
|
-
|
|
|
trb_link->bpl = lower_32_bits(dwc3_trb_dma_offset(dep, trb_st_hw));
|
|
|
trb_link->bph = upper_32_bits(dwc3_trb_dma_offset(dep, trb_st_hw));
|
|
|
trb_link->ctrl |= DWC3_TRBCTL_LINK_TRB;
|