usb: dwc3: gadget: Use SET_EP_PRIME for NoStream
DWC_usb32 v1.00a and later can use SET_EP_PRIME command to reinitiate a stream. Use the command to handle NoStream rejection instead of ending and restarting the endpoint. Signed-off-by: Thinh Nguyen <thinhn@synopsys.com> Signed-off-by: Felipe Balbi <balbi@kernel.org>
This commit is contained in:
parent
140ca4cfea
commit
b10e1c2535
|
@ -1161,6 +1161,9 @@ struct dwc3 {
|
|||
#define DWC31_REVISION_180A 0x3138302a
|
||||
#define DWC31_REVISION_190A 0x3139302a
|
||||
|
||||
#define DWC32_REVISION_ANY 0x0
|
||||
#define DWC32_REVISION_100A 0x3130302a
|
||||
|
||||
u32 version_type;
|
||||
|
||||
#define DWC31_VERSIONTYPE_ANY 0x0
|
||||
|
|
|
@ -2844,10 +2844,17 @@ static void dwc3_gadget_endpoint_stream_event(struct dwc3_ep *dep,
|
|||
* hosts, force to reinitate the stream until the host is ready
|
||||
* instead of waiting for the host to prime the endpoint.
|
||||
*/
|
||||
if (DWC3_VER_IS_WITHIN(DWC32, 100A, ANY)) {
|
||||
unsigned int cmd = DWC3_DGCMD_SET_ENDPOINT_PRIME;
|
||||
|
||||
dwc3_send_gadget_generic_command(dwc, cmd, dep->number);
|
||||
} else {
|
||||
dep->flags |= DWC3_EP_DELAY_START;
|
||||
dwc3_stop_active_transfer(dep, true, true);
|
||||
return;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
out:
|
||||
dep->flags &= ~DWC3_EP_IGNORE_NEXT_NOSTREAM;
|
||||
|
|
Loading…
Reference in New Issue