diff options
| -rw-r--r-- | drivers/usb/mtu3/mtu3_gadget_ep0.c | 12 | 
1 files changed, 10 insertions, 2 deletions
diff --git a/drivers/usb/mtu3/mtu3_gadget_ep0.c b/drivers/usb/mtu3/mtu3_gadget_ep0.c index df3fd055792f..2be182bd793a 100644 --- a/drivers/usb/mtu3/mtu3_gadget_ep0.c +++ b/drivers/usb/mtu3/mtu3_gadget_ep0.c @@ -671,8 +671,16 @@ finish:  	if (mtu->test_mode) {  		;	/* nothing to do */  	} else if (handled == USB_GADGET_DELAYED_STATUS) { -		/* handle the delay STATUS phase till receive ep_queue on ep0 */ -		mtu->delayed_status = true; + +		mreq = next_ep0_request(mtu); +		if (mreq) { +			/* already asked us to continue delayed status */ +			ep0_do_status_stage(mtu); +			ep0_req_giveback(mtu, &mreq->request); +		} else { +			/* do delayed STATUS stage till receive ep0_queue */ +			mtu->delayed_status = true; +		}  	} else if (le16_to_cpu(setup.wLength) == 0) { /* no data stage */  		ep0_do_status_stage(mtu);  | 
