forked from PAWPAW-Mirror/lib_xua
Initial audio holdoff until SD initialised
This commit is contained in:
@@ -805,6 +805,9 @@ void XUA_AudioHub(chanend ?c_aud, clock ?clk_audio_mclk, clock ?clk_audio_bclk,
|
|||||||
/* Notify clockgen of new mCLk */
|
/* Notify clockgen of new mCLk */
|
||||||
c_mclk_change <: mClk;
|
c_mclk_change <: mClk;
|
||||||
c_mclk_change <: curFreq;
|
c_mclk_change <: curFreq;
|
||||||
|
|
||||||
|
/* Wait for ACK back from clockgen to signal clocks all good */
|
||||||
|
c_mclk_change :> int _;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -347,6 +347,8 @@ void clockGen ( streaming chanend ?c_spdif_rx,
|
|||||||
#if (USE_SW_PLL && (XUA_SPDIF_RX_EN || XUA_ADAT_RX_EN))
|
#if (USE_SW_PLL && (XUA_SPDIF_RX_EN || XUA_ADAT_RX_EN))
|
||||||
chan c_sigma_delta;
|
chan c_sigma_delta;
|
||||||
int reset_sw_pll_pfd = 1;
|
int reset_sw_pll_pfd = 1;
|
||||||
|
int require_ack_to_audio = 0;
|
||||||
|
|
||||||
unsafe {
|
unsafe {
|
||||||
selected_mclk_rate_ptr = &selected_mclk_rate;
|
selected_mclk_rate_ptr = &selected_mclk_rate;
|
||||||
}
|
}
|
||||||
@@ -531,6 +533,17 @@ void clockGen ( streaming chanend ?c_spdif_rx,
|
|||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if ((XUA_SPDIF_RX_EN || XUA_ADAT_RX_EN) && USE_SW_PLL)
|
||||||
|
case inuint_byref(c_sigma_delta, tmp):
|
||||||
|
printstr("ACK\n");
|
||||||
|
if(require_ack_to_audio)
|
||||||
|
{
|
||||||
|
c_mclk_change <: tmp;
|
||||||
|
require_ack_to_audio = 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
|
||||||
#if (XUA_SPDIF_RX_EN || XUA_ADAT_RX_EN)
|
#if (XUA_SPDIF_RX_EN || XUA_ADAT_RX_EN)
|
||||||
case c_mclk_change :> selected_mclk_rate:
|
case c_mclk_change :> selected_mclk_rate:
|
||||||
c_mclk_change :> selected_sample_rate;
|
c_mclk_change :> selected_sample_rate;
|
||||||
@@ -539,6 +552,7 @@ void clockGen ( streaming chanend ?c_spdif_rx,
|
|||||||
mclks_per_sample = selected_mclk_rate / selected_sample_rate;
|
mclks_per_sample = selected_mclk_rate / selected_sample_rate;
|
||||||
restart_sigma_delta(c_sigma_delta);
|
restart_sigma_delta(c_sigma_delta);
|
||||||
reset_sw_pll_pfd = 1;
|
reset_sw_pll_pfd = 1;
|
||||||
|
require_ack_to_audio = 1;
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -137,7 +137,9 @@ void SigmaDeltaTask(chanend c_sigma_delta, unsigned * unsafe selected_mclk_rate_
|
|||||||
tmr :> time_trigger;
|
tmr :> time_trigger;
|
||||||
int running = 1;
|
int running = 1;
|
||||||
|
|
||||||
unsigned rx_word;
|
outuint(c_sigma_delta, 0); /* Signal back via clockgen to audio to start I2S */
|
||||||
|
|
||||||
|
unsigned rx_word = 0;
|
||||||
while(running)
|
while(running)
|
||||||
{
|
{
|
||||||
/* Poll for new SDM control value */
|
/* Poll for new SDM control value */
|
||||||
@@ -146,7 +148,6 @@ void SigmaDeltaTask(chanend c_sigma_delta, unsigned * unsafe selected_mclk_rate_
|
|||||||
case inuint_byref(c_sigma_delta, rx_word):
|
case inuint_byref(c_sigma_delta, rx_word):
|
||||||
if(rx_word == DISABLE_SDM)
|
if(rx_word == DISABLE_SDM)
|
||||||
{
|
{
|
||||||
printhexln(rx_word);
|
|
||||||
f_error = 0;
|
f_error = 0;
|
||||||
running = 0;
|
running = 0;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user