Fixes the SENTSTALL handling code to look for EP busy status before
returning the request.  If EP is not busy do not giveback the request and
restart the request in the context of CLEAR STALL feature from the
host.

Signed-off-by: Swaminathan S <[EMAIL PROTECTED]>
---
 drivers/usb/musb/musb_gadget.c |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/usb/musb/musb_gadget.c b/drivers/usb/musb/musb_gadget.c
index d6a802c..491a3e7 100644
--- a/drivers/usb/musb/musb_gadget.c
+++ b/drivers/usb/musb/musb_gadget.c
@@ -335,10 +335,10 @@ static void txstate(struct musb *musb, struct 
musb_request *req)
 #elif defined(CONFIG_USB_TI_CPPI_DMA)
                /* program endpoint CSR first, then setup DMA */
                csr &= ~(MUSB_TXCSR_AUTOSET
-                               | MUSB_TXCSR_DMAMODE
                                | MUSB_TXCSR_P_UNDERRUN
                                | MUSB_TXCSR_TXPKTRDY);
-               csr |= MUSB_TXCSR_MODE | MUSB_TXCSR_DMAENAB;
+               csr |= MUSB_TXCSR_MODE | MUSB_TXCSR_DMAENAB |
+                       MUSB_TXCSR_DMAMODE;
                musb_writew(epio, MUSB_TXCSR,
                        (MUSB_TXCSR_P_WZC_BITS & ~MUSB_TXCSR_P_UNDERRUN)
                                | csr);
@@ -429,7 +429,7 @@ void musb_g_tx(struct musb *musb, u8 epnum)
                                musb->dma_controller->channel_abort(dma);
                        }
 
-                       if (request)
+                       if (request && musb_ep->busy)
                                musb_g_giveback(musb_ep, request, -EPIPE);
 
                        break;
@@ -759,7 +759,7 @@ void musb_g_rx(struct musb *musb, u8 epnum)
                csr &= ~MUSB_RXCSR_P_SENTSTALL;
                musb_writew(epio, MUSB_RXCSR, csr);
 
-               if (request)
+               if (request && musb_ep->busy)
                        musb_g_giveback(musb_ep, request, -EPIPE);
                goto done;
        }
-- 
1.6.0.rc1.64.g61192

_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

Reply via email to