zephyr/subsys/usb
Tomasz Moń c19d34c5d3 usb: device_next: uac2: Double buffering on IN data endpoints
Application is expected to call usbd_uac2_send() on each enabled USB
Streaming Output Terminal (isochronous IN data endpoint) exactly once
every SOF. The class is bookkeeping queued transfers to make it easier
to determine component at fault when things go wrong. However, this
approach only works fine if the underlying USB device controller buffers
the data to be sent on next SOF and reports the transfer completion
immediately after data is buffered (e.g. nRF52 USBD).

While DWC2 otg also requires the SW to arm endpoint with data for the
next SOF, unlike nRF52 USBD the transfer is only considered complete
after either the IN token for isochronous endpoint is received or after
the Periodic Frame Interval elapses without IN token. This design
inevitably requires the application to be able to have at least two
buffers for isochronous IN endpoints.

Support dual buffering on IN data endpoints to facilitate sending
isochronous IN data on every SOF regardless of the underlying USB device
controller design.

Signed-off-by: Tomasz Moń <tomasz.mon@nordicsemi.no>
2024-11-30 09:36:17 +01:00
..
device usb: device: fix unaligned memory access in Audio class 2024-11-26 15:44:45 -05:00
device_next usb: device_next: uac2: Double buffering on IN data endpoints 2024-11-30 09:36:17 +01:00
host usb: shell: Remove use of ctx_shell 2024-11-26 15:43:29 -05:00
usb_c everywhere: replace double words 2024-06-22 05:40:22 -04:00
CMakeLists.txt usb: add initial USB host support 2022-12-16 13:21:12 +01:00