From 31bae905eea72d27d5d324388377a7c64c0a748d Mon Sep 17 00:00:00 2001 From: Ross Owen Date: Thu, 9 Apr 2015 14:54:06 +0100 Subject: [PATCH] Resolving build issues with SPDIF on same core. --- module_usb_audio/audio.h | 2 +- module_usb_audio/audio.xc | 32 ++++++++++++-------------------- module_usb_audio/main.xc | 23 ++++++++++------------- 3 files changed, 23 insertions(+), 34 deletions(-) diff --git a/module_usb_audio/audio.h b/module_usb_audio/audio.h index 81679d02..9560980c 100644 --- a/module_usb_audio/audio.h +++ b/module_usb_audio/audio.h @@ -15,7 +15,7 @@ * CODEC configuration functions. */ void audio(chanend c_in, -#ifdef SPDIF_TX +#if defined(SPDIF_TX) && (SPDIF_TX_TILE != AUDIO_IO_TILE) chanend c_spdif_tx, #endif #if(defined(SPDIF_RX) || defined(ADAT_RX)) diff --git a/module_usb_audio/audio.xc b/module_usb_audio/audio.xc index 39b03666..6ca90bdd 100755 --- a/module_usb_audio/audio.xc +++ b/module_usb_audio/audio.xc @@ -817,33 +817,27 @@ unsigned static deliver(chanend c_out, chanend ?c_spd_out, return 0; } -#ifdef SPDIF +#if defined(SPDIF_TX) && (SPDIF_TX_TILE != AUDIO_IO_TILE) void SpdifTxWrapper(chanend c_spdif_tx) { unsigned portId; -#if SPDIF_TX_TILE == AUDIO_IO_TILE - SpdifTransmitPortConfig(p_spdif_tx, clk_mst_spd, p_mclk_in); -#error -#else //configure_clock_src(clk, p_mclk); + // TODO could share clock block here.. + // NOTE, Assuming SPDIF tile == USB tile here.. asm("ldw %0, dp[p_mclk_in2]":"=r"(portId)); asm("setclk res[%0], %1"::"r"(clk_mst_spd), "r"(portId)); configure_out_port_no_ready(p_spdif_tx, clk_mst_spd, 0); set_clock_fall_delay(clk_mst_spd, 7); start_clock(clk_mst_spd); -#endif - + while(1) { SpdifTransmit(p_spdif_tx, c_spdif_tx); } - } - #endif - /* This function is a dummy version of the deliver thread that does not connect to the codec ports. It is used during DFU reset. */ unsigned static dummy_deliver(chanend c_out) @@ -897,7 +891,7 @@ unsigned static dummy_deliver(chanend c_out) #define SAMPLES_PER_PRINT 1 void audio(chanend c_mix_out, -#if SPDIF +#if defined(SPDIF_TX) && (SPDIF_TX_TILE != AUDIO_IO_TILE) chanend c_spdif_out, #endif #if (defined(ADAT_RX) || defined(SPDIF_RX)) @@ -905,9 +899,9 @@ chanend c_dig_rx, #endif chanend ?c_config, chanend ?c) { -//#ifdef SPDIF - // chan c_spdif_out; -//endif +#if defined (SPDIF_TX) && (SPDIF_TX_TILE == AUDIO_IO_TILE) + chan c_spdif_out; +#endif #ifdef ADAT_TX chan c_adat_out; unsigned adatSmuxMode = 0; @@ -978,11 +972,10 @@ chanend ?c_config, chanend ?c) #endif #endif /* Configure ADAT/SPDIF tx ports */ -#ifdef SPDIF - //SpdifTransmitPortConfig(p_spdif_tx, clk_mst_spd, p_mclk_in); +#if defined(SPDIF_TX) && (SPDIF_TX_TILE == AUDIO_IO_TILE) + SpdifTransmitPortConfig(p_spdif_tx, clk_mst_spd, p_mclk_in); #endif - /* Perform required CODEC/ADC/DAC initialisation */ AudioHwInit(c_config); @@ -1124,8 +1117,7 @@ chanend ?c_config, chanend ?c) par { -#if 0 -//#ifdef SPDIF +#if defined(SPDIF_TX) && (SPDIF_TX_TILE == AUDIO_IO_TILE) { set_thread_fast_mode_on(); SpdifTransmit(p_spdif_tx, c_spdif_out); @@ -1206,7 +1198,7 @@ chanend ?c_config, chanend ?c) } } } -#ifdef SPDIF +#ifdef SPDIF_TX /* Notify S/PDIF thread of impending new freq... */ outct(c_spdif_out, XS1_CT_END); #endif diff --git a/module_usb_audio/main.xc b/module_usb_audio/main.xc index b7dc54ce..29e7aa64 100755 --- a/module_usb_audio/main.xc +++ b/module_usb_audio/main.xc @@ -383,7 +383,7 @@ void usb_audio_core(chanend c_mix_out } void usb_audio_io(chanend c_aud_in, chanend ?c_adc, -#ifdef SPDIF_TX +#if defined(SPDIF_TX) && (SPDIF_TX_TILE != AUDIO_IO_TILE) chanend c_spdif_tx, #endif #ifdef MIXER @@ -419,21 +419,18 @@ void usb_audio_io(chanend c_aud_in, chanend ?c_adc, { thread_speed(); #ifdef MIXER - audio(c_mix_out, -#ifdef SPDIF_TX +#define AUDIO_CHANNEL c_mix_out +#else +#define AUDIO_CHANNEL c_aud_in +#endif + audio(AUDIO_CHANNEL, +#if defined(SPDIF_TX) && (SPDIF_TX_TILE != AUDIO_IO_TILE) c_spdif_tx, #endif #if defined(SPDIF_RX) || defined(ADAT_RX) c_dig_rx, #endif c_aud_cfg, c_adc); -#else - audio(c_aud_in, -#if defined(SPDIF_RX) || defined(ADAT_RX) - c_dig_rx, -#endif - c_aud_cfg, c_adc); -#endif } #if defined(SPDIF_RX) || defined(ADAT_RX) @@ -498,7 +495,7 @@ int main() #define c_adat_rx null #endif -#ifdef SPDIF_TX +#if defined(SPDIF_TX) && (SPDIF_TX_TILE != AUDIO_IO_TILE) chan c_spdif_tx; #endif @@ -532,7 +529,7 @@ int main() ); on tile[AUDIO_IO_TILE]: usb_audio_io(c_mix_out, c_adc -#ifdef SPDIF_TX +#if defined(SPDIF_TX) && (SPDIF_TX_TILE != AUDIO_IO_TILE) , c_spdif_tx #endif #ifdef MIXER @@ -541,7 +538,7 @@ int main() ,c_aud_cfg, c_spdif_rx, c_adat_rx, c_clk_ctl, c_clk_int ); -#ifdef SPDIF_TX +#if defined(SPDIF_TX) && (SPDIF_TX_TILE != AUDIO_IO_TILE) on tile[SPDIF_TX_TILE]: { thread_speed();