|
@@ -1669,6 +1669,17 @@ static int dwc3_gadget_start(struct usb_gadget *g,
|
|
}
|
|
}
|
|
dwc3_writel(dwc->regs, DWC3_DCFG, reg);
|
|
dwc3_writel(dwc->regs, DWC3_DCFG, reg);
|
|
|
|
|
|
|
|
+ /*
|
|
|
|
+ * We are telling dwc3 that we want to use DCFG.NUMP as ACK TP's NUMP
|
|
|
|
+ * field instead of letting dwc3 itself calculate that automatically.
|
|
|
|
+ *
|
|
|
|
+ * This way, we maximize the chances that we'll be able to get several
|
|
|
|
+ * bursts of data without going through any sort of endpoint throttling.
|
|
|
|
+ */
|
|
|
|
+ reg = dwc3_readl(dwc->regs, DWC3_GRXTHRCFG);
|
|
|
|
+ reg &= ~DWC3_GRXTHRCFG_PKTCNTSEL;
|
|
|
|
+ dwc3_writel(dwc->regs, DWC3_GRXTHRCFG, reg);
|
|
|
|
+
|
|
/* Start with SuperSpeed Default */
|
|
/* Start with SuperSpeed Default */
|
|
dwc3_gadget_ep0_desc.wMaxPacketSize = cpu_to_le16(512);
|
|
dwc3_gadget_ep0_desc.wMaxPacketSize = cpu_to_le16(512);
|
|
|
|
|