diff options
author | Felipe Balbi <balbi@ti.com> | 2011-10-14 13:51:38 +0200 |
---|---|---|
committer | Felipe Balbi <balbi@ti.com> | 2011-12-12 10:48:35 +0100 |
commit | 05870c5ba2002c7d49adf8875cca49ee062af894 (patch) | |
tree | c70903c762bfddb1ca6b5b387be2a709c47b1e44 | |
parent | usb: dwc3: workaround: U1/U2 -> U0 transiton (diff) | |
download | linux-05870c5ba2002c7d49adf8875cca49ee062af894.tar.xz linux-05870c5ba2002c7d49adf8875cca49ee062af894.zip |
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) switch (speed) { case DWC3_DCFG_SUPERSPEED: + /* + * WORKAROUND: DWC3 revisions <1.90a have an issue which + * would cause a missing USB3 Reset event. + * + * In such situations, we should force a USB3 Reset + * event by calling our dwc3_gadget_reset_interrupt() + * routine. + * + * Refers to: + * + * STAR#9000483510: RTL: SS : USB3 reset event may + * not be generated always when the link enters poll + */ + if (dwc->revision < DWC3_REVISION_190A) + dwc3_gadget_reset_interrupt(dwc); + dwc3_gadget_ep0_desc.wMaxPacketSize = cpu_to_le16(512); dwc->gadget.ep0->maxpacket = 512; dwc->gadget.speed = USB_SPEED_SUPER; |