diff options
| author | Sergei Shtylyov <sshtylyov@ru.mvista.com> | 2009-02-21 15:31:13 -0800 | 
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@suse.de> | 2009-02-27 14:40:51 -0800 | 
| commit | 51d9f3e100a8f8cc2be89d5f13d37de61e2da38a (patch) | |
| tree | 8d5f6386c23b22a6dfd420c3ed08e0f39f768cd0 | |
| parent | dc61d238b8c850c34632ae1fbbdea529f8c41d16 (diff) | |
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.c | 7 | 
1 files changed, 1 insertions, 6 deletions
| diff --git a/drivers/usb/musb/musb_host.c b/drivers/usb/musb/musb_host.c index c74ebadd4b9d..fc79e76b3845 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: | 
