Commit 8db7ed15 authored by Felipe Balbi's avatar Felipe Balbi
Browse files

usb: dwc3: gadget: start core on Rx.Detect



When we set Run/Stop bit, we also move the
core to Rx.Detect state so that USB3 handshake
can start from a known location.

Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
parent 457e84b6
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -202,6 +202,15 @@

#define DWC3_DCTL_APPL1RES	(1 << 23)

#define DWC3_DCTL_TRGTULST_MASK	(0x0f << 17)
#define DWC3_DCTL_TRGTULST(n)	((n) << 17)

#define DWC3_DCTL_TRGTULST_U2	(DWC3_DCTL_TRGTULST(2))
#define DWC3_DCTL_TRGTULST_U3	(DWC3_DCTL_TRGTULST(3))
#define DWC3_DCTL_TRGTULST_SS_DIS (DWC3_DCTL_TRGTULST(4))
#define DWC3_DCTL_TRGTULST_RX_DET (DWC3_DCTL_TRGTULST(5))
#define DWC3_DCTL_TRGTULST_SS_INACT (DWC3_DCTL_TRGTULST(6))

#define DWC3_DCTL_INITU2ENA	(1 << 12)
#define DWC3_DCTL_ACCEPTU2ENA	(1 << 11)
#define DWC3_DCTL_INITU1ENA	(1 << 10)
+6 −3
Original line number Diff line number Diff line
@@ -1313,10 +1313,13 @@ static void dwc3_gadget_run_stop(struct dwc3 *dwc, int is_on)
	u32			timeout = 500;

	reg = dwc3_readl(dwc->regs, DWC3_DCTL);
	if (is_on)
		reg |= DWC3_DCTL_RUN_STOP;
	else
	if (is_on) {
		reg &= ~DWC3_DCTL_TRGTULST_MASK;
		reg |= (DWC3_DCTL_RUN_STOP
				| DWC3_DCTL_TRGTULST_RX_DET);
	} else {
		reg &= ~DWC3_DCTL_RUN_STOP;
	}

	dwc3_writel(dwc->regs, DWC3_DCTL, reg);