📄 audcodec.c
字号:
iecfs = iecfs | 0x05;
break;
/* /8 */
case C_128K:
M3323AudioMemWrite(APRC_DSP, DMX, APRC_PlayTime_Adr , 16000);
M3323AudioMemWrite(APRC_DSP, DMX, APRC_Fs_Adr , 0x0000);
dacmclksel = 1;
dacdspll = 0;
HighDec = TRUE;
DVDA192KEN = FALSE;
iecfs = iecfs | 0x0C;
break;
case C_176K:
M3323AudioMemWrite(APRC_DSP, DMX, APRC_PlayTime_Adr , 22050);
M3323AudioMemWrite(APRC_DSP, DMX, APRC_Fs_Adr , 0x0001);
dacmclksel = 1;
dacdspll = 0;
HighDec = TRUE;
DVDA192KEN = FALSE;
iecfs = iecfs | 0x03;
break;
case C_192K:
M3323AudioMemWrite(APRC_DSP, DMX, APRC_PlayTime_Adr , 24000);
M3323AudioMemWrite(APRC_DSP, DMX, APRC_Fs_Adr , 0x0002);
dacmclksel = 1;
dacdspll = 0;
HighDec = TRUE;
DVDA192KEN = TRUE;
iecfs = iecfs | 0x07;
break;
default:
/* 30218-61ho : Add Default Audio DAC Setting Fot the default mode */
M3323AudioMemWrite(APRC_DSP, DMX, APRC_PlayTime_Adr , 24000);
M3323AudioMemWrite(APRC_DSP, DMX, APRC_Fs_Adr , 0x0001);
dacdspll = 1;
HighDec = FALSE;
DVDA192KEN = FALSE;
iecfs = iecfs | 0x04;
#ifdef _DEBUG_PRINTF_
//PRINTF("AUDIO: Invalid DAC Sampling Frequency End.\n");
#endif
break;
}
adcextsel = 0;
adcintfsel = 0;
adcintfsel = 1;
#define _ADC_HIGH_SAMP_FREQ_
#ifdef _ADC_HIGH_SAMP_FREQ_
/* ADC Fs = 48K => M3351 */
adcdspll = 3;
#else
adcdspll = 1;
#endif
/* 30316-04ho : Separate IEC Setting From ADC and DAC Setting */
param1 = (daclrclk << 14) + (dacbclk << 13) + ( daclradv << 12) + (firbit << 7);
param2 = (xclksel << 14) + (dacmclksel << 13) + (dacdspll << 10) + (dacstsel << 8) +
(adcdspll << 3) + (adcextsel << 2) + (adcintfsel << 1) + 1; //Welkin: Not Reset ClkGen
SetM3323WORD(0x1E0, param1); /* Config DAC */
SetM3323WORD(0x1E2, param2);
SetM3323BYTE(0x1EF, iecfs);
/* 30316-04ho : Separate IEC Setting From ADC and DAC Setting */
// 31218-hope : Mark this part and move this function to ConfigAudioPLL()
// ConfigIECOutput();
// For CS4391
if ( DVDA192KEN == TRUE )
{
//31204-hope : Add For DAC Programming Flag to avoid double-config DAC
if ( DAC192OK == FALSE )
{
SetCS4391QuadSpeedMode();
#if (CS4360_DAC_ENABLE == 1)
SetCS4360QuadSpeedMode();
#endif
}
DAC192OK = TRUE;
DAC96OK = FALSE;
DAC48OK = FALSE;
}
else if ( HighDec == TRUE )
{
//31204-hope : Add For DAC Programming Flag to avoid double-config DAC
if ( DAC96OK == FALSE )
{
SetCS4391DoubleSpeedMode();
#if (CS4360_DAC_ENABLE == 1)
SetCS4360DoubleSpeedMode();
#endif
}
DAC192OK = FALSE;
DAC96OK = TRUE;
DAC48OK = FALSE;
}
else
{
//31204-hope : Add For DAC Programming Flag to avoid double-config DAC
if ( DAC48OK == FALSE )
{
SetCS4391SingleSpeedMode(fs);
#if (CS4360_DAC_ENABLE == 1)
SetCS4360SingleSpeedMode(fs);
#endif
}
DAC192OK = FALSE;
DAC96OK = FALSE;
DAC48OK = TRUE;
}
#ifdef _DEBUG_PRINTF_
//PRINTF("AUDIO: ConfigACLKGEN() End.\n");
#endif
return (OK);
}
/* 30121-18ho : (END) Add ConfigACLKGEN() */
/* 30316-04ho : Separate IEC Setting From ADC and DAC Setting */
/*------------------------------------------------------------------------
* Func. Name : ConfigIECOutput()
* Description : config hardware according to the Setup Menu
* Arguments : none
* Return Value : none
*------------------------------------------------------------------------*/
tEndCondition ConfigIECOutput(void)
{
WORD param1;
WORD iecdspll;
//40202-hope :: fix IEC 96K Setting for CSS Disk
BOOL IEC96KTMP;
//40202-hope :: fix IEC 96K Setting for CSS Disk
if ( (IEC96KEN == TRUE) && (CSSDisk == TRUE) )
{
IEC96KTMP = FALSE;
}
else
{
IEC96KTMP = IEC96KEN;
}
PRINTF("DVDA192KEN = %d IEC96KEN = %d HighDec = %d\n",DVDA192KEN, IEC96KEN, HighDec);
iecdspll = iectable[DVDA192KEN][IEC96KTMP][HighDec];
/* if ( IEC96KEN == TRUE)
{
if ( HighDec == TRUE )
{
iecdspll = 2;
PRINTF("IEC96K and SRC96K\n");
}
else
{
iecdspll = 1;
PRINTF("IEC96K and SRC48K\n");
}
}
else
{
if ( HighDec == TRUE )
{
iecdspll = 1;
PRINTF("IEC48K and SRC96K\n");
}
else
{
iecdspll = 1 ;
PRINTF("IEC48K and SRC48K\n");
}
}
*/
/* 30501-01hope : Fix IEC Fs Seetting Error */
param1 = (GetM3323WORD(0x1E2)& 0xff3f) | (iecdspll << 6);
SetM3323WORD(0x1E2, param1);
return (OK);
}
/*------------------------------------------------------------------------
* Func. Name : GetAudioFsOut()
* Description : Get Output Frequency
* Arguments : none
* Return Value : none
*------------------------------------------------------------------------*/
tSampFreq GetAudioFsOut(tSampFreq fs_src)
{
tSampFreq fs_out;
#ifdef _DEBUG_PRINTF_
PRINTF("AUDIO: GetAudioFsOut() Begin.\n");
#endif
switch (fs_src)
{
case C_8K:
#if C_8K_YES
fs_out = C_8K;
break;
#elif C_16K_YES
fs_out = C_16K;
break;
#elif C_32K_YES
fs_out = C_32K;
break;
#elif C_64K_YES
fs_out = C_64K;
break;
#elif C_128K_YES
fs_out = C_128K;
break;
#elif C_12K_YES
fs_out = C_12K;
break;
#elif C_24K_YES
fs_out = C_24K;
break;
#elif C_48K_YES
fs_out = C_48K;
break;
#elif C_96K_YES
fs_out = C_96K;
break;
#elif C_192K_YES
fs_out = C_192K;
break;
#else
fs_out = C_8K;
break;
#endif
case C_16K:
#if C_16K_YES
fs_out = C_16K;
break;
#elif C_32K_YES
fs_out = C_32K;
break;
#elif C_64K_YES
fs_out = C_64K;
break;
#elif C_128K_YES
fs_out = C_128K;
break;
#elif C_24K_YES
fs_out = C_24K;
break;
#elif C_48K_YES
fs_out = C_48K;
break;
#elif C_96K_YES
fs_out = C_96K;
break;
#elif C_192K_YES
fs_out = C_192K;
break;
#else
fs_out = C_16K;
break;
#endif
case C_32K:
#if C_32K_YES
fs_out = C_32K;
break;
#elif C_64K_YES
fs_out = C_64K;
break;
#elif C_128K_YES
fs_out = C_128K;
break;
#elif C_48K_YES
fs_out = C_48K;
break;
#elif C_96K_YES
fs_out = C_96K;
break;
#elif C_192K_YES
fs_out = C_192K;
break;
#else
fs_out = C_32K;
break;
#endif
case C_64K:
#if C_64K_YES
fs_out = C_64K;
break;
#elif C_128K_YES
fs_out = C_128K;
break;
#elif C_96K_YES
fs_out = C_96K;
break;
#elif C_192K_YES
fs_out = C_192K;
break;
#else
fs_out = C_64K;
break;
#endif
case C_128K:
#if C_128K_YES
fs_out = C_128K;
break;
#elif C_192K_YES
fs_out = C_192K;
break;
#else
fs_out = C_128K;
break;
#endif
case C_12K:
#if C_12K_YES
fs_out = C_12K;
break;
#elif C_24K_YES
fs_out = C_24K;
break;
#elif C_48K_YES
fs_out = C_48K;
break;
#elif C_96K_YES
fs_out = C_96K;
break;
#elif C_192K_YES
fs_out = C_192K;
break;
#else
fs_out = C_12K;
break;
#endif
case C_24K:
#if C_24K_YES
fs_out = C_24K;
break;
#elif C_48K_YES
fs_out = C_48K;
break;
#elif C_96K_YES
fs_out = C_96K;
break;
#elif C_192K_YES
fs_out = C_192K;
break;
#else
fs_out = C_24K;
break;
#endif
case C_48K:
#if C_48K_YES
fs_out = C_48K;
break;
#elif C_96K_YES
fs_out = C_96K;
break;
#elif C_192K_YES
fs_out = C_192K;
break;
#else
fs_out = C_48K;
break;
#endif
case C_96K:
#if C_96K_YES
fs_out = C_96K;
break;
#elif C_192K_YES
fs_out = C_192K;
break;
#else
fs_out = C_96K;
break;
#endif
case C_192K:
fs_out = C_192K;
break;
case C_11K:
#if C_11K_YES
fs_out = C_11K;
break;
#elif C_22K_YES
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -