Fix trap on XS3A based devices when moving to DSD mode

This commit is contained in:
Ross Owen
2024-05-22 13:12:17 +01:00
parent f401831766
commit c7d0449a1f
2 changed files with 14 additions and 12 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

@@ -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.