|
@@ -261,6 +261,7 @@ __acquires(musb->lock)
|
|
|
ctrlrequest->wIndex & 0x0f;
|
|
|
struct musb_ep *musb_ep;
|
|
|
struct musb_hw_ep *ep;
|
|
|
+ struct musb_request *request;
|
|
|
void __iomem *regs;
|
|
|
int is_in;
|
|
|
u16 csr;
|
|
@@ -302,6 +303,14 @@ __acquires(musb->lock)
|
|
|
musb_writew(regs, MUSB_RXCSR, csr);
|
|
|
}
|
|
|
|
|
|
+ /* Maybe start the first request in the queue */
|
|
|
+ request = to_musb_request(
|
|
|
+ next_request(musb_ep));
|
|
|
+ if (!musb_ep->busy && request) {
|
|
|
+ DBG(3, "restarting the request\n");
|
|
|
+ musb_ep_restart(musb, request);
|
|
|
+ }
|
|
|
+
|
|
|
/* select ep0 again */
|
|
|
musb_ep_select(mbase, 0);
|
|
|
} break;
|