From d4db75dfb2434ca65a5c973392feebc64d83b101 Mon Sep 17 00:00:00 2001 From: Harro Haan Date: Mon, 1 Mar 2010 17:54:55 +0100 Subject: [PATCH] --- yaml --- r: 191726 b: refs/heads/master c: 762253741942d8ddbaca1c1ee62d7ed57544332b h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/usb/gadget/at91_udc.c | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index ade04ae0c7cc..9b4b62bce8e9 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: e8faff7330a3501eafc9bfe5f4f15af444be29f5 +refs/heads/master: 762253741942d8ddbaca1c1ee62d7ed57544332b diff --git a/trunk/drivers/usb/gadget/at91_udc.c b/trunk/drivers/usb/gadget/at91_udc.c index 12ac9cd32a07..b3bd22ef82ba 100644 --- a/trunk/drivers/usb/gadget/at91_udc.c +++ b/trunk/drivers/usb/gadget/at91_udc.c @@ -366,6 +366,13 @@ static int read_fifo (struct at91_ep *ep, struct at91_request *req) 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;