From 54410819272911372006c08b4ecc567c58bf3b68 Mon Sep 17 00:00:00 2001 From: xross Date: Wed, 29 Jun 2022 13:07:38 +0100 Subject: [PATCH] I2S_MODE_TDM now XUA_PCM_FORMAT --- lib_xua/api/xua_conf_default.h | 17 +++++++++++------ lib_xua/src/core/audiohub/audiohub_initport.xc | 2 +- lib_xua/src/core/audiohub/xua_audiohub.xc | 12 ++++++------ 3 files changed, 18 insertions(+), 13 deletions(-) diff --git a/lib_xua/api/xua_conf_default.h b/lib_xua/api/xua_conf_default.h index 79d1451e..9fbee951 100644 --- a/lib_xua/api/xua_conf_default.h +++ b/lib_xua/api/xua_conf_default.h @@ -98,20 +98,25 @@ #define DSD_CHANS_DAC 0 #endif +#define XUA_PCM_FORMAT_I2S (0) +#define XUA_PCM_FORMAT_TDM (1) -/* TODO not required */ -#ifndef I2S_MODE_TDM -#define I2S_MODE_TDM 0 +#ifdef XUA_PCM_FORMAT + #if (XUA_PCM_FORMAT != XUA_PCM_FORMAT_I2S) && (XUA_PCM_FORMAT != XUA_PCM_FORMAT_TDM) + #error Bad value for XUA_PCM_FORMAT + #endif +#else + #define XUA_PCM_FORMAT XUA_PCM_FORMAT_I2S #endif /** * @brief Channels per I2S frame. * * - * Default: 2 i.e standard stereo I2S (8 if using TDM i.e. I2S_MODE_TDM). + * Default: 2 i.e standard stereo I2S (8 if using TDM i.e. XUA_PCM_FORMAT_TDM). * **/ #ifndef I2S_CHANS_PER_FRAME - #if (I2S_MODE_TDM == 1) + #if (XUA_PCM_FORMAT == XUA_PCM_FORMAT_TDM) #define I2S_CHANS_PER_FRAME 8 #else #define I2S_CHANS_PER_FRAME 2 @@ -188,7 +193,7 @@ */ #if (I2S_DOWNSAMPLE_MONO_IN == 1) #define I2S_DOWNSAMPLE_CHANS_IN (I2S_CHANS_ADC / 2) - #if ((I2S_DOWNSAMPLE_FACTOR_IN > 1) && (I2S_MODE_TDM == 1)) + #if ((I2S_DOWNSAMPLE_FACTOR_IN > 1) && (XUA_PCM_FORMAT == XUA_PCM_FORMAT_TDM)) #error Mono I2S input downsampling is not avaliable in TDM mode #endif #else diff --git a/lib_xua/src/core/audiohub/audiohub_initport.xc b/lib_xua/src/core/audiohub/audiohub_initport.xc index 51c467ca..e0e15161 100644 --- a/lib_xua/src/core/audiohub/audiohub_initport.xc +++ b/lib_xua/src/core/audiohub/audiohub_initport.xc @@ -85,7 +85,7 @@ void InitPorts_slave(unsigned divide, buffered _XUA_CLK_DIR port:32 p_lrclk, buf p_lrclk when pinseq(1) :> void; p_lrclk when pinseq(0) :> void; p_lrclk when pinseq(1) :> void; -#if I2S_MODE_TDM +#if (XUA_PCM_FORMAT == XUA_PCM_FORMAT_TDM) p_lrclk when pinseq(0) :> void; p_lrclk when pinseq(1) :> void @ tmp; #else diff --git a/lib_xua/src/core/audiohub/xua_audiohub.xc b/lib_xua/src/core/audiohub/xua_audiohub.xc index 10e0fc52..5c9ce4e5 100755 --- a/lib_xua/src/core/audiohub/xua_audiohub.xc +++ b/lib_xua/src/core/audiohub/xua_audiohub.xc @@ -161,7 +161,7 @@ static inline int HandleSampleClock(int frameCount, buffered _XUA_CLK_DIR port:3 unsigned lrval = 0; p_lrclk :> lrval; - if(I2S_MODE_TDM) + if(XUA_PCM_FORMAT == XUA_PCM_FORMAT_TDM) { /* Only check for the rising edge of frame sync being in the right place because falling edge timing not specified */ if (frameCount == 1) @@ -186,7 +186,7 @@ static inline int HandleSampleClock(int frameCount, buffered _XUA_CLK_DIR port:3 return syncError; #else - if(I2S_MODE_TDM) + if(XUA_PCM_FORMAT == XUA_PCM_FORMAT_TDM) { if(frameCount == (I2S_CHANS_PER_FRAME-1)) p_lrclk <: 0x80000000; @@ -553,7 +553,7 @@ unsigned static AudioHub_MainLoop(chanend ?c_out, chanend ?c_spd_out } #endif -#if I2S_MODE_TDM +#if (XUA_PCM_FORMAT == XUA_PCM_FORMAT_TDM) /* Increase frameCount by 2 since we have output two channels (per data line) */ frameCount+=1; if(frameCount == I2S_CHANS_PER_FRAME) @@ -724,7 +724,7 @@ void XUA_AudioHub(chanend ?c_aud, clock ?clk_audio_mclk, clock ?clk_audio_bclk, while(1) { /* Calculate what master clock we should be using */ - if ((MCLK_441 % curSamFreq) == 0) + if (((MCLK_441) % curSamFreq) == 0) { mClk = MCLK_441; #ifdef ADAT_TX @@ -733,7 +733,7 @@ void XUA_AudioHub(chanend ?c_aud, clock ?clk_audio_mclk, clock ?clk_audio_bclk, adatMultiple = mClk / 44100; #endif } - else if ((MCLK_48 % curSamFreq) == 0) + else if (((MCLK_48) % curSamFreq) == 0) { mClk = MCLK_48; #ifdef ADAT_TX @@ -746,7 +746,7 @@ void XUA_AudioHub(chanend ?c_aud, clock ?clk_audio_mclk, clock ?clk_audio_bclk, /* Calculate master clock to bit clock (or DSD clock) divide for current sample freq * e.g. 11.289600 / (176400 * 64) = 1 */ { -#if I2S_MODE_TDM +#if (XUA_PCM_FORMAT == XUA_PCM_FORMAT_TDM) /* I2S has 32 bits per sample. *8 as 8 channels */ unsigned numBits = 256; #else