Commit b10e1c25 authored by Thinh Nguyen's avatar Thinh Nguyen Committed by Felipe Balbi
Browse files

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: default avatarThinh Nguyen <thinhn@synopsys.com>
Signed-off-by: default avatarFelipe Balbi <balbi@kernel.org>
parent 140ca4cf
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -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
+10 −3
Original line number Diff line number Diff line
@@ -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;