sw_usb_audio Change Log
=======================
1.1.0 (for Phaten)
-----

  * ADDED:     One HID thread handling the data to/from the host app
  * REMOVED:   The 2 AI DNR threads

1.0.0 (for Phaten)
-----

  * ADDED:     app_app_usb_aud_phaten_gs_ex3d_stereo_2k build config (spatial audio UAC1.0 stereo 2k)
  * ADDED:     app_app_usb_aud_phaten_gs_ex3d_stereo_8k build config (spatial audio UAC1.0 stereo 8k)
  * ADDED:     app_app_usb_aud_phaten_gs_ex3d_71_game   build config (spatial audio UAC2.0 7.1ch game mode)
  * ADDED:     app_app_usb_aud_phaten_gs_ex3d_71_music  build config (spatial audio UAC2.0 7.1ch music mode)
  * ADDED:     app_app_usb_aud_phaten_gs_ex3d_71_movie  build config (spatial audio UAC2.0 7.1ch movie mode)
  * ADDED:     app_app_usb_aud_phaten_gs_ex3d_71_drama  build config (spatial audio UAC2.0 7.1ch drama mode)
  * ADDED:     PHATEN_GS.xn the xn file supporting Phaten golden sample v2 hardware

  * Changes to dependencies:
    
    - lib_audio_dsp: Added dependancy 1.4.0

    - lib_agc: Added dependancy 1.0.0

    - lib_xcore_math: Added dependency 2.4.0

8.1.0
-----

  * ADDED:     2AMi18o18mssaax build config (MIDI, SPDIF Rx/Tx & ADAT Rx/Tx)
  * ADDED:     2AMi16o16xxxaax build config (ADAT Rx/Tx)
  * ADDED:     2AMi8o8mxxxxx build config (MIDI)
  * CHANGED:   Use lib_sw_pll code for configuring the application PLL
  * FIXED:     Use correct number of flash pages for XK-AUDIO-316-MC
  * FIXED:     Links to usb.org in documentation

  * Changes to dependencies:

    - lib_adat: 1.1.0 -> 1.2.0

      + CHANGED: example applications now run on xcore.ai hardware
      + CHANGED: example applications build using XCommon CMake

    - lib_sw_pll: 2.1.0 -> 2.2.0

      + FIXED: Enable PLL output after delay to allow it to settle
      + FIXED: Fixed frequency settings for 11,289,600Hz

    - lib_xua: 4.0.0 -> 4.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

8.0.0
-----

  * ADDED:     Support for XCommon CMake build system
  * CHANGED:   Windows control app now take GUID via a -g option, accommodating
    latest Thesycon driver packages
  * CHANGED:   app_usb_aud_xk_316_mc defaults to using xcore.ai AppPLL for
    master clock generation when syncing to digital streams or in USB sync mode,
    rather than the external CS2100 device
  * CHANGED:   UserBufferManagmentInit() implementations updated to match API
    change in lib_xua (now takes a sample rate value)
  * CHANGED:   app_usb_aud_xk_316_mc: Improvements in interaction with on-board
    power control circuitry

  * Changes to dependencies:

    - lib_adat: 1.0.1 -> 1.1.0

      + ADDED: Support for XCommon CMake build system

    - lib_dsp: 6.2.1 -> 6.3.0

      + ADDED:   Support for XCommon CMake build system

    - lib_i2c: 6.1.1 -> 6.2.0

      + ADDED: Support for XCommon CMake build system
      + REMOVED: Unused dependency lib_logging

    - lib_i2s: 5.0.0 -> 5.1.0

      + ADDED: Support for XCommon CMake build system
      + RESOLVED: Added missing shutdown feature to i2s_frame_slave
      + FIXED: Allow input and output ports in the 4-bit port implementation to
        be nullable
      + FIXED: Behaviour of the restart_check() callback function in the example
        applications
      + REMOVED: Unused dependency lib_logging
      + ADDED: Frame synch error field in i2s_config_t for I2S slave

    - lib_locks: 2.1.0 -> 2.2.0

      + ADDED: Tests now run on xcore.ai as well as xcore-200
      + ADDED: Support for XCommon CMake build system

    - lib_logging: 3.1.1 -> 3.2.0

      + ADDED:   Support for XCommon CMake build system

    - lib_mic_array: 4.5.0 -> 4.6.0

      + ADDED: Support for XCommon CMake build system

    - lib_spdif: 5.0.1 -> 6.1.0

      + ADDED:     Support for XCommon CMake build system
      + ADDED:     Support for transmit at 32kHz
      + RESOLVED:  Coding optimisations not properly enabled in receiver
      + RESOLVED:  Receiver timing issues for sample rates greater than 96kHz
      + RESOLVED:  Failure to select correct receive sample rate when the sample
        rate of the incoming stream changes
      + ADDED:     Shutdown function for S/PDIF transmitter
      + CHANGED:   Receiver rearchitected for improved performance and jitter
        tolerance
      + CHANGED:   API function names updated for uniformity between rx and tx

    - lib_sw_pll: Added dependency 2.1.0

      + ADDED: Support for XCommon CMake build system
      + ADDED: Reset PI controller state API
      + ADDED: Fixed frequency (non phase-locked) clock PLL API
      + FIXED: Init resets PI controller state
      + FIXED: Now compiles from XC using XCommon
      + ADDED: Guard source code with __XS3A__ to allow library inclusion in
        non- xcore-ai projects
      + CHANGED: Reduce PLL initialisation stabilisation delay from 10 ms to 500
        us
      + ADDED: Split SDM init function to allow separation across tiles
      + FIXED: Use non-ACK write to PLL in Sigma Delta Modulator

    - lib_xassert: 4.1.0 -> 4.2.0

      + ADDED: Support for XCommon CMake build system

    - lib_xua: 3.5.1 -> 4.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

    - lib_xud: 2.2.3 -> 2.3.1

      + FIXED:     XS3A based devices not responding to IN packets in SE0_NAK
        test mode
      + ADDED:     XMOS proprietary test mode XMOS_IN_ADDR1
      + ADDED:     Support for XCommon CMake build system
      + CHANGE:    Removed definition and use of REF_CLK_FREQ in favour of
        PLATFORM_REFERENCE_MHZ from platform.h
      + FIXED:     Do not include implementations of inline functions when
        XUD_WEAK_API is set

7.3.1
-----

  * CHANGE:    app_usb_aud_xk_evk_xu316: Mixer disabled by default

  * Changes to dependencies:

    - lib_xua: 3.5.0 -> 3.5.1

      + FIXED:     Respect I2S_CHANS_PER_FRAME when calculating bit-clock rates

