aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorDmitry Krivoschekov <dkrivoschekov@ru.mvista.com>2009-02-21 18:30:15 -0500
committerGreg Kroah-Hartman <gregkh@suse.de>2009-02-27 17:40:51 -0500
commitb7bdcb79de6de32e40dcc85a5e8c669bec2483d5 (patch)
tree8b706795aba97108910c9cd45c4f2546ff3402be /drivers
parentc2c963217bb1e8d53622d41b9e9ae706d0d02c07 (diff)
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>
Diffstat (limited to 'drivers')
-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 a035ceccf950..b47ca948bcf4 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)
1161 struct urb *urb; 1161 struct urb *urb;
1162 struct musb_hw_ep *hw_ep = musb->endpoints + epnum; 1162 struct musb_hw_ep *hw_ep = musb->endpoints + epnum;
1163 void __iomem *epio = hw_ep->regs; 1163 void __iomem *epio = hw_ep->regs;
1164 struct musb_qh *qh = hw_ep->out_qh; 1164 struct musb_qh *qh = hw_ep->is_shared_fifo ? hw_ep->in_qh
1165 : hw_ep->out_qh;
1165 u32 status = 0; 1166 u32 status = 0;
1166 void __iomem *mbase = musb->mregs; 1167 void __iomem *mbase = musb->mregs;
1167 struct dma_channel *dma; 1168 struct dma_channel *dma;