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

usb: gadget: Introduce usb_request->is_last



To take advantage of DWC3 internal TRB prefetch and cache for
performance, inform the controller the last request with stream_id
before switching to a different stream transfer. This allows the
controller to maintain its transfer burst within the stream ID.

Introduce the usb-request is_last field to help inform the DWC3
controller of this.

Signed-off-by: default avatarThinh Nguyen <thinhn@synopsys.com>
Signed-off-by: default avatarFelipe Balbi <balbi@kernel.org>
parent 4244ba02
Loading
Loading
Loading
Loading
+3 −0
Original line number Original line Diff line number Diff line
@@ -42,6 +42,8 @@ struct usb_ep;
 * @num_mapped_sgs: number of SG entries mapped to DMA (internal)
 * @num_mapped_sgs: number of SG entries mapped to DMA (internal)
 * @length: Length of that data
 * @length: Length of that data
 * @stream_id: The stream id, when USB3.0 bulk streams are being used
 * @stream_id: The stream id, when USB3.0 bulk streams are being used
 * @is_last: Indicates if this is the last request of a stream_id before
 *	switching to a different stream (required for DWC3 controllers).
 * @no_interrupt: If true, hints that no completion irq is needed.
 * @no_interrupt: If true, hints that no completion irq is needed.
 *	Helpful sometimes with deep request queues that are handled
 *	Helpful sometimes with deep request queues that are handled
 *	directly by DMA controllers.
 *	directly by DMA controllers.
@@ -104,6 +106,7 @@ struct usb_request {
	unsigned		num_mapped_sgs;
	unsigned		num_mapped_sgs;


	unsigned		stream_id:16;
	unsigned		stream_id:16;
	unsigned		is_last:1;
	unsigned		no_interrupt:1;
	unsigned		no_interrupt:1;
	unsigned		zero:1;
	unsigned		zero:1;
	unsigned		short_not_ok:1;
	unsigned		short_not_ok:1;