usb: dwc3: gadget: Handle streams
Get series with b4
b4 am [email protected]Versions newest first · linked by author and title
- v2 Latest11 patches 1 replyIn review
- v15 patches 12 repliesSuperseded
Changes in v2 from the cover letter
- Update cover letter
- Split handling of stream and of transfer completion into smaller patches
- Reword usb_request->is_last to strictly use for streams
- Enforce transfer completion handling to only for stream capable endpoints
Patches in v2 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/11 | usb: gadget: Introduce usb_request->is_lastinclude/ | +3 | 0 replies | |
| 2/11 | usb: gadget: f_tcm: Inform last stream requestdrivers/ | +3 | 0 replies | |
| 3/11 | usb: dwc3: gadget: Continue to process pending requestsdrivers/ | +21 | 0 replies | |
| 4/11 | usb: dwc3: gadget: Check for in-progress END_TRANSFERdrivers/ | +4 | 0 replies | |
| 5/11 | usb: dwc3: gadget: Refactor TRB completion handlerdrivers/ | +26 | 0 replies | |
| 6/11 | usb: dwc3: gadget: Enable XferComplete eventdrivers/ | +1 | 0 replies | |
| 7/11 | usb: dwc3: gadget: Handle XferComplete for streamsdrivers/ | +28 | 0 replies | |
| 8/11 | usb: dwc3: gadget: Wait for transfer completiondrivers/ drivers/ | +9 | 0 replies | |
| 9/11 | usb: dwc3: gadget: Don't prepare beyond a transferdrivers/ | +8 | 0 replies | |
| 10/11 | usb: dwc3: gadget: Handle stream transfersdrivers/ drivers/ drivers/ | +104 | 0 replies | |
| 11/11 | usb: dwc3: gadget: Use SET_EP_PRIME for NoStreamdrivers/ drivers/ | +13 | 0 replies |
Reviews trailers per patch
No Reviewed-by, Acked-by or Tested-by trailers for v2 yet.
Cover letter [PATCH v2 00/11] usb: dwc3: gadget: Handle streams
Overview of stream transfer requirement:
* A transfer will have a set of TRBs of the same stream ID.
* A transfer is started with a stream ID in START_TRANSFER command.
* A new stream will only start when the previous completes.
Overview of stream events:
* A "prime" from host indicates that its endpoints are active (buffers prepared and ready to receive/transmit data). The controller automatically initiates stream if it sees this.
* A "NoStream" rejection event indicates that the host isn't ready. Host will put the endpoint back to idle state. Device may need to reinitiate the stream to start transfer again.
* A Stream Found event means host accepted device initiated stream. Nothing needs to be done from driver.
To initiate a stream, the driver will issue START_TRANSFER command with a stream ID. To reinitiate the stream, the driver must issue END_TRANSFER and restart the transfer with START_TRANSFER command with the same stream ID.
This implementation handles device-initated streams (e.g. UASP driver). It also handles some hosts' quirky behavior where they only prime each endpoint once.
Prerequisite:
This series requires DWC_usb32 patch series
https://patchwork.kernel.org/project/linux-usb/list/?series=269641
[PATCH 1/2] usb: dwc3: Add support for DWC_usb32 IP [PATCH 2/2] usb: dwc3: Get MDWIDTH for DWC_usb32
Changes in v2:
- Update cover letter
- Split handling of stream and of transfer completion into smaller patches
- Reword usb_request->is_last to strictly use for streams
- Enforce transfer completion handling to only for stream capable endpoints
Thinh Nguyen (11):
usb: gadget: Introduce usb_request->is_last
usb: gadget: f_tcm: Inform last stream request
usb: dwc3: gadget: Continue to process pending requests
usb: dwc3: gadget: Check for in-progress END_TRANSFER
usb: dwc3: gadget: Refactor TRB completion handler
usb: dwc3: gadget: Enable XferComplete event
usb: dwc3: gadget: Handle XferComplete for streams
usb: dwc3: gadget: Wait for transfer completion
usb: dwc3: gadget: Don't prepare beyond a transfer
usb: dwc3: gadget: Handle stream transfers
usb: dwc3: gadget: Use SET_EP_PRIME for NoStream
drivers/usb/dwc3/core.h | 12 ++ drivers/usb/dwc3/debug.h | 2 + drivers/usb/dwc3/gadget.c | 225 +++++++++++++++++++++++++++++++----- drivers/usb/gadget/function/f_tcm.c | 3 + include/linux/usb/gadget.h | 3 + 5 files changed, 215 insertions(+), 30 deletions(-)
Signature · 1 line
2.11.0