aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/dwc3/core.c
diff options
context:
space:
mode:
authorJohn Youn <johnyoun@synopsys.com>2016-08-22 15:39:13 -0700
committerFelipe Balbi <felipe.balbi@linux.intel.com>2016-08-25 12:13:19 +0300
commit06281d460fc5d8df843786341ded16d85f50dd3d (patch)
treea32dc53a8045be7b9867b77ed4fdb93095874fff /drivers/usb/dwc3/core.c
parentusb: phy: mxs: Add DT bindings to configure TX settings (diff)
downloadlinux-dev-06281d460fc5d8df843786341ded16d85f50dd3d.tar.xz
linux-dev-06281d460fc5d8df843786341ded16d85f50dd3d.zip
usb: dwc3: Add ENDXFER command polling
ENDXFER polling is available on version 3.10a and later of the DWC_usb3 (USB 3.0) controller. With this feature, the software can poll the CMDACT bit in the DEPCMD register after issuing an ENDXFER command. This feature is enabled by writing GUCTL2[14]. This feature is NOT available on the DWC_usb31 (USB 3.1) IP. Signed-off-by: John Youn <johnyoun@synopsys.com> Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Diffstat (limited to 'drivers/usb/dwc3/core.c')
-rw-r--r--drivers/usb/dwc3/core.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
index 25e424e40462..d6d3fa0fa528 100644
--- a/drivers/usb/dwc3/core.c
+++ b/drivers/usb/dwc3/core.c
@@ -704,6 +704,17 @@ static int dwc3_core_init(struct dwc3 *dwc)
break;
}
+ /*
+ * ENDXFER polling is available on version 3.10a and later of
+ * the DWC_usb3 controller. It is NOT available in the
+ * DWC_usb31 controller.
+ */
+ if (!dwc3_is_usb31(dwc) && dwc->revision >= DWC3_REVISION_310A) {
+ reg = dwc3_readl(dwc->regs, DWC3_GUCTL2);
+ reg |= DWC3_GUCTL2_RST_ACTBITLATER;
+ dwc3_writel(dwc->regs, DWC3_GUCTL2, reg);
+ }
+
return 0;
err4: