Merge pull request #395 from xross/fix/394

Fix trap on XS3A based devices when moving to DSD mode
This commit is contained in:
Ross Owen
2024-05-24 12:16:55 +01:00
committed by GitHub
2 changed files with 15 additions and 13 deletions

View File

@@ -4,20 +4,19 @@ lib_xua Change Log
UNRELEASED
----------
* FIXED: Device fails to enumerate when ADAT and S/PDIF transmit are enabled
* FIXED: Update software PLL at the correct rate for ADAT SMUX
* ADDED: MIDI unit and subsystem tests
* CHANGED: Enable only the minimum number of ADAT input formats based for the
supported sample frequencies
* CHANGED: Enabling ADAT tx enables different channel count interface alts, based on sample
rate
* CHANGED: Input audio buffer size and the condition to come out of underflow modified to
to fix buffer underflow in some configurations
* 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
* ADDED: MIDI unit and subsystem tests
* FIXED: ADAT Tx called too frequently
* CHANGED: ADAT Tx presents different channel count interfaces based on sample
rate
* CHANGED: aud_to_host buffer size and the condition to come out of underflow
in decoupler to fix buffer underflow seen in ADAT tests
* FIXED: Initialise SMUX based on DEFAULT_FREQ in clockgen
* FIXED: Update g_numUsbChan_Out to the number of channels for the selected
interface when receiving a set interface request over EP0
* 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
4.0.0
-----

View File

@@ -1,4 +1,4 @@
// Copyright 2011-2023 XMOS LIMITED.
// Copyright 2011-2024 XMOS LIMITED.
// This Software is subject to the terms of the XMOS Public Licence: Version 1.
#include <xs1.h>
#include <platform.h>
@@ -36,7 +36,10 @@ void ConfigAudioPorts(
#ifdef __XS3A__
/* Increase drive strength of clock ports to 8mA */
asm volatile ("setc res[%0], %1" :: "r" (p_bclk), "r" (0x200006));
asm volatile ("setc res[%0], %1" :: "r" (p_lrclk), "r" (0x200006));
if(!isnull(p_lrclk))
{
asm volatile ("setc res[%0], %1" :: "r" (p_lrclk), "r" (0x200006));
}
#endif
/* Note this call to stop_clock() will pause forever if the port clocking the clock-block is not low.