forked from PAWPAW-Mirror/lib_xua
Merge branch 'develop'
This commit is contained in:
1
.github/CODEOWNERS
vendored
Normal file
1
.github/CODEOWNERS
vendored
Normal file
@@ -0,0 +1 @@
|
||||
* @xross
|
||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -22,6 +22,7 @@ _build*
|
||||
**/.venv/**
|
||||
**/.vscode/**
|
||||
**.egg-info
|
||||
*.pdf
|
||||
|
||||
# waf build files
|
||||
.lock-waf_*
|
||||
|
||||
7
Brewfile
7
Brewfile
@@ -1,7 +0,0 @@
|
||||
tap 'homebrew/core'
|
||||
|
||||
brew 'perl'
|
||||
brew 'cpanm'
|
||||
|
||||
brew 'python@2'
|
||||
brew 'pipenv'
|
||||
355
CHANGELOG.rst
355
CHANGELOG.rst
@@ -1,6 +1,33 @@
|
||||
lib_xua Change Log
|
||||
==================
|
||||
|
||||
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)
|
||||
|
||||
* Changes to dependencies:
|
||||
|
||||
- lib_dsp: 5.0.0 -> 6.2.1
|
||||
|
||||
- lib_locks: Added dependency 2.1.0
|
||||
|
||||
- lib_logging: 3.0.0 -> 3.1.1
|
||||
|
||||
- lib_mic_array: 4.0.0 -> 4.3.0
|
||||
|
||||
- lib_spdif: 4.0.0 -> 4.1.0
|
||||
|
||||
- lib_xassert: 4.0.0 -> 4.1.0
|
||||
|
||||
- lib_xud: 2.0.0 -> 2.2.0
|
||||
|
||||
3.1.0
|
||||
-----
|
||||
|
||||
@@ -11,14 +38,10 @@ lib_xua Change Log
|
||||
-----
|
||||
|
||||
* ADDED: Support for HID Report IDs
|
||||
* REMOVED: Support for HID Reports containing controls from mixed Usage
|
||||
pages
|
||||
* CHANGED: Renamed the HID API file xua_hid_report_descriptor.h to
|
||||
xua_hid_report.h
|
||||
|
||||
* Changes to dependencies:
|
||||
|
||||
- lib_locks: Added dependency 2.1.0
|
||||
* REMOVED: Support for HID Reports containing controls from mixed usage
|
||||
pages
|
||||
|
||||
2.1.1
|
||||
-----
|
||||
@@ -29,56 +52,53 @@ lib_xua Change Log
|
||||
-----
|
||||
|
||||
* CHANGED: Updated clock blocks to support lib_xud v2.0.0
|
||||
* CHANGED: Updated dependency on lib_xud to v2.0.0 for use by XVF3600
|
||||
|
||||
2.0.1
|
||||
-----
|
||||
* Changes to dependencies:
|
||||
|
||||
* CHANGED: Reverted dependency on lib_xud to v1.2.0 for use by XVF3510
|
||||
- lib_xud: 1.2.0 -> 2.0.0
|
||||
|
||||
2.0.0
|
||||
-----
|
||||
|
||||
* ADDED: Function to get a Report item description
|
||||
* ADDED: Support for multiple flash specs defined by DFU_FLASH_DEVICE
|
||||
* ADDED: Nullable c_aud_ctl chan-end optimisation for fixed rate devices
|
||||
* CHANGED: Check HID Usage Page when changing a Report item description
|
||||
* CHANGED: HID event ID from list to bit and byte location in HID Report
|
||||
* CHANGED: Interface to UserHIDRecordEvent()
|
||||
* ADDED: Support for multiple flash specs defined by DFU_FLASH_DEVICE
|
||||
* ADDED: Nullable c_aud_ctl chan-end optimisation for fixed rate devices
|
||||
|
||||
1.3.0
|
||||
-----
|
||||
|
||||
* ADDED: Build default HID Report descriptor at boot-time
|
||||
* ADDED: Function to return length of HID Report
|
||||
* CHANGED: Move HID descriptors to ease maintenance
|
||||
* CHANGED: Move legacy tests to separate directory
|
||||
* CHANGED: Replace unused GPI-specific HID event names with generic ones
|
||||
* ADDED: Build default HID Report descriptor at boot-time
|
||||
* ADDED: Function to return length of HID Report
|
||||
* CHANGED: HID Report to return multiple bytes
|
||||
* CHANGED: NO_USB conditional compilation switch with XUA_USB_EN
|
||||
* REMOVED: XS1 support
|
||||
* CHANGED: Clock blocks used for BCLK and MCLK
|
||||
* REMOVED: Arguments no longer supported by XUD_Main
|
||||
* CHANGED: Arguments no longer supported by XUD_Main
|
||||
* REMOVED: Support for XS1 based devices
|
||||
|
||||
1.2.0
|
||||
-----
|
||||
|
||||
* ADDED: Updates for xcore.ai/XS3 compatibility
|
||||
* ADDED: Makefile.Win32 for xmosdfu on Windows
|
||||
* CHANGED: Use XMOS Public Licence Version 1
|
||||
* FIXED: Bump default BCD device number to v1.2.0
|
||||
* FIXED: xmosdfu now fails with an error when given a directory (#119)
|
||||
* FIXED: Compilation errors related to HID code
|
||||
* FIXED: Runtime error when using mic array interface
|
||||
* CHANGED: Use XMOS Public Licence Version 1
|
||||
* FIXED: Automate HID Report Descriptor length in AC1 HID Descriptor
|
||||
|
||||
1.1.1
|
||||
-----
|
||||
|
||||
* RESOLVED: Zero length input packets generated before enumeration causing I2S
|
||||
timing pushout at startup
|
||||
* CHANGED: Pin Python package versions
|
||||
* REMOVED: not necessary cpanfile
|
||||
* CHANGED: Pin Python package versions
|
||||
* FIXED: Zero length input packets generated before enumeration causing
|
||||
I2S timing pushout at startup
|
||||
|
||||
1.1.0
|
||||
-----
|
||||
@@ -98,13 +118,12 @@ lib_xua Change Log
|
||||
* ADDED: Support for USB HID Set Idle request
|
||||
* ADDED: Pre-processor symbols to enable single-threaded, dual-PDM
|
||||
microphone operation
|
||||
* FIXED: Descriptors for XUA_ADAPTIVE incorrectly defined for IN endpoint
|
||||
* ADDED: Guards to user_hid.h and xua_hid.h
|
||||
* ADDED: UAC1 HID support for AC Stop (End Call), Volume Increment and
|
||||
Volume Decrement
|
||||
* CHANGE: UAC1 HID to report function keys f21 through f24 as specified by
|
||||
* CHANGED: UAC1 HID to report function keys f21 through f24 as specified by
|
||||
customer
|
||||
* CHANGE: HID interface for user to set and clear events from global
|
||||
* CHANGED: HID interface for user to set and clear events from global
|
||||
variable to function
|
||||
* CHANGE HID report descriptor to use generic events instead of GPI
|
||||
events, to report Key-phrase detection as AC Search, and to report end-call
|
||||
@@ -114,11 +133,24 @@ lib_xua Change Log
|
||||
* ADDED: Override USB descriptor with sampling frequency and
|
||||
bit-resolution set at boot time.
|
||||
* ADDED: Global pointer to allow external access to masterClockFreq
|
||||
* FIXED: Descriptors for XUA_ADAPTIVE incorrectly defined for IN endpoint
|
||||
|
||||
* Changes to dependencies:
|
||||
|
||||
- lib_spdif: 3.1.0 -> 4.0.0
|
||||
|
||||
- lib_xassert: 3.0.1 -> 4.0.0
|
||||
|
||||
0.2.1
|
||||
-----
|
||||
|
||||
* HOTFIX: Fix descriptors for XUA_ADAPTIVE
|
||||
* FIXED: Fix descriptors for XUA_ADAPTIVE
|
||||
|
||||
* Changes to dependencies:
|
||||
|
||||
- lib_logging: 2.1.1 -> 3.0.0
|
||||
|
||||
- lib_xud: 0.1.0 -> 0.2.0
|
||||
|
||||
0.2.0
|
||||
-----
|
||||
@@ -126,17 +158,17 @@ lib_xua Change Log
|
||||
* ADDED: Initial library documentation
|
||||
* ADDED: Application note AN00247: Using lib_xua with lib_spdif (transmit)
|
||||
* ADDED: Separate callbacks for input/output audio stream start/stop
|
||||
* CHANGE: I2S hardware resources no longer used globally and must be passed
|
||||
* CHANGED: I2S hardware resources no longer used globally and must be passed
|
||||
to XUA_AudioHub()
|
||||
* CHANGE: XUA_AudioHub() no longer pars S/PDIF transmitter task
|
||||
* CHANGE: Moved to lib_spdif (from module_spdif_tx & module_spdif_rx)
|
||||
* CHANGE: Define NUM_PDM_MICS renamed to XUA_NUM_PDM_MICS
|
||||
* CHANGE: Define NO_USB renamed to XUA_USB_EN
|
||||
* CHANGE: Build files updated to support new "xcommon" behaviour in xwaf.
|
||||
* RESOLVED: wChannelConfig in UAC1 descriptor set according to output channel
|
||||
* CHANGED: XUA_AudioHub() no longer pars S/PDIF transmitter task
|
||||
* CHANGED: Moved to lib_spdif (from module_spdif_tx & module_spdif_rx)
|
||||
* CHANGED: Define NUM_PDM_MICS renamed to XUA_NUM_PDM_MICS
|
||||
* CHANGED: Define NO_USB renamed to XUA_USB_EN
|
||||
* CHANGED: Build files updated to support new "xcommon" behaviour in xwaf.
|
||||
* FIXED: wChannelConfig in UAC1 descriptor set according to output channel
|
||||
count
|
||||
* RESOLVED: Indexing of ADAT channel strings (#18059)
|
||||
* RESOLVED: Rebooting device fails when PLL config "not reset" bit is set
|
||||
* FIXED: Indexing of ADAT channel strings (#18059)
|
||||
* FIXED: Rebooting device fails when PLL config "not reset" bit is set
|
||||
|
||||
* Changes to dependencies:
|
||||
|
||||
@@ -152,20 +184,19 @@ lib_xua Change Log
|
||||
-----
|
||||
|
||||
* ADDED: Application note AN00246: Simple USB Audio Device using lib_xua
|
||||
* CHANGE: xmosdfu emits warning if empty image read via upload
|
||||
* CHANGE: Simplified mclk port sharing - no longer uses unsafe pointer
|
||||
* RESOLVED: Runtime exception issues when incorrect feedback calculated
|
||||
* CHANGED: xmosdfu emits warning if empty image read via upload
|
||||
* CHANGED: Simplified mclk port sharing - no longer uses unsafe pointer
|
||||
* FIXED: Runtime exception issues when incorrect feedback calculated
|
||||
(introduced in sc_usb_audio 6.13)
|
||||
* RESOLVED: Output sample counter reset on stream start. Caused playback
|
||||
* FIXED: Output sample counter reset on stream start. Caused playback
|
||||
issues on some Linux based hosts
|
||||
|
||||
0.1.1
|
||||
-----
|
||||
|
||||
* RESOLVED: Configurations where I2S_CHANS_DAC and I2S_CHANS_ADC are both 0
|
||||
now build
|
||||
* RESOLVED: Deadlock in mixer when MAX_MIX_COUNT > 0 for larger channel
|
||||
counts
|
||||
* FIXED: Configurations where I2S_CHANS_DAC and I2S_CHANS_ADC are both 0 now
|
||||
build
|
||||
* FIXED: Deadlock in mixer when MAX_MIX_COUNT > 0 for larger channel counts
|
||||
|
||||
* Changes to dependencies:
|
||||
|
||||
@@ -176,31 +207,31 @@ lib_xua Change Log
|
||||
0.1.0
|
||||
-----
|
||||
|
||||
* ADDED: FB_USE_REF_CLOCK to allow feedback generation from xCORE
|
||||
internal reference
|
||||
* ADDED: Linux Makefile for xmosdfu host application
|
||||
* ADDED: Raspberry Pi Makefile for xmosdfu host application
|
||||
* ADDED: Documentation of PID argument to xmosdfu
|
||||
* ADDED: Optional build time microphone delay line (MIC_BUFFER_DEPTH)
|
||||
* CHANGE: Removal of audManage_if, users should define their own
|
||||
interfaces as required
|
||||
* CHANGE: Vendor specific control interface in UAC1 descriptor now has a
|
||||
* ADDED: FB_USE_REF_CLOCK to allow feedback generation from xCORE internal
|
||||
reference
|
||||
* ADDED: Linux Makefile for xmosdfu host application
|
||||
* ADDED: Raspberry Pi Makefile for xmosdfu host application
|
||||
* ADDED: Documentation of PID argument to xmosdfu
|
||||
* ADDED: Optional build time microphone delay line (MIC_BUFFER_DEPTH)
|
||||
* CHANGED: Removal of audManage_if, users should define their own interfaces
|
||||
as required
|
||||
* CHANGED: Vendor specific control interface in UAC1 descriptor now has a
|
||||
string descriptor so it shows up with a descriptive name in Windows Device
|
||||
Manager
|
||||
* CHANGE: DFU_BCD_DEVICE removed (now uses BCD_DEVICE)
|
||||
* CHANGE: Renaming in descriptors.h to avoid clashes with application
|
||||
* CHANGE: Make device reboot function no-argument (was one channel end)
|
||||
* RESOLVED: FIR gain compensation for PDM mics set incorrectly for divide of
|
||||
* CHANGED: DFU_BCD_DEVICE removed (now uses BCD_DEVICE)
|
||||
* CHANGED: Renaming in descriptors.h to avoid clashes with application
|
||||
* CHANGED: Make device reboot function no-argument (was one channel end)
|
||||
* FIXED: FIR gain compensation for PDM mics set incorrectly for divide of
|
||||
8
|
||||
* RESOLVED: Incorrect xmosdfu DYLD path in test script code
|
||||
* RESOLVED: xmosdfu cannot find XMOS device on modern MacBook Pro (#17897)
|
||||
* RESOLVED: Issue when feedback is initially incorrect when two SOF's are
|
||||
not yet received
|
||||
* RESOLVED: AUDIO_TILE and PDM_TILE may now share the same value/tile
|
||||
* RESOLVED: Cope with out of order interface numbers in xmosdfu
|
||||
* RESOLVED: DSD playback not functional on xCORE-200 (introduced in
|
||||
* FIXED: Incorrect xmosdfu DYLD path in test script code
|
||||
* FIXED: xmosdfu cannot find XMOS device on modern MacBook Pro (#17897)
|
||||
* FIXED: Issue when feedback is initially incorrect when two SOF's are not
|
||||
yet received
|
||||
* FIXED: AUDIO_TILE and PDM_TILE may now share the same value/tile
|
||||
* FIXED: Cope with out of order interface numbers in xmosdfu
|
||||
* FIXED: DSD playback not functional on xCORE-200 (introduced in
|
||||
sc_usb_audio 6.14)
|
||||
* RESOLVED: Improvements made to clock sync code in TDM slave mode
|
||||
* FIXED: Improvements made to clock sync code in TDM slave mode
|
||||
|
||||
|
||||
Legacy release history
|
||||
@@ -210,105 +241,105 @@ Legacy release history
|
||||
|
||||
7.4.1
|
||||
-----
|
||||
- RESOLVED: Exception due to null chanend when using NO_USB
|
||||
- FIXED: Exception due to null chanend when using NO_USB
|
||||
|
||||
7.4.0
|
||||
-----
|
||||
- RESOLVED: PID_DFU now based on AUDIO_CLASS. This potentially caused issues
|
||||
- FIXED: PID_DFU now based on AUDIO_CLASS. This potentially caused issues
|
||||
with UAC1 DFU
|
||||
|
||||
|
||||
7.3.0
|
||||
-----
|
||||
- CHANGE: Example OSX DFU host app updated to now take PID as runtime
|
||||
- CHANGED: Example OSX DFU host app updated to now take PID as runtime
|
||||
argument. This enabled multiple XMOS devices to be attached to the host
|
||||
during DFU process
|
||||
|
||||
7.2.0
|
||||
-----
|
||||
- ADDED: DFU to UAC1 descriptors (guarded by DFU and FORCE_UAC1_DFU)
|
||||
- RESOLVED: Removed 'reinterpretation to type of larger alignment' warnings
|
||||
- RESOLVED: DFU flash code run on tile[0] even if XUD_TILE and AUDIO_IO_TILE are not 0
|
||||
- FIXED: Removed 'reinterpretation to type of larger alignment' warnings
|
||||
- FIXED: DFU flash code run on tile[0] even if XUD_TILE and AUDIO_IO_TILE are not 0
|
||||
|
||||
7.1.0
|
||||
-----
|
||||
- ADDED: UserBufferManagementInit() to reset any state required in UserBufferManagement()
|
||||
- ADDED: I2S output up-sampling (enabled when AUD_TO_USB_RATIO is > 1)
|
||||
- ADDED: PDM Mic decimator output rate can now be controlled independently (via AUD_TO_MICS_RATIO)
|
||||
- CHANGE: Rename I2S input down-sampling (enabled when AUD_TO_USB_RATIO is > 1, rather than via I2S_DOWNSAMPLE_FACTOR)
|
||||
- RESOLVED: Crosstalk between input channels when I2S input down-sampling is enabled
|
||||
- RESOLVED: Mic decimation data tables properly sized when mic sample-rate < USB audio sample-rate
|
||||
- CHANGED: Rename I2S input down-sampling (enabled when AUD_TO_USB_RATIO is > 1, rather than via I2S_DOWNSAMPLE_FACTOR)
|
||||
- FIXED: Crosstalk between input channels when I2S input down-sampling is enabled
|
||||
- FIXED: Mic decimation data tables properly sized when mic sample-rate < USB audio sample-rate
|
||||
|
||||
7.0.1
|
||||
-----
|
||||
- RESOLVED: PDM microphone decimation issue at some sample rates caused by integration
|
||||
- FIXED: PDM microphone decimation issue at some sample rates caused by integration
|
||||
|
||||
7.0.0
|
||||
------
|
||||
- ADDED: I2S down-sampling (I2S_DOWNSAMPLE_FACTOR)
|
||||
- ADDED: I2S resynchronisation when in slave mode (CODEC_MASTER=1)
|
||||
- CHANGE: Various memory optimisations when MAX_FREQ = MIN_FREQ
|
||||
- CHANGE: Memory optimisations in audio buffering
|
||||
- CHANGE: Various memory optimisations in UAC1 mode
|
||||
- CHANGE: user_pdm_process() API change
|
||||
- CHANGE: PDM Mic decimator table now related to MIN_FREQ (memory optimisation)
|
||||
- RESOLVED: Audio request interrupt handler properly eliminated
|
||||
- CHANGED: Various memory optimisations when MAX_FREQ = MIN_FREQ
|
||||
- CHANGED: Memory optimisations in audio buffering
|
||||
- CHANGED: Various memory optimisations in UAC1 mode
|
||||
- CHANGED: user_pdm_process() API change
|
||||
- CHANGED: PDM Mic decimator table now related to MIN_FREQ (memory optimisation)
|
||||
- FIXED: Audio request interrupt handler properly eliminated
|
||||
|
||||
6.30.0
|
||||
------
|
||||
- RESOLVED: Number of PDM microphone channels configured now based on NUM_PDM_MICS define
|
||||
(previously hard-coded)
|
||||
- RESOLVED: PDM microphone clock divide now based MCLK defines (previously hard-coded)
|
||||
- CHANGE: Second microphone decimation core only run if NUM_PDM_MICS > 4
|
||||
- FIXED: Number of PDM microphone channels configured now based on NUM_PDM_MICS define
|
||||
(previously hard-coded)
|
||||
- FIXED: PDM microphone clock divide now based MCLK defines (previously hard-coded)
|
||||
- CHANGED: Second microphone decimation core only run if NUM_PDM_MICS > 4
|
||||
|
||||
6.20.0
|
||||
------
|
||||
- RESOLVED: Intra-frame sample delays of 1/2 samples on input streaming in TDM mode
|
||||
- RESOLVED: Build issue with NUM_USB_CHAN_OUT set to 0 and MIXER enabled
|
||||
- RESOLVED: SPDIF_TX_INDEX not defined build warning only emitted when SPDIF_TX defined
|
||||
- RESOLVED: Failure to enter DFU mode when configured without input volume control
|
||||
- FIXED: Intra-frame sample delays of 1/2 samples on input streaming in TDM mode
|
||||
- FIXED: Build issue with NUM_USB_CHAN_OUT set to 0 and MIXER enabled
|
||||
- FIXED: SPDIF_TX_INDEX not defined build warning only emitted when SPDIF_TX defined
|
||||
- FIXED: Failure to enter DFU mode when configured without input volume control
|
||||
|
||||
6.19.0
|
||||
------
|
||||
- RESOLVED: SPDIF_TX_INDEX not defined build warning only emitted when SPDIF_TX defined
|
||||
- RESOLVED: Failure to enter DFU mode when configured without input volume control
|
||||
- FIXED: SPDIF_TX_INDEX not defined build warning only emitted when SPDIF_TX defined
|
||||
- FIXED: Failure to enter DFU mode when configured without input volume control
|
||||
|
||||
6.18.1
|
||||
------
|
||||
- ADDED: Vendor Specific control interface added to UAC1 descriptors to allow control of
|
||||
XVSM params from Windows (via lib_usb)
|
||||
- ADDED: Vendor Specific control interface added to UAC1 descriptors to allow control of
|
||||
XVSM params from Windows (via lib_usb)
|
||||
|
||||
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
|
||||
- ADDED: Call to VendorRequests() and VendorRequests_Init() to Endpoint 0
|
||||
- ADDED: VENDOR_REQUESTS_PARAMS define to allow for custom parameters to VendorRequest calls
|
||||
- FIXED: FIR gain compensation set appropriately in lib_mic_array usage
|
||||
- CHANGED: i_dsp interface renamed i_audManage
|
||||
|
||||
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)
|
||||
- CHANGED: pdm_buffer() task now combinable
|
||||
- CHANGED: Audio I/O task now takes i_dsp interface as a parameter
|
||||
- CHANGED: Removed built-in support for A/U series internal ADC
|
||||
- CHANGED: User PDM Microphone processing now uses an interface (previously function call)
|
||||
|
||||
6.15.2
|
||||
------
|
||||
- RESOLVED: interrupt.h (used in audio buffering) now compatible with xCORE-200 ABI
|
||||
- FIXED: interrupt.h (used in audio buffering) now compatible with xCORE-200 ABI
|
||||
|
||||
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
|
||||
- FIXED: DAC data mis-alignment issue in TDM/I2S slave mode
|
||||
- CHANGED: Updates to support API changes in lib_mic_array version 2.0
|
||||
|
||||
6.15.0
|
||||
------
|
||||
|
||||
- RESOLVED: UAC 1.0 descriptors now support multi-channel volume control (previously were
|
||||
- FIXED: 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
|
||||
- CHANGED: Removed 32kHz sample-rate support when PDM microphones enabled (lib_mic_array
|
||||
currently does not support non-integer decimation factors)
|
||||
|
||||
6.14.0
|
||||
@@ -322,75 +353,75 @@ Legacy release history
|
||||
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
|
||||
- FIXED: 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
|
||||
- CHANGED: 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).
|
||||
- CHANGED: 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
|
||||
- CHANGED: module_queue no longer uses any assert module/lib
|
||||
|
||||
6.13.0
|
||||
------
|
||||
- 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
|
||||
- FIXED: 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
|
||||
- FIXED: 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
|
||||
- FIXED: Build failure when DFU disabled
|
||||
- FIXED: Build issue when I2S_CHANS_ADC/DAC set to 0 and CODEC_MASTER enabled
|
||||
- FIXED: Typo in MCLK_441 checking for MIN_FREQ define
|
||||
- CHANGED: Mixer and non-mixer channel comms scheme (decouple <-> audio path) now identical
|
||||
- CHANGED: 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
|
||||
- CHANGED: module_queue (in sc_usb_audio) now uses lib_xassert rather than module_xassert
|
||||
|
||||
6.12.6
|
||||
------
|
||||
- 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
|
||||
- FIXED: Build error when DFU is disabled
|
||||
- FIXED: Build error when I2S_CHANS_ADC or I2S_CHANS_DAC set to 0 and CODEC_MASTER enabled
|
||||
|
||||
6.12.5
|
||||
------
|
||||
- RESOLVED: Stream issue when NUM_USB_CHAN_IN < I2S_CHANS_ADC
|
||||
- FIXED: Stream issue when NUM_USB_CHAN_IN < I2S_CHANS_ADC
|
||||
|
||||
6.12.4
|
||||
------
|
||||
- RESOLVED: DFU fail when DSD enabled and USB library not running on tile[0]
|
||||
- FIXED: DFU fail when DSD enabled and USB library not running on tile[0]
|
||||
|
||||
6.12.3
|
||||
------
|
||||
- RESOLVED: Method for storing persistent state over a DFU reboot modified to improve resilience
|
||||
- FIXED: Method for storing persistent state over a DFU reboot modified to improve resilience
|
||||
against code-base and tools changes
|
||||
|
||||
6.12.2
|
||||
------
|
||||
- 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
|
||||
- FIXED: Reboot code (used for DFU) failure in tools versions > 14.0.2 (xCORE-200 only)
|
||||
- FIXED: Run-time exception in mixer when MAX_MIX_COUNT > 0 (xCORE-200 only)
|
||||
- FIXED: MAX_MIX_COUNT checked properly for mix strings in string table
|
||||
- CHANGED: 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.
|
||||
- CHANGED: DFU code can now use quad-SPI flash
|
||||
- CHANGED: 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
|
||||
- CHANGED: I2S_CHANS_PER_FRAME and I2S_WIRES_xxx defines tidied
|
||||
|
||||
6.12.1
|
||||
------
|
||||
- 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
|
||||
- FIXED: Fixes to TDM input timing/sample-alignment when BCLK=MCLK
|
||||
- FIXED: Various minor fixes to allow ADAT_RX to run on xCORE 200 MC AUDIO hardware
|
||||
- CHANGED: Moved from old SPDIF define to SPDIF_TX
|
||||
|
||||
6.12.0
|
||||
------
|
||||
- ADDED: Checks for XUD_200_SERIES define where required
|
||||
- RESOLVED: Run-time exception due to decouple interrupt not entering correct issue mode
|
||||
- FIXED: 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.
|
||||
- CHANGED: SPDIF Tx Core may now reside on a different tile from I2S
|
||||
- CHANGED: I2C ports now in structure to match new module_i2c_singleport/shared API.
|
||||
|
||||
* Changes to dependencies:
|
||||
|
||||
@@ -400,48 +431,48 @@ Legacy release history
|
||||
|
||||
6.11.3
|
||||
------
|
||||
- RESOLVED: (Major) Streaming issue when mixer not enabled (introduced in 6.11.2)
|
||||
- FIXED: (Major) Streaming issue when mixer not enabled (introduced in 6.11.2)
|
||||
|
||||
6.11.2
|
||||
------
|
||||
- RESOLVED: (Major) Enumeration issue when MAX_MIX_COUNT > 0 only. Introduced in mixer
|
||||
- FIXED: (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
|
||||
- FIXED: (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
|
||||
- FIXED: (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
|
||||
- FIXED: (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
|
||||
- FIXED: (Minor) String descriptor for Clock Selector unit incorrectly reported
|
||||
- FIXED: (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)
|
||||
- CHANGED: HID report descriptor defines added to shared user_hid.h
|
||||
- CHANGED: Now uses module_adat_rx from sc_adat (local module_usb_audio_adat removed)
|
||||
|
||||
6.11.1
|
||||
------
|
||||
- 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
|
||||
- FIXED: (Normal) Build issue with CODEC_MASTER (xCore is I2S slave) enabled
|
||||
- FIXED: (Minor) Channel ordering issue in when TDM and CODEC_MASTER mode enabled
|
||||
- FIXED: (Normal) DFU fails when SPDIF_RX enabled due to clock block being shared between SPDIF
|
||||
core and FlashLib
|
||||
|
||||
6.11.0
|
||||
------
|
||||
- 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
|
||||
- CHANGED: 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
|
||||
- CHANGED: Mixer mapping disabled when MAX_MIX_COUNT is 0 since this is wasted processing.
|
||||
- CHANGED: Descriptor changes to allow for channel input/output channel count up to 32
|
||||
(previous limit was 18)
|
||||
|
||||
6.10.0
|
||||
------
|
||||
- CHANGE: Endpoint management for iAP EA Native Transport now merged into buffer() core.
|
||||
- CHANGED: 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
|
||||
- CHANGED: Minor optimisation to I2S port code for inputs from ADC
|
||||
|
||||
6.9.0
|
||||
-----
|
||||
@@ -449,35 +480,35 @@ Legacy release history
|
||||
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
|
||||
- FIXED: (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
|
||||
- FIXED: (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
|
||||
- CHANGED: 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
|
||||
- CHANGED: 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
|
||||
- CHANGED: 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.
|
||||
|
||||
6.8.0
|
||||
-----
|
||||
- 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
|
||||
- FIXED: (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
|
||||
- FIXED: (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
|
||||
- FIXED: (Major) Endpoint 0 was requesting an out of bounds channel whilst requesting level data
|
||||
- FIXED: (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
|
||||
- FIXED: (Minor) LED level meter code now compatible with 13 tools (shared mem access)
|
||||
- FIXED: (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
|
||||
- CHANGED: Level meter buffer naming now resemble functionality
|
||||
|
||||
|
||||
Legacy release history
|
||||
|
||||
10
Jenkinsfile
vendored
10
Jenkinsfile
vendored
@@ -1,4 +1,4 @@
|
||||
@Library('xmos_jenkins_shared_library@v0.16.2') _
|
||||
@Library('xmos_jenkins_shared_library@v0.18.0') _
|
||||
|
||||
getApproval()
|
||||
|
||||
@@ -14,7 +14,7 @@ pipeline {
|
||||
stages {
|
||||
stage('Basic tests') {
|
||||
agent {
|
||||
label 'x86_64&&brew'
|
||||
label 'x86_64 && linux'
|
||||
}
|
||||
stages {
|
||||
stage('Get view') {
|
||||
@@ -113,7 +113,7 @@ pipeline {
|
||||
parallel {
|
||||
stage('Build Linux host app') {
|
||||
agent {
|
||||
label 'x86_64&&brew&&linux'
|
||||
label 'x86_64&&linux'
|
||||
}
|
||||
steps {
|
||||
xcorePrepareSandbox("${VIEW}", "${REPO}")
|
||||
@@ -129,7 +129,7 @@ pipeline {
|
||||
}
|
||||
stage('Build Mac host app') {
|
||||
agent {
|
||||
label 'x86_64&&brew&&macOS'
|
||||
label 'x86_64&&macOS'
|
||||
}
|
||||
steps {
|
||||
xcorePrepareSandbox("${VIEW}", "${REPO}")
|
||||
@@ -183,7 +183,7 @@ pipeline {
|
||||
}
|
||||
stage('Update') {
|
||||
agent {
|
||||
label 'x86_64&&brew'
|
||||
label 'x86_64 && linux'
|
||||
}
|
||||
steps {
|
||||
updateViewfiles()
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
lib_xua
|
||||
=======
|
||||
|
||||
:Scope: General Use
|
||||
|
||||
Summary
|
||||
-------
|
||||
|
||||
@@ -33,6 +35,12 @@ Key features of the various applications in this repository are as follows
|
||||
|
||||
- ADAT input
|
||||
|
||||
- Synchronisation to external digital streams i.e. S/PDIF or ADAT
|
||||
|
||||
- I2S slave & master modes
|
||||
|
||||
- TDM slave & master modes
|
||||
|
||||
- MIDI input/output (Compliant to USB Class Specification for MIDI devices)
|
||||
|
||||
- DSD output (Native and DoP mode) at DSD64 and DSD128 rates
|
||||
|
||||
3
doc/dfu/rst/xdoc.conf
Normal file
3
doc/dfu/rst/xdoc.conf
Normal file
@@ -0,0 +1,3 @@
|
||||
XMOSNEWSTYLE=2
|
||||
SOURCE_INCLUDE_DIRS=../../../lib_xua/host/xmosdfu
|
||||
SPHINX_MASTER_DOC=dfu
|
||||
1
doc_dfu/.gitignore
vendored
1
doc_dfu/.gitignore
vendored
@@ -1 +0,0 @@
|
||||
_build
|
||||
@@ -1,84 +0,0 @@
|
||||
*******************************
|
||||
XMOS PUBLIC LICENCE: Version 1
|
||||
*******************************
|
||||
|
||||
Subject to the conditions and limitations below, permission is hereby granted by XMOS LIMITED (“XMOS”), free of charge, to any person or entity obtaining a copy of the XMOS Software.
|
||||
|
||||
**1. Definitions**
|
||||
|
||||
**“Applicable Patent Rights”** means: (a) where XMOS is the grantor of the rights, (i) claims of patents that are now or in future owned by or assigned to XMOS and (ii) that cover subject matter contained in the Software, but only to the extent it is necessary to use, reproduce or distribute the Software without infringement; and (b) where you are the grantor of the rights, (i) claims of patents that are now or in future owned by or assigned to you and (ii) that cover the subject matter contained in your Derivatives, taken alone or in combination with the Software.
|
||||
|
||||
**“Compiled Code”** means any compiled, binary, machine readable or executable version of the Source Code.
|
||||
|
||||
**“Contributor”** means any person or entity that creates or contributes to the creation of Derivatives.
|
||||
|
||||
**“Derivatives”** means any addition to, deletion from and/or change to the substance, structure of the Software, any previous Derivatives, the combination of the Derivatives and the Software and/or any respective portions thereof.
|
||||
|
||||
**“Source Code”** means the human readable code that is suitable for making modifications but excluding any Compiled Code.
|
||||
|
||||
**“Software”** means the software and associated documentation files which XMOS makes available and which contain a notice identifying the software as original XMOS software and referring to the software being subject to the terms of this XMOS Public Licence.
|
||||
|
||||
This Licence refers to XMOS Software and does not relate to any XMOS hardware or devices which are protected by intellectual property rights (including patent and trade marks) which may be sold to you under a separate agreement.
|
||||
|
||||
|
||||
**2. Licence**
|
||||
|
||||
**Permitted Uses, Conditions and Restrictions.** Subject to the conditions below, XMOS grants you a worldwide, royalty free, non-exclusive licence, to the extent of any Patent Rights to do the following:
|
||||
|
||||
2.1 **Unmodified Software.** You may use, copy, display, publish, distribute and make available unmodified copies of the Software:
|
||||
|
||||
2.1.1 for personal or academic, non-commercial purposes; or
|
||||
|
||||
2.1.2 for commercial purposes provided the Software is at all times used on a device designed, licensed or developed by XMOS and, provided that in each instance (2.1.1 and 2.1.2):
|
||||
|
||||
(a) you must retain and reproduce in all copies of the Software the copyright and proprietary notices and disclaimers of XMOS as they appear in the Software, and keep intact all notices and disclaimers in the Software files that refer to this Licence; and
|
||||
|
||||
(b) you must include a copy of this Licence with every copy of the Software and documentation you publish, distribute and make available and you may not offer or impose any terms on such Software that alter or restrict this Licence or the intent of such Licence, except as permitted below (Additional Terms).
|
||||
|
||||
The licence above does not include any Compiled Code which XMOS may make available under a separate support and licence agreement.
|
||||
|
||||
2.2 **Derivatives.** You may create and modify Derivatives and use, copy, display, publish, distribute and make available Derivatives:
|
||||
|
||||
2.2.1 for personal or academic, non-commercial purposes; or
|
||||
|
||||
2.2.2 for commercial purposes, provided the Derivatives are at all times used on a device designed, licensed or developed by XMOS and, provided that in each instance (2.2.1 and 2.2.2):
|
||||
|
||||
(a) you must comply with the terms of clause 2.1 with respect to the Derivatives;
|
||||
|
||||
(b) you must copy (to the extent it doesn’t already exist) the notice below in each file of the Derivatives, and ensure all the modified files carry prominent notices stating that you have changed the files and the date of any change; and
|
||||
|
||||
(c) if you sublicence, distribute or otherwise make the Software and/or the Derivatives available for commercial purposes, you must provide that the Software and Derivatives are at all times used on a device designed, licensed or developed by XMOS.
|
||||
|
||||
Without limitation to these terms and clause 3 below, the Source Code and Compiled Code to your Derivatives may at your discretion (but without obligation) be released, copied, displayed, published, distributed and made available; and if you elect to do so, it must be under the terms of this Licence including the terms of the licence at clauses 2.2.1, 2.2.2 and clause 3 below.
|
||||
|
||||
2.3 **Distribution of Executable Versions.** If you distribute or make available Derivatives, you must include a prominent notice in the code itself as well as in all related documentation, stating that the Source Code of the Software from which the Derivatives are based is available under the terms of this Licence, with information on how and where to obtain such Source Code.
|
||||
|
||||
**3. Your Grant of Rights.** In consideration and as a condition to this Licence, you grant to any person or entity receiving or distributing any Derivatives, a non-exclusive, royalty free, perpetual, irrevocable license under your Applicable Patent Rights and all other intellectual property rights owned or controlled by you, to use, copy, display, publish, distribute and make available your Derivatives of the same scope and extent as XMOS’s licence under clause 2.2 above.
|
||||
|
||||
**4. Combined Products.** You may create a combined product by combining Software, Derivatives and other code not covered by this Licence as a single application or product. In such instance, you must comply with the requirements of this Licence for any portion of the Software and/or Derivatives.
|
||||
|
||||
**5. Additional Terms.** You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations and/or other rights consistent with the term of this Licence (“Additional Terms”) to any legitimate recipients of the Software and/or Derivatives. The terms on which you provide such Additional Terms are on your sole responsibility and you shall indemnify, defend and hold XMOS harmless against any claims asserted against XMOS.
|
||||
|
||||
**6. New Versions.** XMOS may publish revised and/or new versions of this Licence from time to time to accommodate changes to the Licence terms, new versions, updates and bug fixes of the Software. Each version will be given a distinguishing version number. Once Software has been published under a particular version of this Licence, you may continue to use it under the terms of that version. You may also choose to use the latest version of the Software under any subsequent version published by XMOS. Only XMOS shall have the right to modify these terms.
|
||||
|
||||
**7. IPR and Ownership**
|
||||
Any rights, including all intellectual property rights and all trademarks not expressly granted herein are reserved in full by the authors or copyright holders. Any requests for additional permissions by XMOS including any rights to use XMOS trademarks, should be made (without obligation) to XMOS at **support@xmos.com**
|
||||
|
||||
Nothing herein shall limit any rights that XMOS is otherwise entitled to under the doctrines of patent exhaustion, implied license, or legal estoppel. Neither the name of the authors, the copyright holders or any contributors may be used to endorse or promote any Derivatives from this Software without specific written permission. Any attempt to deal with the Software which does not comply with this Licence shall be void and shall automatically terminate any rights granted under this licence (including any licence of any intellectual property rights granted herein).
|
||||
Subject to the licences granted under this Licence any Contributor retains all rights, title and interest in and to any Derivatives made by Contributor subject to the underlying rights of XMOS in the Software. XMOS shall retain all rights, title and interest in the Software and any Derivatives made by XMOS (“XMOS Derivatives”). XMOS Derivatives will not automatically be subject to this Licence and XMOS shall be entitled to licence such rights on any terms (without obligation) as it sees fit.
|
||||
|
||||
**8. Termination**
|
||||
|
||||
8.1 This Licence will automatically terminate immediately, without notice to you, if:
|
||||
|
||||
(a) you fail to comply with the terms of this Licence; and/or
|
||||
|
||||
(b) you directly or indirectly commence any action for patent or intellectual property right infringement against XMOS, or any parent, group, affiliate or subsidiary of XMOS; provided XMOS did not first commence an action or patent infringement against you in that instance; and/or
|
||||
|
||||
(c) the terms of this Licence are held by any court of competent jurisdiction to be unenforceable in whole or in part.
|
||||
|
||||
**9. Critical Applications.** Unless XMOS has agreed in writing with you an agreement specifically governing use of the Goods in military, aerospace, automotive or medically related functions (collectively and individually hereinafter referred to as "Special Use"), any permitted use of the Software excludes Special Use. Notwithstanding any agreement between XMOS and you for Special Use, Special Use shall be at your own risk, and you shall fully indemnify XMOS against any damages, losses, costs and claims (direct and indirect) arising out of any Special Use.
|
||||
|
||||
**10. NO WARRANTY OR SUPPORT.** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL XMOS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, WARRANTY, CIVIL TORT (INCLUDING NEGLIGENCE), PRODUCTS LIABILITY OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE INCLUDING GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES EVEN IF SUCH PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES AND NOT WITHSTANDING THE FAILURE OF ESSENTIAL PURPOSE. IN SOME JURISDICTIONS PARTIES ARE UNABLE TO LIMIT LIABILTY IN THIS WAY, IF THIS APPLIES TO YOUR JURISDICTION THIS LIABILITY CLAUSE ABOVE MAY NOT APPLY. NOTWITHSTANDING THE ABOVE, IN NO EVENT SHALL XMOS’s TOTAL LIABILITY TO YOU FOR ALL DAMAGES, LOSS OR OTHERWISE EXCEED $50.
|
||||
|
||||
**11. Governing Law and Jurisdiction.** This Licence constitutes the entire agreement between the parties with respect to the subject matter hereof. The Licence shall be governed by the laws of England and the conflict of laws and UN Convention on Contracts for the International Sale of Goods, shall not apply.
|
||||
@@ -1 +0,0 @@
|
||||
SOURCE_INCLUDE_DIRS=../lib_xua/host/xmosdfu
|
||||
@@ -5,10 +5,8 @@ TARGET = xk-audio-216-mc.xn
|
||||
# The flags passed to xcc when building the application
|
||||
XCC_FLAGS = -fcomment-asm -Xmapper --map -Xmapper MAPFILE -O3 -report -save-temps \
|
||||
-g -Wno-unused-function -Wno-timing -DXUD_SERIES_SUPPORT=XUD_X200_SERIES \
|
||||
-DXUD_CORE_CLOCK=600 -DUSB_TILE=tile[1] -fxscope
|
||||
-DXUD_CORE_CLOCK=600 -DUSB_TILE=tile[1] -fxscope -DUAC_FORCE_FEEDBACK_EP=0
|
||||
|
||||
#-DSDA_HIGH=2 -DSCL_HIGH=1 -fxscope
|
||||
|
||||
# The USED_MODULES variable lists other module used by the application. These
|
||||
# modules will extend the SOURCE_DIRS, INCLUDE_DIRS and LIB_DIRS variables.
|
||||
# Modules are expected to be in the directory above the BASE_DIR directory.
|
||||
|
||||
@@ -1,2 +1,3 @@
|
||||
XMOSNEWSTYLE=1
|
||||
SOURCE_INCLUDE_DIRS=../../src
|
||||
XMOSNEWSTYLE=2
|
||||
SOURCE_INCLUDE_DIRS=../../src
|
||||
SPHINX_MASTER_DOC=AN00246_xua_example
|
||||
|
||||
@@ -5,7 +5,8 @@ TARGET = xk-audio-216-mc.xn
|
||||
# The flags passed to xcc when building the application
|
||||
XCC_FLAGS = -fcomment-asm -Xmapper --map -Xmapper MAPFILE -O3 -report -save-temps \
|
||||
-g -Wno-unused-function -Wno-timing -DXUD_SERIES_SUPPORT=XUD_X200_SERIES \
|
||||
-DXUD_CORE_CLOCK=600 -DUSB_TILE=tile[1] -DSDA_HIGH=2 -DSCL_HIGH=1 -fxscope
|
||||
-DXUD_CORE_CLOCK=600 -DUSB_TILE=tile[1] -DSDA_HIGH=2 -DSCL_HIGH=1 -fxscope \
|
||||
-DUAC_FORCE_FEEDBACK_EP=0
|
||||
|
||||
# The USED_MODULES variable lists other module used by the application. These
|
||||
# modules will extend the SOURCE_DIRS, INCLUDE_DIRS and LIB_DIRS variables.
|
||||
|
||||
@@ -1,2 +1,3 @@
|
||||
XMOSNEWSTYLE=1
|
||||
SOURCE_INCLUDE_DIRS=../../src
|
||||
XMOSNEWSTYLE=2
|
||||
SOURCE_INCLUDE_DIRS=../../src
|
||||
SPHINX_MASTER_DOC=AN00247_xua_example_spdif_tx
|
||||
|
||||
@@ -5,7 +5,8 @@ TARGET = mic_array_ref.xn
|
||||
# The flags passed to xcc when building the application
|
||||
XCC_FLAGS = -fcomment-asm -Xmapper --map -Xmapper MAPFILE -O3 -report -save-temps \
|
||||
-g -Wno-unused-function -Wno-timing -DXUD_SERIES_SUPPORT=XUD_X200_SERIES \
|
||||
-DXUD_CORE_CLOCK=600 -DUSB_TILE=tile[1] -DSDA_HIGH=2 -DSCL_HIGH=1 -fxscope
|
||||
-DXUD_CORE_CLOCK=600 -DUSB_TILE=tile[1] -DSDA_HIGH=2 -DSCL_HIGH=1 -fxscope \
|
||||
-DUAC_FORCE_FEEDBACK_EP=0
|
||||
|
||||
# The USED_MODULES variable lists other module used by the application. These
|
||||
# modules will extend the SOURCE_DIRS, INCLUDE_DIRS and LIB_DIRS variables.
|
||||
|
||||
@@ -1,2 +1,3 @@
|
||||
XMOSNEWSTYLE=1
|
||||
SOURCE_INCLUDE_DIRS=../../src
|
||||
XMOSNEWSTYLE=2
|
||||
SOURCE_INCLUDE_DIRS=../../src
|
||||
SPHINX_MASTER_DOC=AN00248_xua_example_pdm_mics
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
# Copyright (c) 2016, XMOS Ltd, All rights reserved
|
||||
TARGET = xk-audio-216-mc.xn
|
||||
USED_MODULES = lib_xua \
|
||||
module_i2c_shared module_i2c_single_port lib_logging
|
||||
USED_MODULES = lib_xua lib_i2c lib_logging
|
||||
|
||||
BUILD_FLAGS = -O0 -g -lflash -DXUD_SERIES_SUPPORT=4 -DXUD_CORE_CLOCK=600 -fxscope -save-temps -march=xs2a -DUSB_TILE=tile[1]
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright 2016-2021 XMOS LIMITED.
|
||||
// Copyright 2016-2022 XMOS LIMITED.
|
||||
// This Software is subject to the terms of the XMOS Public Licence: Version 1.
|
||||
#ifdef HARDWARE
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
#include "devicedefines.h"
|
||||
#include <platform.h>
|
||||
#include "gpio_access.h"
|
||||
#include "i2c_shared.h"
|
||||
#include "i2c.h"
|
||||
#include "cs4384.h"
|
||||
#include "cs5368.h"
|
||||
#include "cs2100.h"
|
||||
@@ -25,16 +25,10 @@
|
||||
|
||||
on tile[0] : out port p_gpio = XS1_PORT_8C;
|
||||
|
||||
#ifndef IAP
|
||||
/* If IAP not enabled, i2c ports not declared - still needs for DAC config */
|
||||
on tile [0] : struct r_i2c r_i2c = {XS1_PORT_4A};
|
||||
#else
|
||||
extern struct r_i2c r_i2c;
|
||||
#endif
|
||||
port p_i2c = on tile[0]:PORT_I2C;
|
||||
|
||||
#define DAC_REGWRITE(reg, val) {data[0] = val; i2c_shared_master_write_reg(r_i2c, CS4384_I2C_ADDR, reg, data, 1);}
|
||||
#define DAC_REGREAD(reg, val) {i2c_shared_master_read_reg(r_i2c, CS4384_I2C_ADDR, reg, val, 1);}
|
||||
#define ADC_REGWRITE(reg, val) {data[0] = val; i2c_shared_master_write_reg(r_i2c, CS5368_I2C_ADDR, reg, data, 1);}
|
||||
#define DAC_REGWRITE(reg, val) {result = i2c.write_reg(CS4384_I2C_ADDR, reg, val);}
|
||||
#define ADC_REGWRITE(reg, val) {result = i2c.write_reg(CS5368_I2C_ADDR, reg, val);}
|
||||
|
||||
#ifdef USE_FRACTIONAL_N
|
||||
|
||||
@@ -45,14 +39,15 @@ extern struct r_i2c r_i2c;
|
||||
#define PLL_SYNC_FREQ 300
|
||||
#endif
|
||||
|
||||
#define CS2100_REGREAD(reg, data) {data[0] = 0xAA; i2c_master_read_reg(CS2100_I2C_DEVICE_ADDR, reg, data, 1, r_i2c);}
|
||||
#define CS2100_REGREAD_ASSERT(reg, data, expected) {data[0] = 0xAA; i2c_master_read_reg(CS2100_I2C_DEVICE_ADDR, reg, data, 1, r_i2c); assert(data[0] == expected);}
|
||||
#define CS2100_REGWRITE(reg, val) {data[0] = val; i2c_master_write_reg(CS2100_I2C_DEVICE_ADDR, reg, data, 1, r_i2c);}
|
||||
#define CS2100_REGREAD(reg, data) {data[0] = i2c.read_reg(CS2100_I2C_DEVICE_ADDR, reg, result);}
|
||||
#define CS2100_REGREAD_ASSERT(reg, data, expected) {data[0] = i2c.read_reg(CS2100_I2C_DEVICE_ADDR, reg, result); assert(data[0] == expected);}
|
||||
#define CS2100_REGWRITE(reg, val) {result = i2c.write_reg(CS2100_I2C_DEVICE_ADDR, reg, val);}
|
||||
|
||||
/* Init of CS2100 */
|
||||
void PllInit(void)
|
||||
void PllInit(client interface i2c_master_if i2c)
|
||||
{
|
||||
unsigned char data[1] = {0};
|
||||
i2c_regop_res_t result;
|
||||
|
||||
#if XCORE_200_MC_AUDIO_HW_VERSION < 2
|
||||
/* Enable init */
|
||||
@@ -73,12 +68,15 @@ void PllInit(void)
|
||||
CS2100_REGREAD_ASSERT(CS2100_GLOBAL_CONFIG, data, 0x01);
|
||||
CS2100_REGREAD_ASSERT(CS2100_FUNC_CONFIG_1, data, 0x08);
|
||||
CS2100_REGREAD_ASSERT(CS2100_FUNC_CONFIG_2, data, 0x00);
|
||||
|
||||
i2c.shutdown();
|
||||
}
|
||||
|
||||
/* Setup PLL multiplier */
|
||||
void PllMult(unsigned output, unsigned ref)
|
||||
void PllMult(unsigned output, unsigned ref, client interface i2c_master_if i2c)
|
||||
{
|
||||
unsigned char data[1] = {0};
|
||||
i2c_regop_res_t result;
|
||||
|
||||
/* PLL expects 12:20 format, convert output and ref to 12:20 */
|
||||
/* Shift up the dividend by 12 to retain format... */
|
||||
@@ -120,9 +118,6 @@ void AudioHwInit(chanend ?c_codec)
|
||||
start_clock(clk_pll_sync);
|
||||
#endif
|
||||
|
||||
/* Init the i2c module */
|
||||
i2c_shared_master_init(r_i2c);
|
||||
|
||||
/* Assert reset to ADC and DAC */
|
||||
set_gpio(P_GPIO_DAC_RST_N, 0);
|
||||
set_gpio(P_GPIO_ADC_RST_N, 0);
|
||||
@@ -143,7 +138,12 @@ void AudioHwInit(chanend ?c_codec)
|
||||
set_gpio(P_GPIO_PLL_SEL, 1);
|
||||
|
||||
/* Initialise external PLL */
|
||||
PllInit();
|
||||
i2c_master_if i2c[1];
|
||||
par
|
||||
{
|
||||
i2c_master_single_port(i2c, 1, p_i2c, 10, 0, 1, 0);
|
||||
PllInit(i2c[0]);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef IAP
|
||||
@@ -155,10 +155,11 @@ void AudioHwInit(chanend ?c_codec)
|
||||
/* Configures the external audio hardware for the required sample frequency.
|
||||
* See gpio.h for I2C helper functions and gpio access
|
||||
*/
|
||||
void AudioHwConfig(unsigned samFreq, unsigned mClk, chanend ?c_codec, unsigned dsdMode,
|
||||
unsigned sampRes_DAC, unsigned sampRes_ADC)
|
||||
void AudioHwConfig2(unsigned samFreq, unsigned mClk, chanend ?c_codec, unsigned dsdMode,
|
||||
unsigned sampRes_DAC, unsigned sampRes_ADC, client interface i2c_master_if i2c)
|
||||
{
|
||||
unsigned char data[1] = {0};
|
||||
unsigned char data[1] = {0};
|
||||
i2c_regop_res_t result;
|
||||
|
||||
/* Put ADC and DAC into reset */
|
||||
set_gpio(P_GPIO_ADC_RST_N, 0);
|
||||
@@ -167,7 +168,7 @@ void AudioHwConfig(unsigned samFreq, unsigned mClk, chanend ?c_codec, unsigned d
|
||||
/* Set master clock select appropriately */
|
||||
#if defined(USE_FRACTIONAL_N)
|
||||
/* Configure external fractional-n clock multiplier for 300Hz -> mClkFreq */
|
||||
PllMult(mClk, PLL_SYNC_FREQ);
|
||||
PllMult(mClk, PLL_SYNC_FREQ, i2c);
|
||||
#endif
|
||||
/* Allow some time for mclk to lock and MCLK to stabilise - this is important to avoid glitches at start of stream */
|
||||
{
|
||||
@@ -365,8 +366,20 @@ void AudioHwConfig(unsigned samFreq, unsigned mClk, chanend ?c_codec, unsigned d
|
||||
DAC_REGWRITE(CS4384_MODE_CTRL, 0b10000000);
|
||||
}
|
||||
#endif
|
||||
|
||||
i2c.shutdown();
|
||||
return;
|
||||
}
|
||||
//:
|
||||
|
||||
void AudioHwConfig(unsigned samFreq, unsigned mClk, chanend ?c_codec, unsigned dsdMode,
|
||||
unsigned sampRes_DAC, unsigned sampRes_ADC)
|
||||
{
|
||||
i2c_master_if i2c[1];
|
||||
par
|
||||
{
|
||||
i2c_master_single_port(i2c, 1, p_i2c, 10, 0, 1, 0);
|
||||
AudioHwConfig2(samFreq, mClk, c_codec, dsdMode, sampRes_DAC, sampRes_ADC, i2c[0]);
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright 2011-2021 XMOS LIMITED.
|
||||
// Copyright 2011-2022 XMOS LIMITED.
|
||||
// This Software is subject to the terms of the XMOS Public Licence: Version 1.
|
||||
/*
|
||||
* @brief Defines relating to device configuration and customisation of lib_xua
|
||||
@@ -83,7 +83,7 @@
|
||||
/**
|
||||
* @brief Number of DSD output channels. Default: 0 (disabled)
|
||||
*/
|
||||
#if defined(DSD_CHANS_DAC)
|
||||
#if defined(DSD_CHANS_DAC) && (DSD_CHANS_DAC != 0)
|
||||
#if defined(NATIVE_DSD) && (NATIVE_DSD == 0)
|
||||
#undef NATIVE_DSD
|
||||
#else
|
||||
@@ -1140,38 +1140,11 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* IAP */
|
||||
#if defined(IAP) && (IAP == 0)
|
||||
#undef IAP
|
||||
/* Always enable explicit feedback EP, even when input stream is present */
|
||||
#ifndef UAC_FORCE_FEEDBACK_EP
|
||||
#define UAC_FORCE_FEEDBACK_EP (1)
|
||||
#endif
|
||||
|
||||
/* IAP Interrupt endpoint */
|
||||
#if defined(IAP_INT_EP) && (IAP_INT_EP == 0)
|
||||
#undef IAP_INT_EP
|
||||
#endif
|
||||
|
||||
/* IAP EA Native Transport */
|
||||
#if defined(IAP_EA_NATIVE_TRANS) && (IAP_EA_NATIVE_TRANS == 0)
|
||||
#undef IAP_EA_NATIVE_TRANS
|
||||
#endif
|
||||
|
||||
#if defined(IAP_EA_NATIVE_TRANS) || defined(__DOXYGEN__)
|
||||
/**
|
||||
* @brief Number of supported EA Native Interface Alternative settings.
|
||||
*
|
||||
* Only 1 supported
|
||||
*/
|
||||
#ifndef IAP_EA_NATIVE_TRANS_ALT_COUNT
|
||||
#define IAP_EA_NATIVE_TRANS_ALT_COUNT 1
|
||||
#endif
|
||||
|
||||
#if (IAP_EA_NATIVE_TRANS_ALT_COUNT > 1)
|
||||
/* Only 1 supported */
|
||||
#error
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
#if (defined(UAC_FORCE_FEEDBACK_EP) && UAC_FORCE_FEEDBACK_EP == 0)
|
||||
#undef UAC_FORCE_FEEDBACK_EP
|
||||
#endif
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright 2017-2021 XMOS LIMITED.
|
||||
// Copyright 2017-2022 XMOS LIMITED.
|
||||
// This Software is subject to the terms of the XMOS Public Licence: Version 1.
|
||||
#ifndef __XUA_CONF_FULL_H__
|
||||
#define __XUA_CONF_FULL_H__
|
||||
@@ -9,6 +9,4 @@
|
||||
|
||||
#include "xua_conf_default.h"
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
Binary file not shown.
@@ -36,4 +36,3 @@ Older versions of Windows are not guaranteed to operate as expected. Devices are
|
||||
|
||||
|
||||
|
||||
.. include:: ../../../CHANGELOG.rst
|
||||
@@ -55,7 +55,7 @@ audio driver and handles locking to the S/PDIF clock source if required (see Ext
|
||||
Ideally the parity of each word/sample received should be checked. This is done using the built in
|
||||
``crc32`` function (see ``xs1.h``):
|
||||
|
||||
.. literalinclude:: sc_usb_audio/module_usb_audio/clocking/clockgen.xc
|
||||
.. literalinclude:: lib_xua/src/core/clocking/clockgen.xc
|
||||
:start-after: //:badParity
|
||||
:end-before: //:
|
||||
|
||||
|
||||
@@ -1,2 +1,5 @@
|
||||
XMOSNEWSTYLE = 1
|
||||
XMOSNEWSTYLE = 2
|
||||
DOXYGEN_DIRS=../../api
|
||||
SOURCE_INCLUDE_DIRS=../../../lib_xua
|
||||
SPHINX_MASTER_DOC=lib_xua
|
||||
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
VERSION = 3.1.0
|
||||
VERSION = 3.2.0
|
||||
|
||||
DEPENDENT_MODULES = lib_logging(>=3.0.0) \
|
||||
lib_xassert(>=4.0.0) \
|
||||
lib_xud(>=2.0.1) \
|
||||
DEPENDENT_MODULES = lib_logging(>=3.1.0) \
|
||||
lib_xassert(>=4.1.0) \
|
||||
lib_xud(>=2.0.2) \
|
||||
lib_spdif(>=4.0.0) \
|
||||
lib_mic_array(>=4.0.0) \
|
||||
lib_locks(>=2.0.3)
|
||||
lib_locks(>=2.1.0)
|
||||
|
||||
MODULE_XCC_FLAGS = $(XCC_FLAGS) \
|
||||
-O3 \
|
||||
|
||||
@@ -747,29 +747,32 @@ void XUA_Buffer_Decouple(chanend c_mix_out
|
||||
inuint(c_mix_out);
|
||||
outct(c_mix_out, SET_SAMPLE_FREQ);
|
||||
outuint(c_mix_out, sampFreq);
|
||||
|
||||
inUnderflow = 1;
|
||||
SET_SHARED_GLOBAL(g_aud_to_host_rdptr, aud_to_host_fifo_start);
|
||||
SET_SHARED_GLOBAL(g_aud_to_host_wrptr, aud_to_host_fifo_start);
|
||||
SET_SHARED_GLOBAL(g_aud_to_host_dptr,aud_to_host_fifo_start+4);
|
||||
|
||||
/* Set buffer to send back to zeros buffer */
|
||||
SET_SHARED_GLOBAL(g_aud_to_host_buffer, g_aud_to_host_zeros);
|
||||
|
||||
/* Update size of zeros buffer (and sampsToWrite) */
|
||||
SetupZerosSendBuffer(aud_to_host_usb_ep, sampFreq, g_curSubSlot_In);
|
||||
|
||||
/* Reset OUT buffer state */
|
||||
outUnderflow = 1;
|
||||
SET_SHARED_GLOBAL(g_aud_from_host_rdptr, aud_from_host_fifo_start);
|
||||
SET_SHARED_GLOBAL(g_aud_from_host_wrptr, aud_from_host_fifo_start);
|
||||
SET_SHARED_GLOBAL(aud_data_remaining_to_device, 0);
|
||||
|
||||
if(outOverflow)
|
||||
|
||||
if(sampFreq != AUDIO_STOP_FOR_DFU)
|
||||
{
|
||||
/* If we were previously in overflow we wont have marked as ready */
|
||||
XUD_SetReady_OutPtr(aud_from_host_usb_ep, aud_from_host_fifo_start+4);
|
||||
outOverflow = 0;
|
||||
inUnderflow = 1;
|
||||
SET_SHARED_GLOBAL(g_aud_to_host_rdptr, aud_to_host_fifo_start);
|
||||
SET_SHARED_GLOBAL(g_aud_to_host_wrptr, aud_to_host_fifo_start);
|
||||
SET_SHARED_GLOBAL(g_aud_to_host_dptr,aud_to_host_fifo_start+4);
|
||||
|
||||
/* Set buffer to send back to zeros buffer */
|
||||
SET_SHARED_GLOBAL(g_aud_to_host_buffer, g_aud_to_host_zeros);
|
||||
|
||||
/* Update size of zeros buffer (and sampsToWrite) */
|
||||
SetupZerosSendBuffer(aud_to_host_usb_ep, sampFreq, g_curSubSlot_In);
|
||||
|
||||
/* Reset OUT buffer state */
|
||||
outUnderflow = 1;
|
||||
SET_SHARED_GLOBAL(g_aud_from_host_rdptr, aud_from_host_fifo_start);
|
||||
SET_SHARED_GLOBAL(g_aud_from_host_wrptr, aud_from_host_fifo_start);
|
||||
SET_SHARED_GLOBAL(aud_data_remaining_to_device, 0);
|
||||
|
||||
if(outOverflow)
|
||||
{
|
||||
/* If we were previously in overflow we wont have marked as ready */
|
||||
XUD_SetReady_OutPtr(aud_from_host_usb_ep, aud_from_host_fifo_start+4);
|
||||
outOverflow = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* Wait for handshake back and pass back up */
|
||||
@@ -780,7 +783,8 @@ void XUA_Buffer_Decouple(chanend c_mix_out
|
||||
|
||||
ENABLE_INTERRUPTS();
|
||||
|
||||
speedRem = 0;
|
||||
if(sampFreq != AUDIO_STOP_FOR_DFU)
|
||||
speedRem = 0;
|
||||
continue;
|
||||
}
|
||||
#if (AUDIO_CLASS == 2)
|
||||
|
||||
@@ -1104,6 +1104,9 @@ void XUA_Buffer_Ep(register chanend c_aud_out,
|
||||
break;
|
||||
}
|
||||
break;
|
||||
#endif // if IAP_EA_NATIVE_TRANS
|
||||
|
||||
#endif // ifdef IAP
|
||||
|
||||
default:
|
||||
#if ( 0 < HID_CONTROLS )
|
||||
@@ -1125,9 +1128,6 @@ void XUA_Buffer_Ep(register chanend c_aud_out,
|
||||
#endif
|
||||
break;
|
||||
//::
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright 2011-2021 XMOS LIMITED.
|
||||
// Copyright 2011-2022 XMOS LIMITED.
|
||||
// This Software is subject to the terms of the XMOS Public Licence: Version 1.
|
||||
|
||||
#include <xs1.h>
|
||||
@@ -665,7 +665,7 @@ void clockGen (streaming chanend ?c_spdif_rx, chanend ?c_adat_rx, out port p, ch
|
||||
/* Inspect for if we need to produce an edge */
|
||||
if ((adatCounters.receivedSamples >= adatCounters.samplesPerTick))
|
||||
{
|
||||
/* Check edge is about right... S/PDIF may have changed freq... */
|
||||
/* Check edge is about right... ADAT may have changed freq... */
|
||||
if (timeafter(adatReceivedTime, (timeLastEdge + LOCAL_CLOCK_INCREMENT - LOCAL_CLOCK_MARGIN)))
|
||||
{
|
||||
/* Record edge time */
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright 2011-2021 XMOS LIMITED.
|
||||
// Copyright 2011-2022 XMOS LIMITED.
|
||||
// This Software is subject to the terms of the XMOS Public Licence: Version 1.
|
||||
/**
|
||||
* @brief Implements endpoint zero for an USB Audio 1.0/2.0 device
|
||||
@@ -492,37 +492,44 @@ void XUA_Endpoint0_init(chanend c_ep0_out, chanend c_ep0_in, NULLABLE_RESOURCE(c
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef XUA_USB_DESCRIPTOR_OVERWRITE_RATE_RES //change USB descriptor frequencies and bit resolution values here
|
||||
#ifdef XUA_USB_DESCRIPTOR_OVERWRITE_RATE_RES //change USB descriptor frequencies and bit resolution values here
|
||||
|
||||
cfgDesc_Audio1[USB_AS_IN_INTERFACE_DESCRIPTOR_OFFSET_SUB_FRAME] = get_device_to_usb_bit_res() >> 3; //sub frame rate = bit rate /8
|
||||
cfgDesc_Audio1[USB_AS_IN_INTERFACE_DESCRIPTOR_OFFSET_SUB_FRAME + 1] = (get_device_to_usb_bit_res() & 0xff); //bit resolution
|
||||
const int num_of_usb_descriptor_freq = 3; //This should be =3 according to the comments "using a value of <=2 or > 7 for num_freqs_a1 causes enumeration issues on Windows" in xua_ep0_descriptors.h
|
||||
|
||||
cfgDesc_Audio1[USB_AS_OUT_INTERFACE_DESCRIPTOR_OFFSET_SUB_FRAME] = get_usb_to_device_bit_res() >> 3; //sub frame rate = bit rate /8
|
||||
cfgDesc_Audio1[USB_AS_OUT_INTERFACE_DESCRIPTOR_OFFSET_SUB_FRAME + 1] = (get_usb_to_device_bit_res() & 0xff); //bit resolution
|
||||
#if( 0 < NUM_USB_CHAN_IN )
|
||||
|
||||
const unsigned num_of_usb_descriptor_freq=3; //This should be =3 according to the comments "using a value of <=2 or > 7 for num_freqs_a1 causes enumeration issues on Windows" in xua_ep0_descriptors.h
|
||||
int i=0;
|
||||
for(i=0;i<num_of_usb_descriptor_freq;i++)
|
||||
cfgDesc_Audio1[USB_AS_IN_INTERFACE_DESCRIPTOR_OFFSET_SUB_FRAME] = get_device_to_usb_bit_res() >> 3; //sub frame rate = bit rate /8
|
||||
cfgDesc_Audio1[USB_AS_IN_INTERFACE_DESCRIPTOR_OFFSET_SUB_FRAME + 1] = (get_device_to_usb_bit_res() & 0xff); //bit resolution
|
||||
|
||||
for(int i=0;i<num_of_usb_descriptor_freq;i++)
|
||||
{
|
||||
cfgDesc_Audio1[USB_AS_IN_INTERFACE_DESCRIPTOR_OFFSET_FREQ + 3*i] = get_device_to_usb_rate() & 0xff;
|
||||
cfgDesc_Audio1[USB_AS_IN_INTERFACE_DESCRIPTOR_OFFSET_FREQ + 3*i + 1] = (get_device_to_usb_rate() & 0xff00)>> 8;
|
||||
cfgDesc_Audio1[USB_AS_IN_INTERFACE_DESCRIPTOR_OFFSET_FREQ + 3*i + 2] = (get_device_to_usb_rate() & 0xff0000)>> 16;
|
||||
}
|
||||
cfgDesc_Audio1[USB_AS_IN_EP_DESCRIPTOR_OFFSET_MAXPACKETSIZE] = ((get_device_to_usb_bit_res() >> 3) * MAX_PACKET_SIZE_MULT_IN_FS) & 0xff; //max packet size
|
||||
cfgDesc_Audio1[USB_AS_IN_EP_DESCRIPTOR_OFFSET_MAXPACKETSIZE + 1] = (((get_device_to_usb_bit_res() >> 3) * MAX_PACKET_SIZE_MULT_IN_FS) & 0xff00) >> 8; //max packet size
|
||||
|
||||
for(i=0;i<num_of_usb_descriptor_freq;i++)
|
||||
#endif // NUM_USB_CHAN_IN
|
||||
|
||||
#if( 0 < NUM_USB_CHAN_OUT )
|
||||
|
||||
cfgDesc_Audio1[USB_AS_OUT_INTERFACE_DESCRIPTOR_OFFSET_SUB_FRAME] = get_usb_to_device_bit_res() >> 3; //sub frame rate = bit rate /8
|
||||
cfgDesc_Audio1[USB_AS_OUT_INTERFACE_DESCRIPTOR_OFFSET_SUB_FRAME + 1] = (get_usb_to_device_bit_res() & 0xff); //bit resolution
|
||||
|
||||
for(int i=0;i<num_of_usb_descriptor_freq;i++)
|
||||
{
|
||||
cfgDesc_Audio1[USB_AS_OUT_INTERFACE_DESCRIPTOR_OFFSET_FREQ + 3*i] = get_usb_to_device_rate() & 0xff;
|
||||
cfgDesc_Audio1[USB_AS_OUT_INTERFACE_DESCRIPTOR_OFFSET_FREQ + 3*i + 1] = (get_usb_to_device_rate() & 0xff00)>> 8;
|
||||
cfgDesc_Audio1[USB_AS_OUT_INTERFACE_DESCRIPTOR_OFFSET_FREQ + 3*i + 2] = (get_usb_to_device_rate() & 0xff0000)>> 16;
|
||||
}
|
||||
|
||||
cfgDesc_Audio1[USB_AS_IN_EP_DESCRIPTOR_OFFSET_MAXPACKETSIZE] = ((get_device_to_usb_bit_res() >> 3) * MAX_PACKET_SIZE_MULT_IN_FS) & 0xff; //max packet size
|
||||
cfgDesc_Audio1[USB_AS_IN_EP_DESCRIPTOR_OFFSET_MAXPACKETSIZE + 1] = (((get_device_to_usb_bit_res() >> 3) * MAX_PACKET_SIZE_MULT_IN_FS) & 0xff00) >> 8; //max packet size
|
||||
|
||||
cfgDesc_Audio1[USB_AS_OUT_EP_DESCRIPTOR_OFFSET_MAXPACKETSIZE] = ((get_usb_to_device_bit_res() >> 3) * MAX_PACKET_SIZE_MULT_OUT_FS) & 0xff; //max packet size
|
||||
cfgDesc_Audio1[USB_AS_OUT_EP_DESCRIPTOR_OFFSET_MAXPACKETSIZE + 1] = (((get_usb_to_device_bit_res() >> 3) * MAX_PACKET_SIZE_MULT_OUT_FS) & 0xff00) >> 8; //max packet size
|
||||
cfgDesc_Audio1[USB_AS_OUT_EP_DESCRIPTOR_OFFSET_MAXPACKETSIZE] = ((get_usb_to_device_bit_res() >> 3) * MAX_PACKET_SIZE_MULT_OUT_FS) & 0xff; //max packet size
|
||||
cfgDesc_Audio1[USB_AS_OUT_EP_DESCRIPTOR_OFFSET_MAXPACKETSIZE + 1] = (((get_usb_to_device_bit_res() >> 3) * MAX_PACKET_SIZE_MULT_OUT_FS) & 0xff00) >> 8; //max packet size
|
||||
#endif // NUM_USB_CHAN_OUT
|
||||
|
||||
#endif
|
||||
#endif // XUA_USB_DESCRIPTOR_OVERWRITE_RATE_RES
|
||||
|
||||
#if( 0 < HID_CONTROLS )
|
||||
hidReportInit();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright 2011-2021 XMOS LIMITED.
|
||||
// Copyright 2011-2022 XMOS LIMITED.
|
||||
// This Software is subject to the terms of the XMOS Public Licence: Version 1.
|
||||
/**
|
||||
* @file xua_ep0_descriptors.h
|
||||
@@ -1284,7 +1284,7 @@ USB_Config_Descriptor_Audio2_t cfgDesc_Audio2=
|
||||
.bSourceID = FU_USBIN, /* 7 bSourceID Connect to analog input feature unit*/
|
||||
#else
|
||||
|
||||
.bSourceID = ID_IT_USB,/* 7 bSourceID Connect to analog input term */
|
||||
.bSourceID = ID_IT_AUD,/* 7 bSourceID Connect to analog input term */
|
||||
#endif
|
||||
.bCSourceID = ID_CLKSEL,
|
||||
.bmControls = 0x0000,
|
||||
@@ -2331,9 +2331,10 @@ const unsigned num_freqs_a1 = MAX(3, (0
|
||||
#define CFG_TOTAL_LENGTH_A1 (18 + AC_TOTAL_LENGTH + (INPUT_INTERFACES_A1 * (49 + num_freqs_a1 * 3)) + (OUTPUT_INTERFACES_A1 * (49 + num_freqs_a1 * 3)) + CONTROL_INTERFACE_BYTES + DFU_INTERFACE_BYTES + HID_INTERFACE_BYTES)
|
||||
#endif
|
||||
|
||||
#define INTERFACE_DESCRIPTOR_BYTES (9)
|
||||
|
||||
#ifdef XUA_USB_DESCRIPTOR_OVERWRITE_RATE_RES
|
||||
#define AS_INTERFACE_BYTES (7)
|
||||
#define INTERFACE_DESCRIPTOR_BYTES (9)
|
||||
#define AS_FORMAT_TYPE_BYTES (17)
|
||||
#define USB_AS_IN_INTERFACE_DESCRIPTOR_OFFSET_SUB_FRAME (18 + AC_TOTAL_LENGTH + (OUTPUT_INTERFACES_A1 * (49 + num_freqs_a1 * 3)) + (2*INTERFACE_DESCRIPTOR_BYTES) + (AS_INTERFACE_BYTES) + 5)
|
||||
#define USB_AS_OUT_INTERFACE_DESCRIPTOR_OFFSET_SUB_FRAME (18 + AC_TOTAL_LENGTH + (2*INTERFACE_DESCRIPTOR_BYTES) + (AS_INTERFACE_BYTES) + 5)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright 2011-2021 XMOS LIMITED.
|
||||
// Copyright 2011-2022 XMOS LIMITED.
|
||||
// This Software is subject to the terms of the XMOS Public Licence: Version 1.
|
||||
/**
|
||||
* @brief Implements relevant requests from the USB Audio 2.0 Specification
|
||||
@@ -1095,7 +1095,7 @@ int AudioEndpointRequests_1(XUD_ep ep0_out, XUD_ep ep0_in, USB_SetupPacket_t &sp
|
||||
/* Check Control Selector */
|
||||
unsigned short controlSelector = sp.wValue>>8;
|
||||
|
||||
if((result != XUD_GetBuffer(ep0_out, (buffer, unsigned char[]), length)) != XUD_RES_OKAY)
|
||||
if((result = XUD_GetBuffer(ep0_out, (buffer, unsigned char[]), length)) != XUD_RES_OKAY)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
@@ -1280,6 +1280,9 @@ XUD_Result_t AudioClassRequests_1(XUD_ep ep0_out, XUD_ep ep0_in, USB_SetupPacket
|
||||
buffer[0] = (VOLUME_RES_MIXER & 0xff);
|
||||
buffer[1] = (VOLUME_RES_MIXER >> 8);
|
||||
return XUD_DoGetRequest(ep0_out, ep0_in, buffer, 2, sp.wLength);
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
return XUD_RES_ERR;
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
// Copyright 2011-2021 XMOS LIMITED.
|
||||
// Copyright 2011-2022 XMOS LIMITED.
|
||||
// This Software is subject to the terms of the XMOS Public Licence: Version 1.
|
||||
|
||||
|
||||
#include <xs1.h>
|
||||
#include <print.h>
|
||||
#include "xua.h"
|
||||
@@ -15,7 +13,6 @@
|
||||
/* FAST_MIXER has a bit of a nasty implentation but is more effcient */
|
||||
#define FAST_MIXER 1
|
||||
|
||||
|
||||
//#ifdef OUT_VOLUME_IN_MIXER
|
||||
static unsigned int multOut_array[NUM_USB_CHAN_OUT + 1];
|
||||
static xc_ptr multOut;
|
||||
@@ -252,51 +249,53 @@ static inline void GetSamplesFromHost(chanend c)
|
||||
#pragma unsafe arrays
|
||||
static inline void GiveSamplesToDevice(chanend c, xc_ptr ptr, xc_ptr multOut)
|
||||
{
|
||||
{
|
||||
#if(NUM_USB_CHAN_OUT == 0)
|
||||
outuint(c, 0);
|
||||
#else
|
||||
#pragma loop unroll
|
||||
for (int i=0; i<NUM_USB_CHAN_OUT; i++)
|
||||
{
|
||||
int sample, x;
|
||||
for (int i=0; i<NUM_USB_CHAN_OUT; i++)
|
||||
{
|
||||
int sample, x;
|
||||
#if defined(OUT_VOLUME_IN_MIXER) && defined(OUT_VOLUME_AFTER_MIX)
|
||||
int mult;
|
||||
int h;
|
||||
unsigned l;
|
||||
int mult;
|
||||
int h;
|
||||
unsigned l;
|
||||
#endif
|
||||
int index;
|
||||
int index;
|
||||
|
||||
#if MAX_MIX_COUNT > 0
|
||||
/* If mixer turned on sort out the channel mapping */
|
||||
/* If mixer turned on sort out the channel mapping */
|
||||
|
||||
/* Read pointer to sample from the map */
|
||||
read_via_xc_ptr_indexed(index, ptr, i);
|
||||
/* Read pointer to sample from the map */
|
||||
read_via_xc_ptr_indexed(index, ptr, i);
|
||||
|
||||
/* Read the actual sample value */
|
||||
read_via_xc_ptr_indexed(sample, samples, index);
|
||||
/* Read the actual sample value */
|
||||
read_via_xc_ptr_indexed(sample, samples, index);
|
||||
#else
|
||||
unsafe
|
||||
{
|
||||
/* Read the actual sample value */
|
||||
sample = ptr_samples[i];
|
||||
}
|
||||
unsafe
|
||||
{
|
||||
/* Read the actual sample value */
|
||||
sample = ptr_samples[i];
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(OUT_VOLUME_IN_MIXER) && defined(OUT_VOLUME_AFTER_MIX)
|
||||
/* Do volume control processing */
|
||||
/* Do volume control processing */
|
||||
#warning OUT Vols in mixer, AFTER mix & map
|
||||
read_via_xc_ptr_indexed(mult, multOut, i);
|
||||
{h, l} = macs(mult, sample, 0, 0);
|
||||
h<<=3; // Shift used to be done in audio thread but now done here incase of 32bit support
|
||||
read_via_xc_ptr_indexed(mult, multOut, i);
|
||||
{h, l} = macs(mult, sample, 0, 0);
|
||||
h<<=3; // Shift used to be done in audio thread but now done here incase of 32bit support
|
||||
#error
|
||||
#if (STREAM_FORMAT_OUTPUT_RESOLUTION_32BIT_USED == 1)
|
||||
h |= (l >>29)& 0x7; // Note: This step is not required if we assume sample depth is 24bit (rather than 32bit)
|
||||
// Note: We need all 32bits for Native DSD
|
||||
h |= (l >>29)& 0x7; // Note: This step is not required if we assume sample depth is 24bit (rather than 32bit)
|
||||
// Note: We need all 32bits for Native DSD
|
||||
#endif
|
||||
outuint(c, h);
|
||||
outuint(c, h);
|
||||
#else
|
||||
outuint(c, sample);
|
||||
outuint(c, sample);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
#pragma unsafe arrays
|
||||
@@ -603,9 +602,6 @@ static void mixer1(chanend c_host, chanend c_mix_ctl, chanend c_mixer2)
|
||||
}
|
||||
#else /* IF MAX_MIX_COUNT > 0 */
|
||||
/* No mixes, this thread runs on its own doing just volume */
|
||||
#if(NUM_USB_CHAN_OUT == 0)
|
||||
outuint(c_mixer2, 0);
|
||||
#endif
|
||||
GiveSamplesToDevice(c_mixer2, samples_to_device_map, multOut);
|
||||
GetSamplesFromDevice(c_mixer2);
|
||||
GetSamplesFromHost(c_host);
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
// Copyright 2021-2022 XMOS LIMITED.
|
||||
// This Software is subject to the terms of the XMOS Public Licence: Version 1.
|
||||
#include "xua_conf_full.h"
|
||||
#if( 0 < HID_CONTROLS )
|
||||
|
||||
#include <assert.h>
|
||||
#include <stddef.h>
|
||||
#include <stdio.h>
|
||||
@@ -851,3 +854,5 @@ unsigned hidReportValidate( void )
|
||||
return hidReportValidateInfoStruct( &info );
|
||||
}
|
||||
}
|
||||
|
||||
#endif // ( 0 < HID_CONTROLS )
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
module_locks Readme
|
||||
===================
|
||||
|
||||
:scope: Dummy module
|
||||
:description: Allows compiling legacy_tests in lib_xua with lib_locks. sc_i2c is used in the tests and it requires module_locks from sc_util, but the definitions in sc_utils conflict with the ones in lib_locks.
|
||||
:keywords: dummy
|
||||
:boards: XMOS Dev Kit
|
||||
@@ -1 +0,0 @@
|
||||
# Dummy module used in legacy_tests. See README.rst for more details.
|
||||
@@ -49,6 +49,7 @@ foreach( testsourcefile ${APP_SOURCES} )
|
||||
"-fxscope"
|
||||
"-target=XCORE-AI-EXPLORER"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/config.xscope"
|
||||
"-DHID_CONTROLS=1"
|
||||
"-DUNITY_SUPPORT_64"
|
||||
"-DUNITY_INCLUDE_DOUBLE"
|
||||
)
|
||||
|
||||
@@ -230,6 +230,7 @@ def build(bld):
|
||||
makefile_opts['XCC_FLAGS'] = ['-O2',
|
||||
'-g',
|
||||
'-Wall',
|
||||
'-DHID_CONTROLS=1',
|
||||
'-DUNITY_SUPPORT_64',
|
||||
'-DUNITY_INCLUDE_DOUBLE',
|
||||
'-DXUD_CORE_CLOCK=600',
|
||||
|
||||
Reference in New Issue
Block a user