diff options
author | Nikhil Badola <nikhil.badola@freescale.com> | 2015-03-26 03:44:00 (GMT) |
---|---|---|
committer | Honghua Yin <Hong-Hua.Yin@freescale.com> | 2015-03-30 01:46:51 (GMT) |
commit | ae91f5e5859b48f4b2a568b96ecd111003d6bca3 (patch) | |
tree | c9c5ef74c53d735ef03b017affb02e936dcbad69 /drivers/usb/dwc3/core.c | |
parent | 4a8d624bde57986a84c07ce930a5a6a453ef9ff5 (diff) | |
download | linux-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.c | 7 |
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)) |