Add some delay to avoid reading CSR TXCOUNT too early after updating it. Signed-off-by: Anti Sullin Signed-off-by: Harro Haan Acked-by: Remy Bohmer --- drivers/usb/gadget/at91_udc.c | 7 +++++++ 1 file changed, 7 insertions(+) Index: linux-2.6.31/drivers/usb/gadget/at91_udc.c =================================================================== --- linux-2.6.31.orig/drivers/usb/gadget/at91_udc.c +++ linux-2.6.31/drivers/usb/gadget/at91_udc.c @@ -366,6 +366,13 @@ rescan: if (is_done) done(ep, req, 0); else if (ep->is_pingpong) { + /* + * One dummy read to delay the code because of a HW glitch: + * CSR returns bad RXCOUNT when read too soon after updating + * RX_DATA_BK flags. + */ + csr = __raw_readl(creg); + bufferspace -= count; buf += count; goto rescan; --