diff --git a/CHANGELOG.rst b/CHANGELOG.rst index e14cfd90..2e42ce4a 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -11,6 +11,7 @@ UNRELEASED * FIXED: Incorrect internal input EP count for input only devices * ADDED: MIDI unit and subsystem tests * FIXED: ADAT Tx called too frequently + * FIXED: Initialise SMUX based on DEFAULT_FREQ in clockgen 4.0.0 ----- diff --git a/lib_xua/src/core/clocking/clockgen.xc b/lib_xua/src/core/clocking/clockgen.xc index c75f56e4..ac172b8f 100644 --- a/lib_xua/src/core/clocking/clockgen.xc +++ b/lib_xua/src/core/clocking/clockgen.xc @@ -235,7 +235,23 @@ void clockGen ( streaming chanend ?c_spdif_rx, unsigned tmp; /* Start in no-SMUX (8-channel) mode */ - int smux = 0; + int smux; + // Initialise smux based based on the DEFAULT_FREQ + if(DEFAULT_FREQ < 88200) + { + /* No SMUX */ + smux = 0; + } + else if(DEFAULT_FREQ < 176400) + { + /* SMUX */ + smux = 1; + } + else + { + /* SMUX II */ + smux = 2; + } #ifdef LEVEL_METER_LEDS timer t_level;