diff options
author | Felipe Balbi <balbi@ti.com> | 2011-10-14 07:51:38 -0400 |
---|---|---|
committer | Felipe Balbi <balbi@ti.com> | 2011-12-12 04:48:35 -0500 |
commit | 05870c5ba2002c7d49adf8875cca49ee062af894 (patch) | |
tree | c70903c762bfddb1ca6b5b387be2a709c47b1e44 | |
parent | fae2b904aa85beecd0950026de28921ae65fb3da (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.c | 16 |
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; |