summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorStefan Agner <stefan.agner@toradex.com>2017-06-05 13:56:18 -0700
committerStefan Agner <stefan.agner@toradex.com>2017-06-05 16:31:53 -0700
commit0e9e31afba77e478250bedaf0e6a9a2a47aa04f1 (patch)
tree56317ea5c461e8df30c5c49b9d0ae482102b5096 /drivers
parentf72fe627c3e7a97008b8dd5d9ceb6df1dcd347ee (diff)
usb: ci_udc: insert delay after setup
Using the SDP (Serial Download Protocol) in combination with some USB hosts showed warnings such as: EP0/out FAIL info=4018080 pg0=8df79500 ERROR: Unexpected report 4 at ../drivers/usb/gadget/f_sdp.c:327/sdp_rx_data_complete() It seems that the descriptors are somehow not ready/overwritten or similar. The exact cause and issue is not unterstood, but a delay after handle_setup() seems to resolve the issue with three different USB host machines which had previously shown the issue regularly. Signed-off-by: Stefan Agner <stefan.agner@toradex.com> Acked-by: Brandon Shibley <brandon.shibley@toradex.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/usb/gadget/ci_udc.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/usb/gadget/ci_udc.c b/drivers/usb/gadget/ci_udc.c
index 05c01ce5d6..a47b08ae72 100644
--- a/drivers/usb/gadget/ci_udc.c
+++ b/drivers/usb/gadget/ci_udc.c
@@ -836,8 +836,10 @@ void udc_irq(void)
#else
n = readl(&udc->epstat);
#endif
- if (n & EPT_RX(0))
+ if (n & EPT_RX(0)) {
handle_setup();
+ udelay(100);
+ }
n = readl(&udc->epcomp);
if (n != 0)