Releases: xmos/lib_xua
Releases · xmos/lib_xua
v5.2.0
- ADDED: Support for optional include header xua_conf_tasks.h with the same functionality as xua_conf_cores.h i.e. to allow insertion of tasks into the main() function (xua_conf_cores.h to be deprecated in a future release)
- ADDED: Support for define USER_MAIN_TASKS with the same functionality as USER_MAIN_CORES i.e. to allow insertion of tasks into the main() function (USER_MAIN_CORES to be deprecated in a future release)
- ADDED: Support for high bandwidth ISO endpoints
- ADDED: Delay in AudioHub() to allow time for the audio PLL to lock and master clock stabilise
- ADDED: Change to reset Software PLL DCO setting to midpoint when there's a change in clock source
- ADDED: Where possible TILE_NUM defines are now derived from PORT defines in the application XN file
- ADDED: Check for I2S timing violation. Can be enabled by running cmake with -DENABLE_I2S_TIMING_CHECK=ON
- CHANGED: When Software PLL is enabled, report external clock as invalid when the USB sampling frequency doesn't match the digital input sampling frequency
- CHANGED: AUDIO_IO_TILE renamed to XUA_AUDIO_IO_TILE_NUM
- CHANGED: XUA_TILE renamed to XUA_XUD_TILE_NUM
- CHANGED: MIDI_TILE renamed to XUA_MIDI_TILE_NUM
- CHANGED: SPDIF_TX_TILE renamed to XUA_SPDIF_TX_TILE_NUM
- CHANGED: PDM_TILE renamed to XUA_MIC_PDM_TILE_NUM
- CHANGED: PLL_REF_TILE renamed to XUA_PLL_REF_TILE_NUM
- CHANGED: Supported optional configuration header files user_main_cores.h, user_main_declarations.h and user_main_globals.h should now be named xua_conf_cores.h, xua_conf_declarations.h and xua_conf_globals.h respectively
- CHANGED: Renamed AN00246 example to app_xua
- CHANGED: Mixer optimisation to do output volume control after mixing, instead of in GiveSamplesToDevice()
- CHANGED: Mixer optimisation to speed up sample exchange between mixer and audiohub, to fix I2S timing violation causing intermittent test failures
- CHANGED: Channel protocol between audiohub and SDFIF TX extended to communicate SPDIF audio sample length
- FIXED: Issue with master clock not present for digital receive (only) configs when using the Software PLL
- FIXED: Reset Software PLL phase/frequency detector when digital clock becomes invalid to prevent incorrect error input to sigma-delta modulator
- FIXED: Incorrect values of bLockDelayUnits and bLockDelay in async mode
- REMOVED: Application notes AN00247 and AN00248 from examples folder. Instead see https://www.xmos.com/application-notes/
- Changes to dependencies:
- lib_locks: 2.3.1 -> 2.3.2
- lib_logging: 3.3.1 -> 3.4.0
- lib_spdif: 6.2.1 -> 7.0.0
- lib_xud: 3.0.1 -> 4.0.0
v5.1.0
- ADDED: Enumeration of vendor specific control interface as WinUSB compatible on Windows. Can be disabled by defining ENUMERATE_CONTROL_INTF_AS_WINUSB to 0
- ADDED: Optional user_main_declarations.h and user_main_cores.h headers to allow insertion of declarations and tasks for extending main()
- ADDED: XUA_LOW_POWER_NON_STREAMING define allowing low-power state when not streaming which stops I2S and provides additional user callback
- ADDED: Calls to user functions XUA_UserSuspendPowerDown() and XUA_UserResumePowerUp() to allow user code to run when the device is suspended or resumed (default implementations are empty)
- ADDED: Documentation of XUA_CHAN_BUFF_CTRL
- CHANGED: Suspend/resume notification from lib_xud (added in v3.0.0) used rather than overriding XUD_UserSuspend() and XUD_UserResume()
- CHANGED: Made p_off_mclk nullable for XUA_Buffer; this port is now only required either in configurations using Synchronous mode and using the application PLL to clock the USB buffers, or for configurations using Asynchronous mode and using the reference clock to clock the USB buffers
- CHANGED: Renamed USB_CONTROL_DESCS define to XUA_USB_CONTROL_DESCS
- CHANGED: AN00248 updated so that it uses lib_xua main() instead of custom main()
- CHANGED: UserAudioStreamStart and UserAudioStreamStop replaced by single UserAudioStreamState(in, out) API with arguments indicating whether input or output streams are active
- CHANGED: Functionality associated with AUDIO_CLASS_FALLBACK and FULL_SPEED_AUDIO_2 moved to XUA_AUDIO_CLASS_FS and XUA_AUDIO_CLASS_HS
- CHANGED: Simplification of USB string table handling
- CHANGED: lib_xud's USB_TILE define derived from lib_xua's XUD_TILE define (using xud_conf.h)
- FIXED: wMaxPacketSize for MIDI bulk IN and OUT endpoints incorrectly set when running at full-speed
- FIXED: p_mclk_in and clk_audio_bclk not correctly nullable when I2S not in use.
- FIXED: Incorrect clk_audio_mclk nullability for XUA_AudioHub; this clock block is only required for configurations with ADAT or SPDIF TX
- FIXED: Compilation error with NUM_USB_CHAN_IN=0, NUM_USB_CHAN_OUT=0 and HID_CONTROLS=1
- FIXED: HID functionality with AUDIO_CLASS = 1
- FIXED: Alignment issue with HID_Descriptor memory that was causing USB_GET_DESCRIPTOR for the HID interface to fail leading to failing USB3CV HID Descriptor test
- FIXED: Device enumeration error when both XUA_DFU_EN and XUA_USB_CONTROL_DESCS enabled
- FIXED: UAC2 descriptors during full-speed operation
- FIXED: Compiler error when PDM mics used and EXCLUDE_USB_AUDIO_MAIN is not defined.
- FIXED: Guard on epTypeTableOut[] declaration where incorrect EP type for audio out endpoint occurred if additional custom endpoints are added
- FIXED: String descriptors not updated when using runtime API (#406)
- FIXED: Strings relating to items such as Clock Selector, Clock, DFU, etc not updated when using run time API function setVendorString()
- REMOVED: Support for iAP EA Native Transport endpoints
- Changes to dependencies:
- lib_sw_pll: 2.3.1 -> 2.4.0
- lib_xud: 2.4.1 -> 3.0.1
v5.0.0
- ADDED: Support for DFU 1.1 DFU_DETACH with bitWillDetach set to 1
- ADDED: Enumerate with the DFU interface as WINUSB compatible. This is done by updating the bcdUSB version to 2.01 and providing the BOS and MSOS2.0 descriptors listing WINUSB compatibility at enumeration
- ADDED: Support for XMOS_DFU_REVERTFACTORY arriving as a USB_BMREQ_H2D_VENDOR_INT request to work with the latest Thesycon DFU driver on Windows
- ADDED: Support for building the xmosdfu application on MacOS arm64
- ADDED: MIDI support with UAC1.0
- ADDED: DFU support with UAC1.0
- CHANGED: By default, enumerate with iSerialNumber set to None(0) in the device descriptor
- CHANGED: xmosdfu app to use DFU_DETACH
- CHANGED: xmosdfu app to send XMOS_DFU_REVERTFACTORY as bmRequestType.Type = Vendor
- CHANGED: xmosdfu app command line for specifying runtime and DFU mode PIDs
- CHANGED: Limit HS_STREAM_FORMAT_OUTPUT_1/2/3_MAXPACKETSIZE to 1024 bytes to fix bcdUSB version 2.01 USB device supporting a sampling rate of 192KHz not enumerating on Windows
- CHANGED: Added default value (1) for XUA_QUAD_SPI_FLASH
- CHANGED: Default value of FLASH_MAX_UPGRADE_SIZE to 512 KB
- CHANGED: Build examples using XCommon CMake instead of XCommon
- CHANGED: AN00248 now targets XK-EVK-XU316 and uses mic_array version 5 (new API)
- CHANGED: Examples use lib_board_support for XK-AUDIO-316-MC-AB support code
- CHANGED: Master clock port no longer used if not required, for example when using I2S slave with USB disabled
- FIXED: Build issue when XUA_NUM_PDM_MICS > 0
- FIXED: baInterfaceNr field in MIDI Class-specific AC Interface Descriptor to specify the correct MIDI streaming interface number
- REMOVED: Support for PDM mics for xcore-200 targets
- Changes to dependencies:
- lib_adat: 1.2.0 -> 2.0.1
- lib_dsp: Removed dependency
- lib_locks: 2.2.0 -> 2.3.1
- lib_logging: 3.2.0 -> 3.3.1
- lib_mic_array: 4.6.0 -> 5.5.0
- lib_spdif: 6.1.1 -> 6.2.1
- lib_sw_pll: 2.2.0 -> 2.3.1
- lib_xassert: 4.2.0 -> 4.3.1
- lib_xcore_math: Added dependency 2.4.0
- lib_xud: 2.3.2 -> 2.4.0
v4.2.0
- CHANGED: lsats instruction used for saturation in the mixer
- CHANGED: Mixer task communication scheme simplified, aiding code reuse &
performance - CHANGED: Audio Class Control Interface no longer presented in descriptors
if NUM_USB_CHAN_IN and NUM_USB_CHAN_OUT are both zero - CHANGED: Buffering sub-system no longer spawns if NUM_USB_CHAN_IN and
NUM_USB_CHAN_OUT are both zero - CHANGED: Communication of commands between tasks now uniformly uses
control tokens. Potentially making mix & match of components more tractable
in the future - Changes to dependencies:
- lib_spdif: 6.1.0 -> 6.1.1
- lib_xud: 2.3.1 -> 2.3.2
v4.1.0
- ADDED: MIDI unit and sub-system tests
- CHANGED: Only the minimum number of ADAT input formats are enabled based
on the supported sample rates - CHANGED: Enabling ADAT tx enables different channel count interface alts,
based on sample rate - CHANGED: Input audio buffer size and the exit condition underflow modified
to to fix buffer underflow in some configurations - CHANGED: CT_END token based handshake in MIDI channels transactions,
reducing opportuninity for deadlock - FIXED: Device fails to enumerate when ADAT and S/PDIF transmit are
enabled - FIXED: Update software PLL at the correct rate for ADAT S/MUX
- FIXED: Incorrect internal input EP count for input only devices
- FIXED: Samples transferred to ADAT tx too frequently in TDM mode
- FIXED: S/MUX not initialised to a value based on DEFAULT_FREQ in
clockgen - FIXED: Trap when moving to DSD mode on XS3A based devices
- Changes to dependencies:
- lib_adat: 1.0.1 -> 1.2.0
- lib_locks: 2.1.0 -> 2.2.0
- lib_logging: 3.1.1 -> 3.2.0
- lib_sw_pll: 2.1.0 -> 2.2.0
- lib_xassert: 4.1.0 -> 4.2.0
v4.0.0
- ADDED: Support for XCommon CMake build system
- FIXED: Output volume control not enabled by default when MIXER disabled
- FIXED: Full 32bit result of volume processing not calculated when
required - FIXED: Input stream sending an erroneous zero-length packet when exiting
underflow state - FIXED Build failures when XUA_USB_EN = 0
- FIXED: Clock configuration issues when ADAT and S/PDIF receive are
enabled (#352) - FIXED: Repeated old S/PDIF and ADAT samples when entering underflow
state - CHANGED: QUAD_SPI_FLASH replaced by XUA_QUAD_SPI_FLASH (default: 1)
- CHANGED: UserBufferManagementInit() now takes a sample rate parameter
- CHANGED: xcore.ai targets use sigma-delta software PLL for clock recovery
of digital Rx streams and synchronous USB audio by default - CHANGED: Windows host mixer control application now requires driver GUID
option - Changes to dependencies:
- lib_dsp: 6.2.1 -> 6.3.0
- lib_mic_array: 4.5.0 -> 4.6.0
- lib_spdif: 5.0.1 -> 6.1.0
- lib_sw_pll: Added dependency 2.1.0
- lib_xud: 2.2.3 -> 2.3.1
v3.5.1
v3.5.0
- ADDED: Configurable word-length for I2S/TDM via XUA_I2S_N_BITS
- ADDED: Support for statically defined custom HID descriptor
- CHANGED: Rearranged main() such that adding custom code that uses lib_xud
is possible - CHANGED: bNumConfigurations changed from 2 to 1, removing a work-around to
stop old Windows versions loading the composite driver - FIXED: Memory corruption due to erroneous initialisation of mixer
weights when not in use (#152) - FIXED: UserHostActive() not being called as expected (#326)
- FIXED: Exception when entering DSD mode (#327)
- Changes to dependencies:
- lib_spdif: 4.2.1 -> 5.0.0
- lib_xud: 2.2.2 -> 2.2.3
v3.4.0
- ADDED: Unit tests for mixer functionality
- ADDED: Host mixer control applications (for Win/macOS)
- CHANGED: Small tidies to mixer implementation
- CHANGED: Improved mixer control channel communication protocol to avoid
deadlock situations - CHANGED: By default, output volume processing occurs in mixer task, if
present. Previously occurred in decouple task - CHANGED: Some optimisations in sample transfer from decouple task
- FIXED: Exception on startup when USB input disabled
- FIXED: Full 32bit volume processing only applied when required
- FIXED: Setting OUT_VOLUME_AFTER_MIX to zero now has the expected effect
- Changes to dependencies:
- lib_xud: 2.2.1 -> 2.2.2