From c5f3867c6247f8fdd6e9d6c475daba939afe39ea Mon Sep 17 00:00:00 2001 From: Ross Owen Date: Fri, 14 Sep 2012 16:10:50 +0100 Subject: [PATCH] Fixed issue with I2S xcore-slave mode on L1/SU1 where the master clock-block does not have a source causing bad feedback --- module_usb_audio/main.xc | 6 ++++++ module_usb_audio/ports/audioports.xc | 10 ++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/module_usb_audio/main.xc b/module_usb_audio/main.xc index 03c6348e..b40ed91c 100755 --- a/module_usb_audio/main.xc +++ b/module_usb_audio/main.xc @@ -87,8 +87,14 @@ on stdcore[0] : buffered in port:32 p_i2s_adc[I2S_WIRES_ADC] = #define AUDIO_IO_CORE 0 #endif +#if CODEC_SLAVE == 1 on stdcore[AUDIO_IO_CORE] : buffered out port:32 p_lrclk = PORT_I2S_LRCLK; on stdcore[AUDIO_IO_CORE] : buffered out port:32 p_bclk = PORT_I2S_BCLK; +#else +on stdcore[AUDIO_IO_CORE] : in port p_lrclk = PORT_I2S_LRCLK; +on stdcore[AUDIO_IO_CORE] : in port p_bclk = PORT_I2S_BCLK; +#endif + on stdcore[AUDIO_IO_CORE] : port p_mclk = PORT_MCLK_IN; on stdcore[0] : in port p_for_mclk_count = PORT_MCLK_COUNT; diff --git a/module_usb_audio/ports/audioports.xc b/module_usb_audio/ports/audioports.xc index 0bc1a7e1..9d337bff 100644 --- a/module_usb_audio/ports/audioports.xc +++ b/module_usb_audio/ports/audioports.xc @@ -110,11 +110,16 @@ void ConfigAudioPorts(unsigned int divide) /* Pause until output completes */ sync(p_bclk); -#else - /* Stop bit and master clock blocks and clear port buffers */ +#else /* CODEC_SLAVE = 1 */ + + /* Stop bit and master clock blocks */ stop_clock(clk_audio_bclk); stop_clock(clk_audio_mclk); + /* Clock master clock-block from master-clock port - + * though not directly used in I2S slave mode it is required for FB */ + configure_clock_src(clk_audio_mclk, p_mclk); + /* Clock bclk clock-block from bclk pin */ configure_clock_src(clk_audio_bclk, p_bclk); @@ -133,6 +138,7 @@ void ConfigAudioPorts(unsigned int divide) configure_in_port_no_ready(p_lrclk, clk_audio_bclk); start_clock(clk_audio_bclk); + start_clock(clk_audio_mclk); #endif }