diff options
author | Stefan Agner <stefan.agner@toradex.com> | 2017-06-05 13:56:18 -0700 |
---|---|---|
committer | Stefan Agner <stefan.agner@toradex.com> | 2017-06-05 16:31:53 -0700 |
commit | 0e9e31afba77e478250bedaf0e6a9a2a47aa04f1 (patch) | |
tree | 56317ea5c461e8df30c5c49b9d0ae482102b5096 | |
parent | f72fe627c3e7a97008b8dd5d9ceb6df1dcd347ee (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>
-rw-r--r-- | drivers/usb/gadget/ci_udc.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/usb/gadget/ci_udc.c b/drivers/usb/gadget/ci_udc.c index 05c01ce5d6e..a47b08ae72e 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) |