zephyr/modules/hal_nordic/nrfx
Tomasz Moń 440af3ecc8 modules: hal_nordic: nrfx: Make ISO IN ZLP configurable
nRF USBD ISOINCONFIG register controls USBD behavior after receiving IN
token addressed to ISO IN endpoint when the endpoint was not armed with
data. The options are:
  * NoResp, in which case there is no response (i.e. bus timeout)
  * ZeroData, in which case device responds with ZLP

This commit both makes the ISOINCONFIG value configurable and changes
the default from NoResp to ZeroData. For reference, DWC_otg controller
will always send ZLP in such case and does not have NoResp equivalent.

Automatically sending ZLP when ISO IN endpoint is not armed resolves
periodic audio dropouts observed on Mac OS with USB Audio headset
sample. Apple USB Audio class driver will attempt recovery (abort all
pending URBs, switch to alternate config 0, switch to active alternate
config and submit new URBs) every time it sees kIOReturnNotResponding
status code. During recovery no audio data can be transferred and
therefore there are gaps in the audio stream.

Apple USB Audio driver sees kIOReturnNotResponding when there is bus
timeout (i.e. IN token was sent to nRF when the endpoint was not armed
and NoResp option was active). Activating ZeroData option results in
perfectly fine (albeit short) packet that does not trigger interface
recovery and thus fixes the USB Audio issues on Mac OS.

Signed-off-by: Tomasz Moń <tomasz.mon@nordicsemi.no>
2023-07-14 09:37:04 +02:00
..
CMakeLists.txt modules: hal_nordic: CMakeLists: Add source files for GPPI helper 2023-05-05 11:47:53 +02:00
Kconfig modules: hal_nordic: nrfx: Make ISO IN ZLP configurable 2023-07-14 09:37:04 +02:00
nrfx_config_common.h modules: hal_nordic: nrfx_config: Update nrfx_config files to nrfx 3.0 2023-05-05 11:47:53 +02:00
nrfx_config_nrf51.h modules: hal_nordic: nrfx_config: Align to updates in nrfx 3.1.0 2023-07-13 13:21:41 +02:00
nrfx_config_nrf91.h modules: hal_nordic: nrfx_config: Align to updates in nrfx 3.1.0 2023-07-13 13:21:41 +02:00
nrfx_config_nrf5340_application.h modules: hal_nordic: nrfx_config: Update nrfx_config files to nrfx 3.0 2023-05-05 11:47:53 +02:00
nrfx_config_nrf5340_network.h modules: hal_nordic: nrfx_config: Update nrfx_config files to nrfx 3.0 2023-05-05 11:47:53 +02:00
nrfx_config_nrf52805.h modules: hal_nordic: nrfx_config: Align to updates in nrfx 3.1.0 2023-07-13 13:21:41 +02:00
nrfx_config_nrf52810.h modules: hal_nordic: nrfx_config: Align to updates in nrfx 3.1.0 2023-07-13 13:21:41 +02:00
nrfx_config_nrf52811.h modules: hal_nordic: nrfx_config: Align to updates in nrfx 3.1.0 2023-07-13 13:21:41 +02:00
nrfx_config_nrf52820.h modules: hal_nordic: nrfx_config: Align to updates in nrfx 3.1.0 2023-07-13 13:21:41 +02:00
nrfx_config_nrf52832.h modules: hal_nordic: nrfx_config: Align to updates in nrfx 3.1.0 2023-07-13 13:21:41 +02:00
nrfx_config_nrf52833.h modules: hal_nordic: nrfx_config: Align to updates in nrfx 3.1.0 2023-07-13 13:21:41 +02:00
nrfx_config_nrf52840.h modules: hal_nordic: nrfx_config: Align to updates in nrfx 3.1.0 2023-07-13 13:21:41 +02:00
nrfx_config.h modules: hal_nordic: nrfx: Make ISO IN ZLP configurable 2023-07-14 09:37:04 +02:00
nrfx_glue.c modules: hal_nordic: Adapt nrfx_busy_wait() for !SYS_CLOCK_EXISTS case 2022-06-15 17:04:30 -05:00
nrfx_glue.h modules: hal_nordic: nrfx_glue: Add cache auxiliary macros 2023-05-05 11:47:53 +02:00
nrfx_log.h modules: migrate includes to <zephyr/...> 2022-05-06 19:57:47 +02:00