The EP0 code routinely ignores interrupt at end of the data phase because of musb_g_ep0_giveback() resetting the state machine to "idle, waiting for SETUP" phase prematurely.
Signed-off-by: Sergei Shtylyov <[email protected]> --- This fixes most of the unhandled gadget interrupts that generic_interrupt() and davinci_interrupt() have been hiding from user by faking their result and only emitting 5th level debug message (for what is clearly an error). drivers/usb/musb/musb_gadget_ep0.c | 1 - 1 files changed, 1 deletion(-) Index: linux-2.6/drivers/usb/musb/musb_gadget_ep0.c =================================================================== --- linux-2.6.orig/drivers/usb/musb/musb_gadget_ep0.c +++ linux-2.6/drivers/usb/musb/musb_gadget_ep0.c @@ -197,7 +197,6 @@ service_in_request(struct musb *musb, co static void musb_g_ep0_giveback(struct musb *musb, struct usb_request *req) { musb_g_giveback(&musb->endpoints[0].ep_in, req, 0); - musb->ep0_state = MUSB_EP0_STAGE_SETUP; } /* _______________________________________________ Davinci-linux-open-source mailing list [email protected] http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source
