Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2a58f9c1 authored by Felipe Balbi's avatar Felipe Balbi
Browse files

usb: dwc3: gadget: disable automatic calculation of ACK TP NUMP



Now that we calculate DCFG.NUMP, we can disable
dwc3's automatic calculation so we maximize our
chances of very high throughtput through the use of
bursts.

Signed-off-by: default avatarFelipe Balbi <felipe.balbi@linux.intel.com>
parent 676e3497
Loading
Loading
Loading
Loading
+5 −0
Original line number Original line Diff line number Diff line
@@ -165,6 +165,11 @@
#define DWC3_DESCFETCHQ		13
#define DWC3_DESCFETCHQ		13
#define DWC3_EVENTQ		15
#define DWC3_EVENTQ		15


/* Global RX Threshold Configuration Register */
#define DWC3_GRXTHRCFG_MAXRXBURSTSIZE(n) (((n) & 0x1f) << 19)
#define DWC3_GRXTHRCFG_RXPKTCNT(n) (((n) & 0xf) << 24)
#define DWC3_GRXTHRCFG_PKTCNTSEL (1 << 29)

/* Global Configuration Register */
/* Global Configuration Register */
#define DWC3_GCTL_PWRDNSCALE(n)	((n) << 19)
#define DWC3_GCTL_PWRDNSCALE(n)	((n) << 19)
#define DWC3_GCTL_U2RSTECN	(1 << 16)
#define DWC3_GCTL_U2RSTECN	(1 << 16)
+11 −0
Original line number Original line Diff line number Diff line
@@ -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);