aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/usb/musb/musb_gadget.c20
1 files changed, 17 insertions, 3 deletions
diff --git a/drivers/usb/musb/musb_gadget.c b/drivers/usb/musb/musb_gadget.c
index 6fca870e957e..de0ca90ceb9b 100644
--- a/drivers/usb/musb/musb_gadget.c
+++ b/drivers/usb/musb/musb_gadget.c
@@ -568,11 +568,19 @@ static void rxstate(struct musb *musb, struct musb_request *req)
568{ 568{
569 const u8 epnum = req->epnum; 569 const u8 epnum = req->epnum;
570 struct usb_request *request = &req->request; 570 struct usb_request *request = &req->request;
571 struct musb_ep *musb_ep = &musb->endpoints[epnum].ep_out; 571 struct musb_ep *musb_ep;
572 void __iomem *epio = musb->endpoints[epnum].regs; 572 void __iomem *epio = musb->endpoints[epnum].regs;
573 unsigned fifo_count = 0; 573 unsigned fifo_count = 0;
574 u16 len = musb_ep->packet_sz; 574 u16 len;
575 u16 csr = musb_readw(epio, MUSB_RXCSR); 575 u16 csr = musb_readw(epio, MUSB_RXCSR);
576 struct musb_hw_ep *hw_ep = &musb->endpoints[epnum];
577
578 if (hw_ep->is_shared_fifo)
579 musb_ep = &hw_ep->ep_in;
580 else
581 musb_ep = &hw_ep->ep_out;
582
583 len = musb_ep->packet_sz;
576 584
577 /* We shouldn't get here while DMA is active, but we do... */ 585 /* We shouldn't get here while DMA is active, but we do... */
578 if (dma_channel_status(musb_ep->dma) == MUSB_DMA_STATUS_BUSY) { 586 if (dma_channel_status(musb_ep->dma) == MUSB_DMA_STATUS_BUSY) {
@@ -740,9 +748,15 @@ void musb_g_rx(struct musb *musb, u8 epnum)
740 u16 csr; 748 u16 csr;
741 struct usb_request *request; 749 struct usb_request *request;
742 void __iomem *mbase = musb->mregs; 750 void __iomem *mbase = musb->mregs;
743 struct musb_ep *musb_ep = &musb->endpoints[epnum].ep_out; 751 struct musb_ep *musb_ep;
744 void __iomem *epio = musb->endpoints[epnum].regs; 752 void __iomem *epio = musb->endpoints[epnum].regs;
745 struct dma_channel *dma; 753 struct dma_channel *dma;
754 struct musb_hw_ep *hw_ep = &musb->endpoints[epnum];
755
756 if (hw_ep->is_shared_fifo)
757 musb_ep = &hw_ep->ep_in;
758 else
759 musb_ep = &hw_ep->ep_out;
746 760
747 musb_ep_select(mbase, epnum); 761 musb_ep_select(mbase, epnum);
748 762