summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergei Shtylyov <sshtylyov@ru.mvista.com>2009-02-21 15:31:13 -0800
committerGreg Kroah-Hartman <gregkh@suse.de>2009-02-27 14:40:51 -0800
commit51d9f3e100a8f8cc2be89d5f13d37de61e2da38a (patch)
tree8d5f6386c23b22a6dfd420c3ed08e0f39f768cd0
parentdc61d238b8c850c34632ae1fbbdea529f8c41d16 (diff)
downloadlinux-3.10-51d9f3e100a8f8cc2be89d5f13d37de61e2da38a.tar.gz
linux-3.10-51d9f3e100a8f8cc2be89d5f13d37de61e2da38a.tar.bz2
linux-3.10-51d9f3e100a8f8cc2be89d5f13d37de61e2da38a.zip
USB: musb: fix data toggle saving with shared FIFO
For some strange reason the host side musb_giveback() decides that it's always got an IN transfer when the hardware endpoint is using a shared FIFO. This causes musb_save_toggle() to read the toggle state from the RXCSR register instead of TXCSR, and may also cause unneeded reloading of RX endpoint registers. Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com> Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r--drivers/usb/musb/musb_host.c7
1 files changed, 1 insertions, 6 deletions
diff --git a/drivers/usb/musb/musb_host.c b/drivers/usb/musb/musb_host.c
index c74ebadd4b9..fc79e76b384 100644
--- a/drivers/usb/musb/musb_host.c
+++ b/drivers/usb/musb/musb_host.c
@@ -335,16 +335,11 @@ musb_save_toggle(struct musb_hw_ep *ep, int is_in, struct urb *urb)
static struct musb_qh *
musb_giveback(struct musb_qh *qh, struct urb *urb, int status)
{
- int is_in;
struct musb_hw_ep *ep = qh->hw_ep;
struct musb *musb = ep->musb;
+ int is_in = usb_pipein(urb->pipe);
int ready = qh->is_ready;
- if (ep->is_shared_fifo)
- is_in = 1;
- else
- is_in = usb_pipein(urb->pipe);
-
/* save toggle eagerly, for paranoia */
switch (qh->type) {
case USB_ENDPOINT_XFER_BULK: