Swaminathan S wrote:

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]>

   AFAIK, this code is partly authored by MontaVista.


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
[...]
@@ -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;
        }

NAK this part. The STALL handling is totally insane in this driver and this is a palliatve, not a fix. I'm hoping to post a real fix RSN.

WBR, Sergei

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

Reply via email to