summaryrefslogtreecommitdiff
path: root/drivers/usb/dwc3/core.c
diff options
context:
space:
mode:
authorNikhil Badola <nikhil.badola@freescale.com>2015-03-26 03:44:00 (GMT)
committerHonghua Yin <Hong-Hua.Yin@freescale.com>2015-03-30 01:46:51 (GMT)
commitae91f5e5859b48f4b2a568b96ecd111003d6bca3 (patch)
treec9c5ef74c53d735ef03b017affb02e936dcbad69 /drivers/usb/dwc3/core.c
parent4a8d624bde57986a84c07ce930a5a6a453ef9ff5 (diff)
downloadlinux-fsl-qoriq-ae91f5e5859b48f4b2a568b96ecd111003d6bca3.tar.xz
drivers:usb:dwc3 : Implement workaround for Erratum A009116
Write fladj register adjusts (micro)frame length to appropriate value thus avoiding USB 2.0 devices to time-out over a longer run Signed-off-by: Nikhil Badola <nikhil.badola@freescale.com> Change-Id: I26df8b7d134d08171a096dba7871f7334be02315 Reviewed-on: http://git.am.freescale.net:8181/33664 Tested-by: Review Code-CDREVIEW <CDREVIEW@freescale.com> Reviewed-by: Ramneek Mehresh <ramneek.mehresh@freescale.com> Reviewed-by: Honghua Yin <Hong-Hua.Yin@freescale.com>
Diffstat (limited to 'drivers/usb/dwc3/core.c')
-rw-r--r--drivers/usb/dwc3/core.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
index bd1a8b6..4787d66 100644
--- a/drivers/usb/dwc3/core.c
+++ b/drivers/usb/dwc3/core.c
@@ -391,6 +391,8 @@ static int dwc3_probe(struct platform_device *pdev)
dwc->usb3_phy = devm_usb_get_phy_by_phandle(dev, "usb-phy", 1);
dwc->needs_fifo_resize = of_property_read_bool(node, "tx-fifo-resize");
+ dwc->configure_gfladj =
+ of_property_read_bool(node, "configure-gfladj");
dwc->dr_mode = of_usb_get_dr_mode(node);
} else if (pdata) {
dwc->maximum_speed = pdata->maximum_speed;
@@ -488,6 +490,11 @@ static int dwc3_probe(struct platform_device *pdev)
goto err1;
}
+ /* Adjust Frame Length */
+ if (dwc->configure_gfladj)
+ dwc3_writel(dwc->regs, DWC3_GFLADJ, GFLADJ_30MHZ_REG_SEL |
+ GFLADJ_30MHZ(GFLADJ_30MHZ_DEFAULT));
+
if (IS_ENABLED(CONFIG_USB_DWC3_HOST))
dwc->dr_mode = USB_DR_MODE_HOST;
else if (IS_ENABLED(CONFIG_USB_DWC3_GADGET))