Sorry if this is already reported.

msm72k_dequeue() is not resetting ep->last when ep->req = 0.
All transfers after that will fail because usb_ept_queue_xfer() can't
set ep->req correctly.
This patch fixes it.

Toshi

diff --git a/drivers/usb/gadget/msm72k_udc.c b/drivers/usb/gadget/msm72k_udc.c
index 78397b3..73c5d90 100644
--- a/drivers/usb/gadget/msm72k_udc.c
+++ b/drivers/usb/gadget/msm72k_udc.c
@@ -1568,8 +1568,11 @@ static int msm72k_dequeue(struct usb_ep *_ep, struct usb_
                        /* remove from linked list */
                        if (prev)
                                prev->next = cur->next;
-                       else
+                       else {
                                ep->req = cur->next;
+                               if (ep->req == 0)
+                                       ep->last = 0;
+                       }
                        prev = cur;
                        /* break from loop */
                        cur = NULL;

-- 
unsubscribe: android-kernel+unsubscr...@googlegroups.com
website: http://groups.google.com/group/android-kernel

To unsubscribe from this group, send email to 
android-kernel+unsubscribegooglegroups.com or reply to this email with the 
words "REMOVE ME" as the subject.

Reply via email to