7.3.0
-----

  * CHANGE:    app_usb_aud_xk_316_mc: Respect XUA_I2S_N_BITS when configuring
    external audio hardware
  * ADDED:     Support for 12.288MHz 11.2896MHz to xcore.ai AppPLL master clock
    options
  * FIXED:     app_usb_aud_xk_316_mc: DAC settings not configured when sample
    rate is lower than 48kHz

  * Changes to dependencies:

    - lib_spdif: 4.2.1 -> 5.0.1

      + FIXED:     Reinstated graceful handling of bad sample-rate/master-clock
        pair
      + CHANGED:   Updated examples for new XK-AUDIO-316-MC board
      + CHANGED:   Updated transmit to simplified implementation (note, no
        longer supports XS1 based devices)
      + CHANGED:   Removed headers SpdifReceive.h and SpdifTransmit.h. Users
        should include spdif.h

    - lib_xua: 3.4.0 -> 3.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)

    - lib_xud: 2.2.2 -> 2.2.3

      + FIXED:     XUD_UserSuspend() and XUD_UserResume() now properly marked as
        weak symbols (#374)
      + FIXED:     Incorrect time reference used during device attach process
        (#367)

7.2.0
-----

  * ADDED:     Driver information section to documentation
  * CHANGED:   AppPLL settings updated to reduce jitter (#112)
  * CHANGED:   app_usb_aud_316_mc: Improved DAC configuration sequencing
    following datasheet recommendations
  * CHANGED:   app_usb_aud_316_mc: Manual DAC setup rather than using
    auto-config to improve output quality (internal PLL no longer used)
  * FIXED:     app_usb_aud_316_mc: Intermittent output from DACs due to DAC
    auto-standby (#110)
  * FIXED:     app_usb_aud_216_mc: Define app defaults ahead of lib_xua defaults

  * Changes to dependencies:

    - lib_xua: 3.3.1 -> 3.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

    - lib_xud: 2.2.1 -> 2.2.2

      + FIXED:     Syntax error when including xud.h from C
      + CHANGE:    Various API functions optionally marked as a weak symbol
        based on XUD_WEAK_API

7.1.0
-----

  * ADDED:     Build configs for synchronous mode (uses external CS2100 device)
  * ADDED:     app_usb_aud_xk_316_mc: Build configs for xCORE as I2S slave
  * CHANGED:   app_usb_aud_xk_316_mc: Core voltage reduced to 0.9v (was 0.922v)
  * CHANGED:   Separated build configs into build-tested, partially-tested and
    fully-tested
  * CHANGED:   Documentation updates (note, "Design Guide" now "User Guide")

  * Changes to dependencies:

    - lib_adat: 1.0.0 -> 1.0.1

      + Removed duplicate header file

    - lib_i2s: 4.3.0 -> 5.0.0

      + ADDED: Support for I2S data lengths less than 32 bit.
      + ADDED: Implementation allowing use of a 4-bit port for up to 4
        simultaneous streaming inputs or outputs.

    - lib_spdif: 4.1.0 -> 4.2.1

      + CHANGED:   Documentation updates
      + ADDED:     Shutdown function for S/PDIF receiver
      + CHANGED:   spdif_tx_example updated to use XK-AUDIO-216-MC

    - lib_xua: 3.2.0 -> 3.3.1

      + CHANGED:  Documentation updates
      + CHANGED:   Define ADAT_RX renamed to XUA_ADAT_RX_EN
      + CHANGED:   Define ADAT_TX renamed to XUA_ADAT_TX_EN
      + CHANGED:   Define SPDIF_RX renamed to XUA_SPDIF_RX_EN
      + CHANGED:   Define SELF_POWERED changed to XUA_POWERMODE and associated
        defines
      + CHANGED:   Drive strength of I2S clock lines upped to 8mA on xCORE.ai
      + CHANGED:   ADC datalines sampled on falling edge of clock in TDM mode
      + CHANGED:   Improved startup behaviour of TDM clocks
      + FIXED:     Intermittent underflow at MAX_FREQ on input stream start due
        to insufficient packet buffering
      + FIXED:     Decouple buffer accounting to avoid corruption of samples

    - lib_xud: 2.1.0 -> 2.2.1

      + FIXED:     Control endpoint ready flag not properly cleared on receipt
        of SETUP transaction (#356)
      + CHANGE:    Further API functions re-authored in C (were Assembly)
      + CHANGE:    Endpoints marked as Disabled now reply with STALL if the host
        attempts to access them, previously they would NAK (#342)
      + FIXED:     Exception if host accesses an endpoint that XUD believes to
        be not in use
      + FIXED:     Timeout event properly cleaned up after tx handshake received
        (#312)
      + FIXED:     A control endpoint will respect the halt condition for OUT
        transactions when marked ready to accept SETUP transactions (#339)
      + FIXED:     USB Disconnect on self-powered devices intermittently causing
        Iso EP's to be set to not-ready indefinitely (#351)

7.0.0
-----

  * ADDED:      Application for XK-AUDIO-316-MC hardware
  * ADDED:      Support for XTC Tools 15
  * CHANGED:    Removed apps for deprecated hardware
  * CHANGED:    HID implementation for MC audio board buttons
  * CHANGED:    Moved from using sc_ repos to lib_ repos (see dependency changes
    below)
  * FIXED:      Need to drive VBUS_OUT low on xCORE-200 MC AUDIO board (#17697)

  * Changes to dependencies:

    - lib_adat: Added dependency 1.0.0

      + Initial release

    - lib_device_control: Removed dependency

    - lib_dsp: Added dependency 6.2.1

      + CHANGED: Jenkinsfile used for CI

    - lib_i2c: Added dependency 6.1.1

      + RESOLVED: Fixed timing for repeated START condition

    - lib_i2s: Added dependency 4.3.0

      + CHANGED: Use XMOS Public Licence Version 1

    - lib_locks: Added dependency 2.1.0

      + CHANGED: Use XMOS Public Licence Version 1

    - lib_logging: 2.0.1 -> 3.1.1

      + CHANGED: Jenkinsfile used for CI
      + CHANGED: Use XMOS Public Licence Version 1
      + REMOVED: not necessary cpanfile
      + CHANGED: Pin Python package versions
      + CHANGED: Build files updated to support new "xcommon" behaviour in xwaf.
      + CHANGE:   Test runner script now terminates correctly on Windows
      + ADDED:    Now supports the %p format specifier
      + CHANGE:   Ignore the case of the format specifiers
      + CHANGE:   Ignore padding and alignment characters

    - lib_mic_array: 2.0.1 -> 4.5.0

      + REMOVED: Use of Brew for CI
      + CHANGED: XMOS Jenkins Shared Library version used in CI
      + CHANGED: XN files to support 15.x.x tools
      + CHANGED: Use XMOS Public Licence Version 1
      + FIXED: Compiler warnings when MIC_DUAL_ENABLED is not defined
      + CHANGED: Pin Python package versions
      + REMOVED: not necessary cpanfile
      + CHANGED: Jenkinsfile pinned to Jenkins shared library 0.10.0
      + CHANGED: Updated the minimum version of libraries this library depends
        upon.
      + ADDED support for global define to set single/dual output buffer for
        mic_dual
      + Added mic_dual, an optimised single core, 16kHz, two channel version
        (not compatible with async interface)
      + ADDED: Support for arbitrary frame sizes
      + ADDED: #defines for mic muting
      + ADDED: Non-blocking interface to decimators for 2 mic setup
      + CHANGED: Build files updated to support new "xcommon" behaviour in xwaf.
      + Added xwaf build system support
      + Cleaned up some of the code in the FIR designer.
      + Removed fixed gain in examples
      + Update VU meter example
      + Fix port types in examples
      + Set and inherit XCC_FLAGS rather than XCC_XC_FLAGS when building library
      + Updated lib_dsp dependancy from 3.0.0 to 4.0.0
      + Modified the FIR designer to increase the first stage stopband
        attenuation.
      + Cleaned up some of the code in the FIR designer.
      + Updated docs to reflect the above.
      + Update DAC settings to work for mic array base board as well.
      + Filter design script update for usability.
      + Documentation improvement.
      + Changed DEBUG_UNIT to XASSERT_UNIT to work with lib_xassert.
      + Added upgrade advisory.
      + Added dynamic range subsection to documentation.
      + Added ability to route internal channels of the output rate of the
        mic_array to the mic_array so that they can benefit from the post
        processing of the mic_array.
      + Enabled the metadata which delivers the frame counter.
      + Small fix to the filter generator to allow the use of fewer taps in the
        final stage FIR.
      + Added significant bits collection to the metadata.
      + Added fixed gain control through define MIC_ARRAY_FIXED_GAIN.
      + Tested and enabled the debug mode for detecting frame dropping. Enabled
        by adding DEBUG_MIC_ARRAY to the Makefile.
      + Moved to using types from lib_dsp.
      + Bug fix in python FIR generator script resulting in excessive output
        ripple.
      + Default FIR coefficients now optimised for 16kHz output sample rate.
      + Added ability to remap port pins to channels.
      + MIC_ARRAY_NUM_MICS is now forced to a multiple of 4 with a warning if it
        changed.
      + Corrected MIC_ARRAY_DC_OFFSET_LOG2 default value reporting in
        documentation.

    - lib_spdif: Added dependency 4.1.0

      + CHANGED:   Use XMOS Public Licence Version 1
      + CHANGED:   Rearrange documentation files

    - lib_voice: Removed dependency

    - lib_xassert: 2.0.1 -> 4.1.0

      + CHANGED: Use XMOS Public Licence Version 1
      + REMOVED: not necessary cpanfile
      + CHANGED: Pin Python package versions
      + CHANGED: Build files updated to support new "xcommon" behaviour in xwaf.
      + CHANGE: Correct dates in LICENSE.txt files
      + CHANGE: Renamed DEBUG_UNIT to XASSERT_UNIT to prevent conflict with
        lib_logging

    - lib_xua: Added dependency 3.2.0

      + CHANGED:   Updated tests to use lib_locks (was legacy module_locks)
      + CHANGED:   Exclude HID Report functions unless the HID feature is
        enabled
      + CHANGED:   Explicit feedback EP enabled by default (see
        UAC_FORCE_FEEDBACK_EP)
      + FIXED:     Incorrect conditional compilation of HID report code
      + FIXED:     Input/output descriptors written when input/output not
        enabled. (Audio class 1.0 mode using
        XUA_USB_DESCRIPTOR_OVERWRITE_RATE_RES)

    - lib_xud: Added dependency 2.1.0

      + CHANGE:    Various optimisations to aid corner-case timings on XS3 based
        devices
      + CHANGE:    Some API functions re-authored in C (were Assembly)
      + CHANGE:    Testbench now more accurately models XS3 based devices
      + CHANGE:    Endpoint functions called on a halted endpoint will block
        until the halt condition is cleared

    - sc_adat: Removed dependency

    - sc_i2c: Removed dependency

    - sc_spdif: Removed dependency

    - sc_usb: Removed dependency

    - sc_usb_audio: Removed dependency

    - sc_usb_device: Removed dependency

    - sc_util: Removed dependency

    - sc_xud: Removed dependency

6.18.1
------

  * CHANGE:    Updated PIDs in app_usb_aud_mic_array

  * Changes to dependencies:

    - lib_device_control: Added dependency 2.0.0

      + Added the ability to select USB interface (Allows control from Windows)

    - sc_usb_audio: 6.18.0 -> 6.18.1

      + ADDED:      Vendor Specific control interface added to UAC1 descriptors
        to allow control of XVSM params from Windows (via lib_usb)

6.18.0
------

  * ADDED:     app_usb_aud_mic_array now includes control of XVSM parameters
    (see lib_xvsm_support/host for host control applications)
  * RESOLVED:  Incorrect build configurations in Eclipse project files in
    app_usb_aud_mic_array

  * Changes to dependencies:

    - lib_voice: 0.0.2 -> 0.0.3

      + Added DOA_NAIVE_DONT_THRESH to disable thresholding code

    - sc_usb_audio: 6.16.0 -> 6.18.0

      + ADDED:      Call to VendorRequests() and VendorRequests_Init() to
        Endpoint 0
      + ADDED:      VENDOR_REQUESTS_PARAMS define to allow for custom parameters
        to VendorRequest calls
      + RESOLVED:   FIR gain compensation set appropriately in lib_mic_array
        usage
      + CHANGE:     i_dsp interface renamed i_audManage

    - sc_xud: 2.4.1 -> 2.4.2

      + CHANGE:     VBUS connection to xCORE-200 no longer required when using
        XUD_PWR_BUS i.e. for bus-powered devices. This removes the need to any
        protection circuitry and allows for a reduced BOM. Note, VBUS should
        still be present for self powered devices in order to pass USB
        compliance tests.
      + RESOLVED:   Device might hang during resume if host follows resume
        signality with activity after a time close to specified minimum of
        1.33us (#11813)

6.17.0
------

  * CHANGE:    app_usb_aud_mic array: Modifications to XVSM processing
    integration
  * CHANGE:    app_usb_aud_mic_array: AEC and NS enabled by default
  * CHANGE:    app_usb_aud_mic_array: XVSM VAD output used when DOA enabled

  * Changes to dependencies:

    - lib_voice: 0.0.1 -> 0.0.2

      + Simplification/optimisation of Naive DOA

6.16.1
------

  * CHANGE:    Feedback endpoint forcefully enabled in UAC1 build configs of
    app_usb_aud_mic array (workaround for Windows issue)
  * CHANGE:    XVSM processing has AEC enabled by default.
  * CHANGE:    Default gain increased for processed microphone data

6.16.0
------

  * ADDED:   XVSM enabled build config added to app_usb_mic_array. Includes
    example usage of UserBufferManagement() and i_dsp interface
  * CHANGE:  PDM Microphone processing examples use new interface (previously
    functional call)

  * Changes to dependencies:

    - lib_mic_array: 2.0.0 -> 2.0.1

      + Updated AN00221 to use new lib_dsp API for FFTs
      + Updates required for latest lib_mic_array_board_support API

    - lib_voice: Added dependency 0.0.1

      + Initial version

    - sc_usb_audio: 6.15.2 -> 6.16.0

      + ADDED:      Call to UserBufferManagement()
      + ADDED:      PDM_MIC_INDEX in devicedefines.h and usage
      + CHANGE:     pdm_buffer() task now combinable
      + CHANGE:     Audio I/O task now takes i_dsp interface as a parameter
      + CHANGE:     Removed built-in support for A/U series internal ADC
      + CHANGE:     User PDM Microphone processing now uses an interface
        (previously function call)

    - sc_usb_device: 1.3.8 -> 1.3.9

      + RESOLVED:   Value from HS config descriptor used for FS GET_STATUS
        request. Causes USB CV test fail.

6.15.2
------

  * CHANGE:    Design Guide updated for xCORE-200 MC Audio and xCORE Microphone
    array boards

  * Changes to dependencies:

    - sc_usb_audio: 6.15.1 -> 6.15.2

      + RESOLVED:   interrupt.h (used in audio buffering) now compatible with
        xCORE-200 ABI

6.15.1
------

  * ADDED:      Added build config to use TDM slave (2i8o8xxxxx_tdm8_slave) to
    app_usb_aud_xk_216_mc

  * Changes to dependencies:

    - lib_mic_array: 1.0.1 -> 2.0.0

      + Renamed all functions to match library structure
      + Decimator interface functions now take the array of
        mic_array_decimator_config structure rather than
        mic_array_decimator_config_common
      + All defines renames to match library naming policy
      + DC offset simplified
      + Added optional MIC_ARRAY_NUM_MICS define to save memory when using less
        than 16 microphones

    - sc_usb_audio: 6.15.0 -> 6.15.1

      + RESOLVED:   DAC data mis-alignment issue in TDM/I2S slave mode
      + CHANGE:     Updates to support API changes in lib_mic_array version 2.0

    - sc_xud: 2.4.0 -> 2.4.1

      + RESOLVED:   Initialisation failure on U-series devices

6.15.0
------

  * ADDED:      app_usb_aud_mic_array for xCORE Microphone Array board. Includes
    example usage of PDM microphone integration.

  * Changes to dependencies:

    - lib_logging: Added dependency 2.0.1

      + CHANGE:   Update to source code license and copyright

    - lib_mic_array: Added dependency 1.0.1

      + Added dynamic DC offset removal at startup to eliminate slow convergance
      + Mute first 32 samples to allow DC offset to adapt before outputting
        signal
      + Fixed XTA scripte to ensure timing is being met
      + Now use a 64-bit accumulator for DC offset removal
      + Consolidated generators into a single python generator
      + Produced output frequency response graphs
      + Added 16 bit output mode

    - lib_xassert: Added dependency 2.0.1

      + CHANGE: Update to source code license and copyright

    - sc_usb_audio: 6.14.0 -> 6.15.0

      + RESOLVED:   UAC 1.0 descriptors now support multi-channel volume control
        (previously were hard-coded as stereo)
      + CHANGE:     Removed 32kHz sample-rate support when PDM microphones
        enabled (lib_mic_array currently does not support non-integer decimation
        factors)

    - sc_util: 1.0.5 -> 1.0.6

      + xCORE-200 compatibility fixes to module_trycatch

6.14.0
------

  * ADDED:      UAC 1.0 build configs to app_usb_aud_xk_216_mc

  * Changes to dependencies:

    - sc_usb_audio: 6.13.0beta2 -> 6.14.0beta2

      + ADDED:      Support for for master-clock/sample-rate divides that are
        not a power of 2 (i.e. 32kHz from 24.567MHz)
      + ADDED:      Extended available sample-rate/master-clock ratios. Previous
        restriction was <= 512x (i.e. could not support 1024x and above e.g.
        49.152MHz MCLK for Sample Rates below 96kHz) (#13893)
      + ADDED:      Support for various "low" sample rates (i.e. < 44100) into
        UAC 2.0 sample rate list and UAC 1.0 descriptors
      + ADDED:      Support for the use and integration of PDM microphones
        (including PDM to PCM conversion) via lib_mic_array
      + RESOLVED:   MIDI data not accepted after "sleep" in OSX 10.11 (El
        Capitan) - related to sc_xud issue #17092
      + CHANGE:     Asynchronous feedback system re-implemented to allow for the
        first two ADDED changelog items
      + CHANGE:     Hardware divider used to generate bit-clock from master
        clock (xCORE-200 only). Allows easy support for greater number of
        master-clock to sample-rate ratios.
      + CHANGE:     module_queue no longer uses any assert module/lib

6.13.0
------

  * RESOLVED:   Channel string error & ADAT tx channel offset issue in
    app_usb_aud_l2 due to SPDIF define typo in customdefines.h (should have been
    SPDIF_TX)
  * RESOLVED:   Incorrect I2C addresses of CODECs in app_usb_aud_skc_u16

  * Changes to dependencies:

    - sc_usb_audio: 6.12.5rc0 -> 6.13.0beta2

      + ADDED:      Device now uses implicit feedback when input stream is
        available (previously explicit feedback pipe always used). This saves
        chanend/EP resources and means less processing burden for the host.
        Previous behaviour available by enabling UAC_FORCE_FEEDBACK_EP
      + RESOLVED:   Exception when SPDIF_TX and ADAT_TX both enabled due to
        clock-block being configured after already started. Caused by SPDIF_TX
        define check typo
      + RESOLVED:   DFU flag address changed to properly conform to memory
        address range allocated to apps by tools
      + RESOLVED:   Build failure when DFU disabled
      + RESOLVED:   Build issue when I2S_CHANS_ADC/DAC set to 0 and CODEC_MASTER
        enabled
      + RESOLVED:   Typo in MCLK_441 checking for MIN_FREQ define
      + CHANGE:     Mixer and non-mixer channel comms scheme (decouple <-> audio
        path) now identical
      + CHANGE:     Input stream buffering modified such that during overflow
        older samples are removed rather than ignoring most recent samples.
        Removes any chance of stale input packets being sent to host
      + CHANGE:     module_queue (in sc_usb_audio) now uses lib_xassert rather
        than module_xassert
      + RESOLVED:   Build error when DFU is disabled
      + RESOLVED:   Build error when I2S_CHANS_ADC or I2S_CHANS_DAC set to 0 and
        CODEC_MASTER enabled

    - sc_usb_device: 1.3.7rc0 -> 1.3.8beta0

    - sc_xud: 2.3.2rc0 -> 2.4.0beta0

      + RESOLVED:   Intermittent initialisation issues with xCORE-200
      + RESOLVED:   SETUP transaction data CRC not properly checked
      + RESOLVED:   RxError line from phy handled
      + RESOLVED:   Isochronous IN endpoints now send an 0-length packet if not
        ready rather than an (invalid) NAK.
      + RESOLVED:   Receive of short packets sometimes prematurely ended
      + RESOLVED:   Data PID not reset to DATA0 in ClearStallByAddr() (used on
        ClearFeature(HALT) request from host) (#17092)

6.12.6
------

  * Changes to dependencies:

    - sc_usb_audio: 6.12.2rc3 -> 6.12.5rc0

      + RESOLVED:   Stream issue when NUM_USB_CHAN_IN < I2S_CHANS_ADC
      + RESOLVED:   DFU fail when DSD enabled and USB library not running on
        tile[0]
      + RESOLVED:   Method for storing persistent state over a DFU reboot
        modified to improve resilience against code-base and tools changes

6.12.5
------

  * RESOLVED:   Enabled DFU support (and quad-SPI flash) support in xCORE-200
    application.
  * RESOLVED:   Link names updated in xCORE-200 XN file
  * CHANGE:     xCore-200 Role-change reboot code updated for tools versions >
    14.0.2

  * Changes to dependencies:

    - sc_usb_audio: 6.12.1alpha0 -> 6.12.3rc0

      + RESOLVED:   Method for storing persistent state over a DFU reboot
        modified to improve resilience against code-base and tools changes
      + RESOLVED:   Reboot code (used for DFU) failure in tools versions >
        14.0.2 (xCORE-200 only)
      + RESOLVED:   Run-time exception in mixer when MAX_MIX_COUNT > 0
        (xCORE-200 only)
      + RESOLVED:   MAX_MIX_COUNT checked properly for mix strings in string
        table
      + CHANGE:     DFU code re-written to use an XC interface. The flash-part
        may now be connected to a separate tile to the tile running USB code
      + CHANGE:     DFU code can now use quad-SPI flash
      + CHANGE:     Example xmos_dfu application now uses a list of PIDs to
        allow adding PIDs easier. --listdevices command also added.
      + CHANGE:     I2S_CHANS_PER_FRAME and I2S_WIRES_xxx defines tidied

6.12.4
------

  * RESOLVED:   (Minor) Fixed build issue with iAP EA Native Transport endpoints
    example code in app_usb_aud_skc_u16_audio8
  * ADDED:      Support for xCORE-200 MC AUDIO board version 2.0 (in
    app_usb_aud_x200)
  * ADDED:      ADAT output/input build configuration to app_usb_aud_x200
  * ADDED:      SPDIF input build configuration to app_usb_aud_x200
  * CHANGE:     Rationalised build config naming in app_usb_aud_x200

  * Changes to dependencies:

    - sc_spdif: 1.3.3alpha2 -> 1.3.4alpha0

      + Changes to RX codebase to allow running on xCORE-200

    - sc_usb_audio: 6.12.0alpha1 -> 6.12.1alpha0

      + RESOLVED:   Fixes to TDM input timing/sample-alignment when BCLK=MCLK
      + RESOLVED:   Various minor fixes to allow ADAT_RX to run on xCORE 200 MC
        AUDIO hardware
      + CHANGE:     Moved from old SPDIF define to SPDIF_TX

6.12.3
------

  * ADDED:      Added roleswitch compatible build config to app_usb_aud_x200
  * CHANGE:     iPod detect code upataed and USB mux set appropriately for
    roleswitch (guarded by USB_SEL_A)
  * CHANGE:     Updated all interrupts used for role-switch to new interrupt.h
    API

  * Changes to dependencies:

    - sc_usb_device: 1.3.6alpha0 -> 1.3.7alpha0

    - sc_xud: 2.3.1alpha0 -> 2.3.2alpha0

      + CHANGE:     Interrupts disabled during any access to usb_tile. Allows
        greater reliability if user suspend/resume functions enabled interrupts
        e.g. for role-switch

6.12.2
------

  * ADDED:      Example code for using iAP EA Native Transport endpoints to
    app_usb_aud_x200

6.12.1
------

  * ADDED:      DSD enabled build configurations to app_usb_aud_x200
  * CHANGE:     GPIO access in app_usb_aud_x200 guarded with a lock for safety

6.12.0
------

  * ADDED:      app_usb_aud_x200 application for xCORE-200-MC-AUDIO board
  * CHANGE:     Varous I2C device addresses updated for new I2C API.
  * CHANGE:     Added I2C module as an explicy dependancy to various apps where
    module_i2c_shared is used (previously module_i2c_shared had
    module_i2c_simple as a dependancy)
  * CHANGE:     I2C ports now in structs as required to match new I2C module API

  * Changes to dependencies:

    - sc_i2c: 2.4.1rc1 -> 3.0.0alpha1

      + Read support added to module_i2c_single_port (xCORE 200 only)
      + Retry on NACK added to module_i2c_single_port (matches
        module_i2c_simple)
      + module_i2c_single_port functions now takes struct for port resources
        (matches module_i2c_simple)
      + module_i2c_simple removed from module_i2c_shared dependancies. Allows
        use with other i2c modules. It is now the applications responsibilty to
        include the desired i2c module as a depenancy.
      + Data arrays passed to write_reg functions now marked const

    - sc_spdif: 1.3.2rc2 -> 1.3.3alpha2

    - sc_usb_audio: 6.11.2rc2 -> 6.12.0alpha1

      + ADDED:      Checks for XUD_200_SERIES define where required
      + RESOLVED:   Run-time exception due to decouple interrupt not entering
        correct issue mode (affects XCORE-200 only)
      + CHANGE:     SPDIF Tx Core may now reside on a different tile from I2S
      + CHANGE:     I2C ports now in structure to match new
        module_i2c_singleport/shared API.
      + RESOLVED:  (Major) Streaming issue when mixer not enabled (introduced in
        6.11.2)

    - sc_usb_device: 1.3.5rc2 -> 1.3.6alpha0

    - sc_util: 1.0.4rc0 -> 1.0.5alpha0

      + xCORE-200 compatibility fixes to module_locks

    - sc_xud: 2.2.4rc3 -> 2.3.0alpha0

      + ADDED:      Support for XCORE-200 (libxud_x200.a)
      + CHANGE:     Compatibility fixes for XMOS toolset version 14 (dual-issue
        support etc)

6.11.2
------

  * ADDED:      S/PDIF & ADAT input enabled build configs to
    app_usb_aud_skc_u16_audio8 including required external Cirrus fractional-N
    configuration.
  * CHANGE:     Example HID code uses defines from module_usb_audio/user_hid.h
  * CHANGE:     module_usb_audio_adat replaced with module_adat from sc_adat

  * Changes to dependencies:

    - sc_usb_audio: 6.11.1beta2 -> 6.11.2rc2

      + RESOLVED:   (Major) Enumeration issue when MAX_MIX_COUNT > 0 only.
        Introduced in mixer optimisations in 6.11.0. Only affects designs using
        mixer functionality.
      + RESOLVED:   (Normal) Audio buffering request system modified such that
        the mixer output is not silent when in underflow case (i.e. host output
        stream not active) This issue was introduced with the addition of DSD
        functionality and only affects designs using mixer functionality.
      + RESOLVED:   (Minor) Potential build issue due to duplicate labels in
        inline asm in set_interrupt_handler macro
      + RESOLVED:   (Minor) BCD_DEVICE define in devicedefines.h now guarded by
        ifndef (caused issues with DFU test build configs.
      + RESOLVED:   (Minor) String descriptor for Clock Selector unit
        incorrectly reported
      + RESOLVED:   (Minor) BCD_DEVICE in devicedefines.h now guarded by #ifndef
        (Caused issues with default DFU test build configs.
      + CHANGE:     HID report descriptor defines added to shared user_hid.h
      + CHANGE:     Now uses module_adat_rx from sc_adat (local
        module_usb_audio_adat removed)

6.11.1
------

  * ADDED:      ADAT transmit enabled build configs to app_usb_aud_l2
  * ADDED:      Audio hardware configuration for XCore I2S slave mode to
    app_usb_aud_skc_u16_audio8 when CODEC_MASTER enabled.
  * ADDED:      Build configurations in app_usb_aud_l2 for TDM
  * ADDED:      DAC/ADC configuration for TDM in app_usb_aud_l2 when
    I2S_MODE_TDM enabled.

  * Changes to dependencies:

    - sc_usb_audio: 6.11.0alpha2 -> 6.11.1beta2

      + ADDED:      ADAT transmit functionality, including SMUX. See ADAT_TX and
        ADAT_TX_INDEX.
      + RESOLVED:   (Normal) Build issue with CODEC_MASTER (xCore is I2S slave)
        enabled
      + RESOLVED:   (Minor) Channel ordering issue in when TDM and CODEC_MASTER
        mode enabled
      + RESOLVED:   (Normal) DFU fails when SPDIF_RX enabled due to clock block
        being shared between SPDIF core and FlashLib

6.11.0
------

  * ADDED:      Build configurations in app_usb_aud_skc_u16_audio8 for TDM
  * ADDED:      DAC/ADC configuration for TDM in app_usb_aud_skc_u16_audio8 when
    I2S_MODE_TDM enabled.

  * Changes to dependencies:

    - sc_usb_audio: 6.10.0alpha2 -> 6.11.0alpha2

      + ADDED:      Basic TDM I2S functionality added. See I2S_CHANS_PER_FRAME
        and I2S_MODE_TDM
      + CHANGE:     Various optimisations in 'mixer' core to improve performance
        for higher channel counts including the use of XC unsafe pointers
        instead of inline ASM
      + CHANGE:     Mixer mapping disabled when MAX_MIX_COUNT is 0 since this is
        wasted processing.
      + CHANGE:     Descriptor changes to allow for channel input/output channel
        count up to 32 (previous limit was 18)

6.10.0
------

  * CHANGE:     Support for version 2V0 of XK-USB-AUDIO-U8-2C and XP-SKC-U16
    core boards and XA-SK-USB-BLC and XA-SK-USB-ABC slices in
    app_usb_aud_xk_u8_2c and app_usb_aud_skc_u16_audio8 (previous board versions
    will not operate correctly without software modification)
  * RESOLVED:   (minor) AudioHwConfig() in app_usb_aud_l2 now writes correct
    register value to CS42448 CODEC for MCLK frequencies in the range 25MHz to
    51MHz.

  * Changes to dependencies:

    - sc_usb_audio: 6.9.0alpha0 -> 6.10.0alpha2

      + CHANGE:     Endpoint management for iAP EA Native Transport now merged
        into buffer() core. Previously was separate core (as added in 6.8.0).
      + CHANGE:     Minor optimisation to I2S port code for inputs from ADC

    - sc_usb_device: 1.3.4rc0 -> 1.3.5rc2

      + RESOLVED:   (Minor) Design Guide documentation build errors

    - sc_xud: 2.2.3rc0 -> 2.2.4rc3

      + RESOLVED:   (Minor) Potential for lock-up when waiting for USB clock on
        startup. This is is avoided by enabling port buffering on the USB clock
        port. Affects L/G series only.

6.9.0
-----

  * ADDED:    Added ADAT Rx enabled build config in app_usb_aud_l2

  * Changes to dependencies:

    - sc_usb_audio: 6.8.0alpha2 -> 6.9.0alpha0

      + ADDED:      ADAT S-MUX II functionality (i.e. 2 channels at 192kHz) -
        Previously only S-MUX supported (4 channels at 96kHz).
      + ADDED:      Explicit build warnings if sample rate/depth & channel
        combination exceeds available USB bus bandwidth.
      + RESOLVED:   (Major) Reinstated ADAT input functionality, including
        descriptors and clock generation/control and stream configuration
        defines/tables.
      + RESOLVED:   (Major) S/PDIF/ADAT sample transfer code in audio() (from
        ClockGen()) moved to aid timing.
      + CHANGE:     Modifying mix map now only affects specified mix, previous
        was applied to all mixes. CS_XU_MIXSEL control selector now takes values
        0 to MAX_MIX_COUNT + 1 (with 0 affecting all mixes).
      + CHANGE:     Channel c_dig_rx is no longer nullable, assists with timing
        due to removal of null checks inserted by compiler.
      + CHANGE:     ADAT SMUX selection now based on device sample frequency
        rather than selected stream format - Endpoint 0 now configures
        clockgen() on a sample-rate change rather than stream start.

    - sc_usb_device: 1.3.3alpha0 -> 1.3.4rc0

    - sc_xud: 2.2.2alpha0 -> 2.2.3rc0

      + RESOLVED:   (Minor) XUD_ResetEpStateByAddr() could operate on
        corresponding OUT endpoint instead of the desired IN endpoint address as
        passed into the function (and vice versa)

6.8.0
-----

  * ADDED:    Mixer enabled config to app_usb_aud_l2 Makefile
  * ADDED:    Example code for using iAP EA Native Transport endpoints to
    app_usb_aud_skc_u16_audio8
  * ADDED:    Example LED level metering code to app_usb_aud_l2

  * Changes to dependencies:

    - sc_usb: 1.0.3rc0 -> 1.0.4alpha0

      + ADDED:      Structs for Audio Class 2.0 Mixer and Extension Units

    - sc_usb_audio: 6.7.0alpha0 -> 6.8.0alpha2

      + ADDED:      Evaluation support for iAP EA Native Transport endpoints
      + RESOLVED:   (Minor) Reverted change in 6.5.1 release where sample rate
        listing in Audio Class 1.0 descriptors was trimmed (previously 4 rates
        were always reported). This change appears to highlight a Windows (only)
        enumeration issue with the Input & Output configs
      + RESOLVED:   (Major) Mixer functionality re-instated, including
        descriptors and various required updates compatibility with 13 tools
      + RESOLVED:   (Major) Endpoint 0 was requesting an out of bounds channel
        whilst requesting level data
      + RESOLVED:   (Major) Fast mix code not operates correctly in 13 tools,
        assembler inserting long jmp instructions
      + RESOLVED:   (Minor) LED level meter code now compatible with 13 tools
        (shared mem access)
      + RESOLVED    (Minor) Ordering of level data from the device now matches
        channel ordering into mixer (previously the device input data and the
        stream from host were swapped)
      + CHANGE:     Level meter buffer naming now resemble functionality

    - sc_usb_device: 1.3.2rc0 -> 1.3.3alpha0

    - sc_xud: 2.2.1rc0 -> 2.2.2alpha0

      + CHANGE:     Header file comment clarification only

6.7.0
-----

  * CHANGE:     Audio interrupt endpoint implementation simplified (use for
    notifying host of clock validity changes) simplified. Decouple() no longer
    involved.
  * RESOLVED:   Makefile issue for 2ioxx config in app_usb_aud_skc_su1
  * RESOLVED:   Support for S/PDIF input reinstated (includes descriptors,
    clocking support etc)

  * Changes to dependencies:

    - sc_usb_audio: 6.6.1rc1 -> 6.7.0alpha0

6.6.1
-----

  * ADDED:      Documentation for DFU
  * ADDED:      XUD_PWR_CFG define
  * CHANGE:     DSD ports now only enabled once to avoid potential lock up on
    DSD->PCM mode change due to un-driven line floating high.
    ConfigAudioPortsWrapper() also simplified.

  * Changes to dependencies:

    - sc_usb_audio: 6.6.0rc2 -> 6.6.1rc1

    - sc_usb_device: 1.3.0rc0 -> 1.3.2rc0

    - sc_xud: 2.1.1rc0 -> 2.2.1rc0

      + RESOLVED:   Slight optimisations (long jumps replaced with short) to aid
        inter-packet gaps.
      + CHANGE:     Timer usage optimisation - usage reduced by one.
      + CHANGE:     OTG Flags register explicitly cleared at start up - useful
        if previously running in host mode after a soft-reboot.

6.6.0
-----

  * ADDED:      Added app_usb_aud_skc_u16_audio8 application for XP-SKC-U16 with
    XA-SK-AUDIO8
  * CHANGE:     Support for XA-SK-USB-BLC 1V2 USB slice in app_usb_aud_xk_u8_2c
    and app_usb_aud_skc_u16 (1V1 slices will not operate correctly without
    software modification)
  * CHANGE:     Removed app_usb_aud_su1
  * CHANGE:     Endpoint 0 code updated to support new XUD test-mode enable API
  * CHANGE:     Macs operation for volume processing in mixer core now retains
    lower bits when device configured to use either 32bit samples or Native DSD.
  * RESOLVED:   (Minor) DFU_FLASH_DEVICE define corrected in
    app_usb_aud_skc_u16. Previously an incorrect SPI spec was defined causing
    DFU to fail for this example application.
  * RESOLVED:   (Minor) HID descriptor properly defined when HID_CONTROLS
    enabled

  * Changes to dependencies:

    - sc_usb_audio: 6.5.1rc4 -> 6.6.0rc2

    - sc_usb_device: 1.2.2rc4 -> 1.3.0rc0

      + CHANGE:  Required updates for XUD API change relating to USB
        test-mode-support

    - sc_xud: 2.0.1rc3 -> 2.1.1rc0

      + ADDED:      Warning emitted when number of cores is greater than 6
      + CHANGE:     XUD no longer takes a additional chanend parameter for
        enabling USB test-modes. Test-modes are now enabled via a
        XUD_SetTestMode() function using a chanend relating to Endpoint 0. This
        change was made to reduce chanend usage only.

6.5.1
-----

  * ADDED:      Added USB Design Guide to this repo including major update (see
    /doc)
  * ADDED:      Added MIDI_RX_PORT_WIDTH define such that a 4-bit port can be
    used for MIDI Rx
  * CHANGE:     I2S data to clock edge setup time improvements when BCLK = MCLK
    (particularly when running at 384kHz with a 24.576MHz master-clock)
  * CHANGE:     String table rationalisation (now based on a structure rather
    than a global array)
  * CHANGE:     Channel strings now set at build-time (rather than run-time)
    avoiding the use of memcpy
  * CHANGE:     Re-added c_aud_cfg channel (guarded by AUDIO_CFG_CHAN) allowing
    easy communication of audio hardware config to a remote core
  * CHANGE:     Channel strings now labeled "Analogue X, SPDIF Y" if S/PDIF and
    Analogue channels overlap (previously Analogue naming took precedence)
  * CHANGE:     Stream sample resolution now passed though to audio I/O core -
    previously only the buffering code was notified. AudioHwConfig() now takes
    parameters for sample resolution for DAC and ADC
  * CHANGE:     Endpoint0 core only sends out notifications of stream format
    change on stream start event if there is an actual change in format (e.g.
    16bit to 24bit or PCM to DSD). This avoids unnecessary audio I/O restarts
    and reconfiguration of external audio hardware (via AudioHwConfig())
  * CHANGE:     All occurances of historical INPUT and OUTPUT defines now
    removed. NUM_USB_CHAN_IN and NUM_USB_CHAN_OUT now used throughout the
    codebase.
  * RESOLVED:   (Minor) USB test mode requests re-enabled - previously was
    guarded by TEST_MODE_SUPPORT in module_usb_device (#15385)
  * RESOLVED:   (Minor) Audio Class 1.0 sample frequency list now respects
    MAX_FREQ (previously based on OUTPUT and INPUT defines) (#15417)
  * RESOLVED:   (Minor) Audio Class 1.0 mute control SET requests stalled due to
    incorrect data length check (#15419)
  * RESOLVED    (Minor) DFU Upload request now functional (Returns current
    upgrade image to host) (#151571)

  * Changes to dependencies:

    - sc_i2c: 2.4.0beta1 -> 2.4.1rc1

      + module_i2c_simple header-file comments updated to correctly reflect API

    - sc_spdif: 1.3.1beta3 -> 1.3.2rc2

    - sc_usb_audio: 6.5.0beta2 -> 6.5.1rc4

    - sc_usb_device: 1.1.0beta0 -> 1.2.2rc4

      + RESOLVED:   (Minor) Build issue in Windows host app for bulk demo
      + CHANGE:     USB_StandardRequests() now returns XUD_Result_t instead of
        int
      + CHANGE:     app_hid_mouse_demo now uses XUD_Result_t
      + CHANGE:     app_custom_bulk_demo now uses XUD_Result_t
      + CHANGE:     USB_StandardRequests() now takes the string table as an
        array of char pointers rather than a fixed size 2D array. This allows
        for a more space efficient string table representation. Please note,
        requires tools 13 or later for XC pointer support.
      + CHANGE:     Demo applications now set LangID string at build-time
        (rather than run-time)
      + CHANGE:     Test mode support no longer guarded by TEST_MODE_SUPPORT

    - sc_util: 1.0.3rc0 -> 1.0.4rc0

      + module_logging now compiled at -Os
      + debug_printf in module_logging uses a buffer to deliver messages
        unfragmented
      + Fix thread local storage calculation bug in libtrycatch
      + Fix debug_printf itoa to work for unsigned values > 0x80000000

    - sc_xud: 2.0.0beta1 -> 2.0.1rc3

      + RESOLVED:   (Minor) Error when building module_xud in xTimeComposer due
        to invalid project files.

6.5.0
-----

  * CHANGE:     USB Test mode support enabled by default (required for
    compliance testing)
  * CHANGE:     Default full-speed behaviour is now Audio Class 2, previously
    was a null device
  * CHANGE:     Various changes to use XUD_Result_t returned from XUD functions
  * CHANGE:     All remaining references to ARCH_x defines removed.
    XUD_SERIES_SUPPORT should now be used (#15270)
  * CHANGE:     Added IAP_TILE and MIDI_TILE defines (default to AUDIO_IO_TILE)
    (#15271)
  * CHANGE:     Multiple output stream formats now supported. See
    OUTPUT_FORMAT_COUNT and various _STREAM_FORMAT_OUTPUT_ defines. This allows
    dynamically selectable streaming interfaces with different formats e.g.
    sub-slot size, resolution etc. 16bit and 24bit enabled by default
  * CHANGE:     Audio buffering code now handles different slot size for
    input/output streams
  * CHANGE:     Endpoint 0 code now in standard C (rather than XC) to allow
    better use of packed structures for descriptors
  * CHANGE:     Use of structures/enums/headers in module_usb_shared to give
    more modular Audio Class 2.0 descriptors that can be more easily modified at
    run-time
  * CHANGE:     16bit audio buffer packing/unpacking optimised
  * RESOLVED:   (Minor) All access to port32A now guarded by locks in
    app_usb_aud_xk_u8_2c
  * RESOLVED:   (Minor) iAP interface string index in descriptors when MIXER
    enabled (#15257)
  * RESOLVED:   (Minor) First feedback packet could be the wrong size (3 vs 4
    byte) after a bus- speed change. usb_buffer() core now explicitly re-sizes
    initial feedback packet on stream-start based on bus-speed
  * RESOLVED:   (Minor) Preprocessor error when AUDIO_CLASS_FALLBACK enabled and
    FULL_SPEED_AUDIO_2 not defined. FULL_SPEED_AUDIO_2 now only enabled by
    default if AUDIO_CLASS_FALLBACK is not enabled (#15272)
  * RESOLVED:   (Minor) XUD_STATUS_ENABLED set for iAP IN endpoints (and
    disabled for OUT endpoint) to avoid potential stale buffer being transmitted
    after bus-reset.

6.4.1
-----

  * RESOLVED:   (Minor) MIDI on single-tile L series devices now functional.
    CLKBLK_REF no longer used for MIDI when running on the same tile as
    XUD_Manager()

6.4.0
-----

  * ADDED:      XK-USB-AUDIO-U8-2C mute output driven high when audiostream not
    active (app_usb_aud_xk_u8_2c)
  * CHANGE:     MIDI ports no longer passed to MFi specific functions
  * CHANGE:     Audio delivery core no longer waits for AUDIO_PLL_LOCK_DELAY
    after calling AudioHwConfig() and running audio interfaces. It should be
    ensured that AudioHwConfig() implementation should handle any delays
    required for stable MCLK as required by the clocking hardware.
  * CHANGE:     Delay to allow USB feedback to stabilise after sample-rate
    change now based on USB bus speed. This allows faster rate change at
    high-speed.
  * CHANGE:     FL_DEVICE flash spec macros (from flash.h) used for
    DFU_FLASH_DEVICE define where appropriate rather than defining the spec
    manually
  * RESOLVED:   (Major) Broken (noisy) playback in DSD native mode (introduced
    in 6.3.2). Caused by 24bit (over 32bit) volume processing when DSD enabled -
    DSD bits are lost. 24bit volume control now guarded by NATIVE_DSD define
    (#15200)
  * RESOLVED:   (Minor) Default for SPDIF define set to 1 in app_usb_aud_l1
    customdefines.h. Previously SPDIF not properly enabled in binaries (#15129)
  * RESOLVED:   (Minor) All remaining references to stdcore[] replaced with
    tile[] (#15122)
  * RESOLVED:   (Minor) Removed hostactive.xc and audiostream.xc from
    app_usb_aud_skc_u16 such that default implementations are used
    (hostactive.xc was using an invalid port) (#15118)
  * RESOLVED:   (Minor) The next 44.1 based freq above MAX_FREQ was reported by
    GetRange(SamplingFrequency) when MAX_FREQ = MIN_FREQ (and MAX_FREQ was 48k
    based) (#15127)
  * RESOLVED:   (Minor) MIDI input events no longer intermittently dropped under
    heavy output traffic (Typically SysEx) from USB host - MIDI Rx port now
    buffered (#14224)
  * RESOLVED:   (Minor) Fixed port mapping in app_usb_aud_skc_u16 XN file
    (#15124)
  * RESOLVED:   (Minor) DEFAULT_FREQ was assumed to be a multiple of 48k during
    initial calculation of g_SampFreqMultiplier (#15141)
  * RESOLVED:   (Minor) SPDIF not properly enabled in any build of
    app_usb_aud_l1 (SPDIF define set to 0 in customdefines.h) (#15102)
  * RESOLVED:   (Minor) DFU enabled by default in app_usb_aud_l2 (#15153)
  * RESOLVED:   (Minor) Build issue when NUM_USB_CHAN_IN or NUM_USB_CHAN_OUT set
    to 0 and MIXER set to 1 (#15096)
  * RESOLVED:   (Minor) Build issue when CODEC_MASTER set (#15162)
  * RESOLVED:   (Minor) DSD mute pattern output when invalid DSD frequency
    selected in Native DSD mode. Previously 0 was driven resulting in pop noises
    on the analague output when switching between DSD/PCM (#14769)
  * RESOLVED:   (Minor) Build error when OUT_VOLUME_IN_MIXER was set to 0
    (#10692)
  * RESOLVED:   (Minor) LR channel swap issue in CS42448 CODEC by more closely
    matching recommended power up sequence (app_usb_aud_l2) (#15189)
  * RESOLVED:   (Minor) Improved the robustness of ADC I2S data port init when
    MASTER_CODEC defined (#15203)
  * RESOLVED:   (Minor) Channel counts in Audio 2 descriptors now modified based
    on bus-speed. Input stream format also modified (previously only output was)
    (#15202)
  * RESOLVED:   (Minor) Full-speed Audio Class 2.0 sample-rate list properly
    restricted based on if input /output are enabled (#15210)
  * RESOLVED:   (Minor) AUDIO_CLASS_FALLBACK no longer required to be defined
    when AUDIO_CLASS set to 1 (#13302)

  * Changes to dependencies:

    - sc_usb: 1.0.1beta1 -> 1.0.2beta1

      + ADDED:      USB_BMREQ_D2H_VENDOR_DEV and USB_BMREQ_D2H_VENDOR_DEV
        defines for vendor device requests

    - sc_usb_device: 1.0.3beta0 -> 1.0.4beta5

      + CHANGE:     devDesc_hs and cfgDesc_hs params to USB_StandardRequests()
        now nullable (useful for full-speed only devices)
      + CHANGE:     Nullable descriptor array parameters to
        USB_StandardRequests() changed from ?array[] to (?&array)[] due to the
        compiler warning that future compilers will interpret the former as an
        array of nullable items (rather than a nullable reference to an array).
        Note: The NULLABLE_ARRAY_OF macro (from xccompat.h) is used retain
        compatibility with older tools version (i.e. 12).

    - sc_xud: 1.0.2alpha1 -> 1.0.3beta1

      + RESOLVED:   (Minor) ULPI data-lines driven hard low and XMOS pull-up on
        STP line disabled before taking the USB phy out of reset. Previously the
        phy could clock in erroneous data before the XMOS ULPI interface was
        initialised causing potential connection issues on initial startup. This
        affects L/G series libraries only.
      + RESOLVED:   (Minor) Fixes to improve memory usage such as adding missing
        resource usage symbols/elimination blocks to assembly file and inlining
        support functions where appropriate.
      + RESOLVED:   (Minor) Moved to using supplied tools support for
        communicating with the USB tile rather than custom implementation
        (affects U-series lib only).

6.3.2
-----

  * ADDED:      SAMPLE_SUBSLOT_SIZE_HS/SAMPLE_SUBSLOT_SIZE_FS defines (default
    4/3 bytes)
  * ADDED:      SAMPLE_BIT_RESOLUTION_HS/SAMPLE_BIT_RESOLUTION_FS defines
    (default 24/24 bytes)
  * CHANGE:     PIDs in app_usb_aud_xk_2c updated (previously shared with
    app_usb_aud_skc_su1). Requires Thesycon 2.15 or later
  * RESOLVED:   (Minor) Fixed maxPacketSize for audio input endpoint (was
    hard-coded to 1024)

  * Changes to dependencies:

    - sc_usb_device: 1.0.2beta0 -> 1.0.3beta0

    - sc_xud: 1.0.1beta3 -> 1.0.2alpha1

      + ADDED:      Re-instated support for G devices (xud_g library)

6.3.1
-----

  * ADDED:      Reinstated application for XR-USB-AUDIO-2.0-MC board
    (app_usb_aud_l2)
  * ADDED:      Support for operation with Apple devices (MFI licensees only -
    please contact XMOS)
  * ADDED:      USER_MAIN_DECLARATIONS and USER_MAIN_CORES defines in main for
    easy addition of custom cores
  * CHANGE:     Access to shared GPIO port (typically 32A) in app code now
    guarded with a lock for safety
  * CHANGE:     Re-organised main() to call two functions with the aim to
    improve readability
  * CHANGE:     Event queue logic in MIDI now in XC module-queue such that it
    can be inlined (code-size saving)
  * CHANGE:     Various functions now marked static to encourage inlining,
    saving around 200 bytes of code-size
  * CHANGE:     Removed redundant MIDI buffering code from previous buffering
    scheme
  * CHANGE:     Some tidy of String descriptors table and related defines

  * Changes to dependencies:

    - sc_i2c: 2.2.1rc0 -> 2.3.0beta1

      + module_i2c_simple fixed to ACK correctly during multi-byte reads (all
        but the final byte will be now be ACKd)
      + module_i2c_simple can now be built with support to send repeated starts
        and retry reads and writes NACKd by slave
      + module_i2c_shared added to allow multiple logical cores to safely share
        a single I2C bus
      + Removed readreg() function from single_port module since it was not safe

    - sc_spdif: 1.3.0rc4 -> 1.3.1beta2

      + Added .type and .size directives to SpdifReceive. This is required for
        the function to show up in xTIMEcomposer binary viewer

6.3.0
-----

  * ADDED:      Application for XP-SKC-U16 board with XA-SK-AUDIO slice
    (app_usb_aud_xkc_u16)
  * CHANGE:     Moved to XMOS toolchain version 13

6.2.1
-----

  * ADDED:      DEFAULT_MCLK_FREQ define added
  * RESOLVED:   Native DSD now easily disabled whilst keeping DoP mode enabled
    (setting NATIVE_DSD to 0 with DSD_CHANS_DAC > 0)
  * RESOLVED:   Device could become unresponsive if the host outputs a stream
    with an invalid DoP frequency (#14938)

6.2.0
-----

  * ADDED:      Application for XK-USB-AUDIO-U8-2C board
  * ADDED:      PRODUCT_STR define for Product Strings
  * ADDED:      Added DSD over PCM (DoP) mode
  * ADDED:      Added Native DSD (Driver support required)
  * ADDED:      Added optional channel for audio buffing control, this can
    reduce power consumption
  * ADDED:      The device can run in Audio Class 2.0 when connected to a
    full-speed hub using the FULL_SPEED_AUDIO_2 define
  * ADDED:      MIN_FREQ configuration define for setting minimum sample rate of
    device (previously assumed 44.1)
  * CHANGE:     Endpoint0 code migrated to use new module_usb_device shared
    module
  * CHANGE:     Device reboot code (for DFU) made more generic for multi-tile
    systems
  * CHANGE:     DFU code now erases all upgrade images found, rather than just
    the first one
  * CHANGE:     ports.h file no longer required.  Please declare custom ports in
    your own files
  * CHANGE:     Define based warnings in devicedefines.h moved to warnings.xc to
    avoid multiple warnings being issued
  * RESOLVED:   (Major) ADC port initialization did not operate as expected at
    384kHz
  * RESOLVED:   (Major) Resolved a compatibility issue with streaming on Intel
    USB 3.0 xHCI host controller
  * RESOLVED:   (Major) Added defence against malformed Audio Class 1.0 packets
    as experienced on some Win 8.0 hosts. Previously this would cause an
    exception (Issue fixed in Win 8.1)
  * RESOLVED:   (Minor)  maxPacketSize now reported based on device's read
    bandwidth requirements. This allows the driver to reserve the proper
    bandwidth amount (previously bandwidth would have been wasted)
  * RESOLVED:   (Minor) Input channel strings used for output in one instance
  * RESOLVED:   (Minor) Volume multiplication now compatible with 32bit samples.
    Previously assumed 24bit samples and would truncate bottom 3 bits
  * RESOLVED:   (Minor) Fixed issue with SE0_NAK test mode (as required for
    device receiver sensitivity USB-IF compliance test
  * RESOLVED:   (Minor) Fixed issue with packet parameters compliance test
  * RESOLVED:   (Minor) Added bounds checking to string requests. Previously an
    exception was raised if an invalid String was requested

6.1.0
-----

  * RESOLVED:   Resolved issue with DFU caused by SU1 ADC usage causing issues
    with soft reboot
  * ADDED:      Added ability for channel count changes between UAC1 and UAC2
    modes
  * ADDED:      Support for iOS authentication (MFI licencees only - please
    contact XMOS)

6.0.1
-----

  * CHANGE:     Removed support for early engineering sample U-series devices

6.0.0
-----

  * ADDED:      Support for SU1 (Via SU1 Core Board and Audio Slice) - see
    app_usb_aud_skc_su1
  * ADDED:      Design moved to new build system
  * ADDED:      Optional support for USB test modes
  * ADDED:      Optional HID endpoint for audio controls and example usages
  * ADDED:      Multiple build configurations for supported device
    configurations
  * CHANGE:     Now uses latest XUD API
  * CHANGE:     MIDI buffering simplified (using new XUD API) - no longer goes
    through decouple thread
  * CHANGE:     Now uses sc_i2c from www.github.com/xcore/sc_i2c
  * CHANGE:     Previous default serial string of "0000" removed. No serial
    string now reported.
  * CHANGE:     Master volume update optimised slightly (updateMasterVol in
    audiorequests.xc)
  * CHANGE:     Master volume control disabled in Audio Class 1.0 mode to solve
    various issues in Windows
  * CHANGE:     Audio Class 2.0 Status/Interrupt endpoint disabled by default
    (enabled when SPDIF/ADAT receive enabled)
  * CHANGE:     DFU/Flash code simplified
  * RESOLVED:   (Minor) Fixed issue where buffering can lock up on sample
    frequency change if in overflow (#10897)
  * RESOLVED:   (Minor) XN files updated to avoid deprecation warnings from
    tools
  * RESOLVED:   (Major) Fixed issue where installation of the first upgrade
    image is successful but subsequent upgrades fail (Design Advisory X2035A)

  * Changes to dependencies:

    - sc_adat: Added dependency 1.0.0

      + Initial release

    - sc_i2c: Added dependency 1.0.0

    - sc_spdif: Added dependency 1.0.0

    - sc_usb: Added dependency 1.0.0

      + Initial release

    - sc_usb_audio: Added dependency 1.0.0

    - sc_xud: Added dependency 1.0.0

      + Initial stand-alone release


Legacy release history
----------------------

(Note: USB Audio version numbers unified across all products at this point)

Previous L1 Firmware Releases
+++++++++++++++++++++++++++++

3.3.0
-----
    - ADDED:      Added support for protocol Stall for un-recognised requests to Endpoint 0.
                  BOS Descriptor test in latest version of USB CV test now passes.
    - RESOLVED:   (Major) Removed redundant delays in DFU image download.  This aids Windows DFU reliability.
    - RESOLVED:   (Minor) DFU Run-time descriptors updated from DFU 1.0 to DFU 1.1 spec.  This allows USB CV test pass.
    - RESOLVED:   (Minor) MIDI string descriptors added to string table.
    - RESOLVED:   (Minor) bInterval value for feedback endpoint modified to be more compatible with Microsoft OSs
                  (support for iso endpoints with bInterval > 8 microframes).  This aids compatibility with 3rd party
                  drivers for USB 3.0 controllers.
    - RESOLVED:   (Minor) Fixed build failure when NUM_USB_CHAN_IN/NUM_USB_CHAN_OUT defined as 0. Previous INPUT/OUTPUT
                  defines now based on NUM_USB_CHAN_XXX defines.
    - RESOLVED:   (Minor) Removed redundant calls to assert() to free memory.


3.2.0
-----
    - RESOLVED:   (Major) Fixed reset reliability for self-powered devices.  This was due to an issue with
                  XUD/Endpoint synchronisation during communication of RESET bus state over channels.
                  Bus powered devices should not be effected due to power up on every plug event.
                  Note: Changes limited to XUD library only.

3.1.1
-----
    - RESOLVED    (Major) Removed size in re-interpret cast of DFU data buffer (unsigned to unsigned char). This
                  was due to a new optimisation in the 11.2 compiler which removes part of the DFU buffer (dfu.xc)
                  as it considers it un-used.  This causes the DFU download request to fail due to stack corruption.
3.1.0
-----
    - ADDED:      Re-added LEDA "Valid Host" functionality using VendorHostActive() call. This functionality
                  missing since 3v00.  Note LED now indicated "Valid Host" rather than "Suspend" condition
    - RESOLVED:   (Major) Fixed issue when sharing bus with other devices especially high throughput bulk devices
                  (e.g. hard disk drive). This is issue typically caused SOFs to missed by the device
                  resulting in incorrect feedback calculation and ultimately audio glitching.  Note: this effects
                  XUD library only.
    - RESOLVED:   (Major) Intermittent issues with device chirp could lead to a bad packet on bus and device not
                  being properly detected as high-speed.  This was due to opmode of transceiver sometimes
                  not being set before chirp. Note: this effects XUD library only.
    - RESOLVED:   (Minor) Intermittent USB CV Test fails with some hub models. Caused by test issuing suspend
                  during resume signalling. Note: this effects XUD library only
    - RESOLVED:   (Minor) bMaxPower now set to 10mA (was 500mA) since this is a self-powered design (see
                  SELF_POWERED define)
    - RESOLVED:   (Minor) Added code to deal with malformed audio packets from a misbehaving driver.
                  Previously this could result in the device audio buffering raising an exception.
    - RESOLVED:   (Minor) First packet of audio IN stream now correct to current sample-rate.
                  Previously first packet was of length relating to previous sample rate.
    - RESOLVED:   (Minor) MIDI OUT buffering code simplified.  Now a single buffer used instead
                  of previous circular buffer.
    - RESOLVED:   (Minor) Audio OUT stream buffer pre-fill level increased.
    - RESOLVED:   (Minor) Under stressed conditions the Windows built in Audio Class 1.0 driver (usbaudio.sys)
                  may issue invalid sample frequencies (e.g. 48001Hz) leading to an unresponsive device.
                  Additional checks added to cope with this.

3.0.2
-----
    - RESOLVED:   Windows build issue (#9681)

3.0.1
-----
    - RESOLVED:   Version number reported as 0x0200, not 0x0300 (#9676)

3.0.0
-----
    - ADDED:      Added support to allow easy addition of custom audio requests
    - ADDED:      Optional "Host Active" function calls
    - RESOLVED:   Single sample delay between ADC L/R channels resolved (#8783)
    - RESOLVED:   Use of MIDI cable numbers now compliant to specification (#8892)
    - RESOLVED:   Improved USB interoperability and device performance when connected through chained hubs
    - RESOLVED:   S/PDIF Tx channel status bits (32-41) added for improved compliance
    - RESOLVED:   Increased robustness of high-speed reset recovery

2.0.0
-----
	- ADDED:      MIDI functionality
    - CHANGE:     Buffering re-factored

1.7.0
-----
    - RESOLVED:   Buffering fixes for non-intel USB chipsets

1.7.0
-----
    - Modifications for XMOS 10.4 tools release
    - Added USB Compliance Test Mode support
    - Added 88.2kHz sample frequency support for Audio Class 1.0
    - Various fixes for USB Compliance Command Verifier

1.6.4
-----
    - Thesycon Windows Driver DFU support added
    - LSB inprecision at 0dB volume fixed
    - DFU now supports custom flash parts

1.5.0
-----
    - Audio Class 1.0 available using build option, runs at full-speed
    - Device falls back to Audio Class 1.0 when connected via a full-speed hub
    - DFU functionality added

1.4.5
-----
    - Suspend/Resume supported.  LED A indicates suspend condition
    - LED B now indicates presence of audio stream
    - Code refactor for easy user customisation

1.3.0
-----
    - Fixed feedback issue in 1v2 release of USB library xud.a (used 3-byte feedback)

1.2.0
-----
     - Device now enumerates correctly on Windows

1.1.0
-----
    - Device enumerates as 24bit (previously 32bit)
    - Bit errors at 96kHz and 192kHz resolved
    - S/PDIF output functionality added
    - 88.2KHz analog in/out and S/PDIF output added
    - 176.4KHz analog in/out added.  S/PDIF not supported at this frequency because it requires 2xMCLK.
	  Board has 11.2896Mhz, and would require 22.579Mhz.

1.0.0
-----
    - Initial release


L1 Hardware
+++++++++++

1.2.0
-----
    - Explicit power supply sequencing
    - Power-on reset modified to include TRST_N

1.1.0
-----
    - Master clock re-routed to reduce cross-talk

1.0.0
-----
    - Initial Version


Previous L2 Firmware Releases
+++++++++++++++++++++++++++++

5.3.0
-----
    - ADDED:      Added support for protocol Stall for un-recognised requests to Endpoint 0.
                  BOS Descriptor test in latest version of USB CV test now passes.
    - RESOLVED:   (Major) Removed redundant delays in DFU image download.  This aids Windows DFU reliability.
    - RESOLVED:   (Minor) DFU Run-time descriptors updated from DFU 1.0 to DFU 1.1 spec.  This allows USB CV test pass.
    - RESOLVED:   (Minor) MIDI string descriptors added to string table.
    - RESOLVED:   (Minor) bInterval value for feedback endpoint modified to be more compatible with Microsoft OSs
                  (support for iso endpoints with bInterval > 8 microframes).  This aids compatibility with 3rd party
                  drivers for USB 3.0 controllers.
    - RESOLVED:   (Minor) Fixed build failure when NUM_USB_CHAN_IN/NUM_USB_CHAN_OUT defined as 0. Previous INPUT/OUTPUT
                  defines now based on NUM_USB_CHAN_XXX defines.
    - RESOLVED:   (Minor) Fixed build failure when MIXER defined as 0.
    - RESOLVED:   (Minor) MAX_MIX_OUTPUTS define now effects device descriptors.  Previously only effected mixer
                  processing.
    - RESOLVED:   (Minor) Removed redundant calls to assert() to free memory.

5.2.0
-----
    - RESOLVED:   (Major) Fixed reset reliability for self-powered devices.  This was due to an issue with
                  XUD/Endpoint synchronisation during communication of RESET bus state over channels.
                  Bus powered devices should not be effected due to power up on every plug event.
                  Note: Changes limited to XUD library only.

5.1.1
-----
    - RESOLVED:   (Major) Removed size in re-interpret cast of DFU data buffer (unsigned to unsigned char). This
                  was due to a new optimisation in the 11.2 compiler which removes part of the DFU buffer (dfu.xc)
                  as it considers it un-used.  This causes the DFU download request to fail due to stack corruption.

5.1.0
-----
    - RESOLVED:   (Major) Fixed issue when sharing bus with other devices especially high throughput bulk devices
                  (e.g. hard disk drive). This is issue typically caused SOFs to missed by the device
                  resulting in incorrect feedback calculation and ultimately audio glitching.  Note: Changes
                  limited to XUD library only.
    - RESOLVED:   (Major) Intermittent issues with device chirp could lead to a bad packet on bus and device not
                  being properly detected as high-speed.  This was due to opmode of transceiver sometimes
                  not being set before chirp. Note: Changes limited to XUD library only.
    - RESOLVED:   (Minor) Intermittent USB CV Test fails with some hub models. Caused by test issuing suspend
                  during resume signalling. Note: Changes limited to XUD library only.
    - RESOLVED:   (Minor) bMaxPower now set to 10mA (was 500mA) since this is a self-powered design (see
                  SELF_POWERED define)
    - RESOLVED:   (Minor) Added code to deal with malformed audio packets from a misbehaving driver.
                  Previously this could result in the device audio buffering raising an exception.
    - RESOLVED:   (Minor) First packet of audio IN stream now correct to current samplerate.
                  Previously first packet was of length relating to previous sample rate.
    - RESOLVED:   (Minor) MIDI OUT buffering code simplified.  Now a single buffer used instead of
                  previous circular buffer.
    - RESOLVED:   (Minor) Audio OUT stream buffer pre-fill level increased.


5.0.0
-----
    - ADDED:      Added support to allow easy addition of custom audio requests
    - ADDED:      Optional level meter processing added to mixer
    - ADDED:      Volume control locations customisable (before/after mix etc)
    - ADDED:      Mixer inputs are now runtime configurable (includes an "off" setting)
    - ADDED:      Mixer/routing topology now compliant to Audio Class 2.0 specification
    - ADDED:      Host mixer application updated for new topology and routing (and re-ported to Windows/Thesycon)
    - ADDED:      Saturation added to mixer arithmetic
    - ADDED:      Optional "Host Active" function calls (Example usage included)
    - ADDED:      Optional "Clock Validity" function calls (Example usage included)
    - RESOLVED:   Single sample delay between ADC L/R channels resolved (#8783)
    - RESOLVED:   Issue where external PLL could sometimes be unlocked due to cable unplug (#9179)
    - RESOLVED:   Use of MIDI cable numbers now compliant to specification (#8892)
    - RESOLVED:   Improved USB interoperability and device performance when connected through chained hubs
    - RESOLVED:   S/PDIF Tx channel status bits (32-41) added for improved compliance
    - RESOLVED:   Various performance optimisations added to mixer code
    - RESOLVED:   Increased robustness of high-speed reset recovery

4.0.0
-----
    - ADDED:      Addition of ADAT RX
    - ADDED:      Design can now cope with variable channel numbers set by the host (via Alternate Interfaces)
    - ADDED:      Fix to mixer volume range (range and resolution now definable in customdefines.h) (#9051)

3.0.0
-----
    - ADDED:      Addition of mixer
    - ADDED:      Example host mixer application to package.  Uses Lib USB for OSX/Linux, Thesycon for Windows
    - RESOLVED:   Fixed internal clock mode jitter on reference to fractional-n

2.0.0
-----
    - ADDED:      Addition of S/PDIF Rx functionality and associated clocking functionality
    - ADDED:      Addition of Interrupt endpoint (interrupts on clock sources)
    - RESOLVED:   String descriptors added for input channels
    - RESOLVED:   Full-speed fall-back descriptors corrected for compliance

1.0.0
-----
    - ADDED:      Addition of MIDI input/output functionality
    - ADDED:      Addition of DFU functionality
    - RESOLVED:   Descriptor fixes for Windows (Thesycon) driver

0.5.2
-----
    - ADDED:      Addition of support for CODEC in master mode (see CODEC_SLAVE define)

0.5.1
-----
    - ADDED:      BCLK == MCLK now supported (i..e 192kHz from 12.288MHz)
    - ADDED:      MCLK defines now propagate to feedback calculation and CODEC configuration
    - RESOLVED:   XN file update for proper xflash operation

0.5.0
-----
                  (Port buffers enabled on USB clock port)    - Initial Alpha release
    - 10 channel input/output (8 chan DAC, 6 chan ADC, 2 chan S/PDIF tx)
    - Master/channel volume/mute controls


L2 Hardware
+++++++++++

1.2.0
-----
    - Update for coax in, coax out cap & minor tidyup

1.1.0
-----
    - Initial production

1.0.0
-----
    - Pre-production


