aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFelipe Balbi <balbi@ti.com>2011-10-14 07:51:38 -0400
committerFelipe Balbi <balbi@ti.com>2011-12-12 04:48:35 -0500
commit05870c5ba2002c7d49adf8875cca49ee062af894 (patch)
treec70903c762bfddb1ca6b5b387be2a709c47b1e44
parentfae2b904aa85beecd0950026de28921ae65fb3da (diff)
usb: dwc3: workaround: missing USB3 Reset event
DWC3 revisions <1.90a have an issue which would cause a missing USB3 Reset event. In such cases, it's suggested that we follow the steps of a normal USB3 Reset on Connection Done Event. Signed-off-by: Felipe Balbi <balbi@ti.com>
-rw-r--r--drivers/usb/dwc3/gadget.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
index 0a6deeaf3377..6704a52c9f12 100644
--- a/drivers/usb/dwc3/gadget.c
+++ b/drivers/usb/dwc3/gadget.c
@@ -1756,6 +1756,22 @@ static void dwc3_gadget_conndone_interrupt(struct dwc3 *dwc)
1756 1756
1757 switch (speed) { 1757 switch (speed) {
1758 case DWC3_DCFG_SUPERSPEED: 1758 case DWC3_DCFG_SUPERSPEED:
1759 /*
1760 * WORKAROUND: DWC3 revisions <1.90a have an issue which
1761 * would cause a missing USB3 Reset event.
1762 *
1763 * In such situations, we should force a USB3 Reset
1764 * event by calling our dwc3_gadget_reset_interrupt()
1765 * routine.
1766 *
1767 * Refers to:
1768 *
1769 * STAR#9000483510: RTL: SS : USB3 reset event may
1770 * not be generated always when the link enters poll
1771 */
1772 if (dwc->revision < DWC3_REVISION_190A)
1773 dwc3_gadget_reset_interrupt(dwc);
1774
1759 dwc3_gadget_ep0_desc.wMaxPacketSize = cpu_to_le16(512); 1775 dwc3_gadget_ep0_desc.wMaxPacketSize = cpu_to_le16(512);
1760 dwc->gadget.ep0->maxpacket = 512; 1776 dwc->gadget.ep0->maxpacket = 512;
1761 dwc->gadget.speed = USB_SPEED_SUPER; 1777 dwc->gadget.speed = USB_SPEED_SUPER;