summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Krivoschekov <dkrivoschekov@ru.mvista.com>2009-02-21 23:30:15 (GMT)
committerGreg Kroah-Hartman <gregkh@suse.de>2009-02-27 22:40:51 (GMT)
commitb7bdcb79de6de32e40dcc85a5e8c669bec2483d5 (patch)
tree8b706795aba97108910c9cd45c4f2546ff3402be
parentc2c963217bb1e8d53622d41b9e9ae706d0d02c07 (diff)
downloadlinux-fsl-qoriq-b7bdcb79de6de32e40dcc85a5e8c669bec2483d5.tar.xz
USB: musb: fix musb_host_tx() for shared endpoint FIFO
The input queue should be used for TX on endpoints which share FIFO hardware. The host TX path wasn't doing that. Shared FIFOs are most often configured for periodic endpoints, which are mostly used for RX/IN transfers ... that's probably how this bug managed to linger for a long time. [ dbrownell@users.sourceforge.net: update patch description ] Signed-off-by: Dmitry Krivoschekov <dkrivoschekov@ru.mvista.com> Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com> Acked-by: David Brownell <dbrownell@users.sourceforge.net> Cc: Felipe Balbi <felipe.balbi@nokia.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r--drivers/usb/musb/musb_host.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/usb/musb/musb_host.c b/drivers/usb/musb/musb_host.c
index a035cec..b47ca94 100644
--- a/drivers/usb/musb/musb_host.c
+++ b/drivers/usb/musb/musb_host.c
@@ -1161,7 +1161,8 @@ void musb_host_tx(struct musb *musb, u8 epnum)
struct urb *urb;
struct musb_hw_ep *hw_ep = musb->endpoints + epnum;
void __iomem *epio = hw_ep->regs;
- struct musb_qh *qh = hw_ep->out_qh;
+ struct musb_qh *qh = hw_ep->is_shared_fifo ? hw_ep->in_qh
+ : hw_ep->out_qh;
u32 status = 0;
void __iomem *mbase = musb->mregs;
struct dma_channel *dma;