#include <string.h>
|
#include "tg_config.h"
|
#include "tg_adapter.h"
|
|
//²ÎÊýlogic_channelÂ߼ͨµÀ´Ó0¿ªÊ¼.
|
s32 tg_hw_adapter_t::get_physical_channel(s32 input , s32 logic_channel)
|
{
|
//s32 phy_channel[] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,18,19};
|
if(input) {
|
s32 input_num = ana_input_num + dante_input_num ;
|
// s32 local_ch = ana_input_num + usb_input_num; // C H G 18
|
if(logic_channel < ana_input_num) {
|
//analog
|
return logic_channel+1;
|
}
|
else if(logic_channel < input_num) {
|
//dante
|
return 19 + (logic_channel - ana_input_num);
|
}
|
else {
|
//usb
|
return 17 + (logic_channel - input_num);
|
}
|
}
|
else { //output
|
s32 output_num = ana_output_num + dante_output_num ;
|
// s32 local_ch = ana_output_num + usb_output_num; // C H G 18
|
//analog
|
if(logic_channel < ana_output_num) {
|
return logic_channel;
|
}
|
else if(logic_channel < output_num) {
|
//dante
|
return 19 + (logic_channel - ana_output_num);
|
}
|
else {
|
//usb
|
return 17 + (logic_channel - output_num);
|
}
|
}
|
}
|
|
//ÎïÀíbuffer¶¨Òå˳ÐòÊÇ16ͨµÀÄ£Äâ+2ͨµÀUSB+32ͨµÀDante.
|
uvoid tg_hw_adapter_t::config_board(struct DSPConfig * conf)
|
{
|
u32 i;
|
s32 mclk = 24576000;
|
|
memset(conf, 0, sizeof(struct DSPConfig));
|
|
conf->mDualDsp = dual_dsp;
|
conf->mDspIndex = dsp_index;
|
conf->mSampleNum = SAMPLE_NUM;
|
conf->mSampleRate = SAMPLE_RATE;
|
conf->mLevelReportInt = 100;
|
conf->mConvertUnit = 0;
|
conf->mIntrNo = intr_sport_no(0);
|
|
//MCLK(DAI0_02),SCLK(DAI0_19),LRCLK(DAI0_20)
|
//analog input(DAI0_05,DAI0_06) + output(DAI0_11,DAI0_12)
|
//sport0a<->input; sport0b<->output.
|
for(i = 0 ;i < 2 ;i ++) {
|
conf->sports[i].spid = i;
|
conf->sports[i].clke = utrue;
|
conf->sports[i].enable = utrue;
|
conf->sports[i].enable_sec = utrue;
|
conf->sports[i].lfs = ufalse;
|
conf->sports[i].mfd = 1;
|
conf->sports[i].opmode = 0 ; //tdm
|
conf->sports[i].rx = ufalse;
|
conf->sports[i].slots = 8;
|
conf->sports[i].vld = 8;
|
conf->sports[i].follow_intr_no = intr_sport_no(0);
|
}
|
conf->sports[0].interrupt = utrue;
|
conf->sports[0].rx = utrue;
|
|
//pcg ²úÉúʱÖÓ
|
conf->pcgs[0].enable = utrue;
|
conf->pcgs[0].opmode = 1;
|
conf->pcgs[0].width = 2;
|
conf->pcgs[0].fs_div = mclk / conf->mSampleRate ;
|
conf->pcgs[0].sclk_div = mclk / (conf->mSampleRate * 8 * 32);
|
|
AddRoute(SourceSignal::DAI0_PB02_O , DestSignal::PCG_EXTA_I);
|
|
AddRoute(SourceSignal::LOGIC_HIGH, DestSignal::DAI0_PBEN20_I);//fs
|
AddRoute(SourceSignal::LOGIC_HIGH, DestSignal::DAI0_PBEN19_I);//sclk
|
AddRoute(SourceSignal::PCG_FSA_O, DestSignal::DAI0_PB20_I);
|
AddRoute(SourceSignal::PCG_CLKA_O, DestSignal::DAI0_PB19_I);
|
AddRoute(SourceSignal::LOGIC_HIGH, DestSignal::INV_DAI0_PB19_I); //·×ª¼«ÐÔ
|
|
AddRoute(SourceSignal::DAI0_PB19_O, DestSignal::SPT0_ACLK_I);
|
AddRoute(SourceSignal::DAI0_PB19_O, DestSignal::SPT0_BCLK_I);
|
AddRoute(SourceSignal::DAI0_PB20_O, DestSignal::SPT0_AFS_I);
|
AddRoute(SourceSignal::DAI0_PB20_O, DestSignal::SPT0_BFS_I);
|
|
|
AddRoute(SourceSignal::DAI0_PB05_O, DestSignal::SPT0_AD0_I);
|
AddRoute(SourceSignal::DAI0_PB06_O, DestSignal::SPT0_AD1_I);
|
|
AddRoute(SourceSignal::LOGIC_HIGH, DestSignal::DAI0_PBEN11_I);
|
AddRoute(SourceSignal::SPT0_BD0_O, DestSignal::DAI0_PB11_I);
|
AddRoute(SourceSignal::LOGIC_HIGH, DestSignal::DAI0_PBEN12_I);
|
AddRoute(SourceSignal::SPT0_BD1_O, DestSignal::DAI0_PB12_I);
|
|
//USB Slave. SCLK(DAI0_8),LRCLK(DAI0_9), RX(DAI0_7),TX(DAI0_10)
|
//sport2A<->input; sport2B<->output
|
for(i =4 ;i < 6; i++) {
|
conf->sports[i].spid = i;
|
conf->sports[i].clke = utrue;
|
conf->sports[i].enable = utrue;
|
conf->sports[i].enable_sec = ufalse;
|
conf->sports[i].lfs = ufalse;
|
conf->sports[i].mfd = 1;
|
conf->sports[i].opmode = 1 ; //i2s
|
conf->sports[i].rx = ufalse;
|
conf->sports[i].slots = 2;
|
conf->sports[i].vld = 2;
|
conf->sports[i].follow_intr_no = intr_sport_no(4);
|
}
|
conf->sports[4].interrupt = utrue;
|
conf->sports[4].rx = utrue;
|
|
//USB pcg.
|
// conf->pcgs[1].enable = utrue;
|
// conf->pcgs[1].opmode = 0;
|
// conf->pcgs[1].fs_div = mclk / conf->mSampleRate ;
|
// conf->pcgs[1].sclk_div = mclk / (conf->mSampleRate * 2 * 32);
|
// AddRoute(SourceSignal::DAI0_PB02_O, DestSignal::PCG_EXTB_I);
|
|
// AddRoute(SourceSignal::LOGIC_HIGH, DestSignal::DAI0_PBEN09_I);//fs
|
// AddRoute(SourceSignal::LOGIC_HIGH, DestSignal::DAI0_PBEN08_I);//sclk
|
// AddRoute(SourceSignal::PCG_FSB_O, DestSignal::DAI0_PB09_I);
|
// AddRoute(SourceSignal::PCG_CLKB_O, DestSignal::DAI0_PB08_I);
|
|
AddRoute(SourceSignal::DAI0_PB08_O, DestSignal::SPT2_ACLK_I);
|
AddRoute(SourceSignal::DAI0_PB09_O, DestSignal::SPT2_AFS_I);
|
AddRoute(SourceSignal::DAI0_PB08_O, DestSignal::SPT2_BCLK_I);
|
AddRoute(SourceSignal::DAI0_PB09_O, DestSignal::SPT2_BFS_I);
|
|
AddRoute(SourceSignal::DAI0_PB07_O, DestSignal::SPT2_AD0_I);
|
AddRoute(SourceSignal::LOGIC_HIGH, DestSignal::DAI0_PBEN10_I);
|
AddRoute(SourceSignal::SPT2_BD0_O, DestSignal::DAI0_PB10_I);
|
|
//Dante Slave
|
//MCLK(DAI1_2),LRCLK(DAI1_20),SCLK(DAI1_19)
|
//TX0(DAI1_12),TX1(DAI1_10),TX2(DAI1_8),TX3(DAI1_6)
|
//RX0(DAI1_11),RX1(DAI1_9),RX2(DAI1_7),RX3(DAI1_5)
|
//sport4a,4b<->RX;sport5a,5b<->TX
|
for(i = 8 ;i < 12 ;i ++) {
|
conf->sports[i].spid = i;
|
conf->sports[i].clke = utrue;
|
conf->sports[i].enable = utrue;
|
conf->sports[i].enable_sec = ufalse;
|
conf->sports[i].lfs = ufalse;
|
conf->sports[i].mfd = 1;
|
conf->sports[i].opmode = 0 ; //tdm
|
conf->sports[i].rx = ufalse;
|
conf->sports[i].slots = 16;
|
conf->sports[i].vld = 16;
|
conf->sports[i].follow_intr_no = intr_sport_no(8);
|
}
|
conf->sports[8].interrupt = utrue;
|
conf->sports[8].rx = conf->sports[9].rx = utrue;
|
|
AddRoute(SourceSignal::DAI1_PB19_O, DestSignal::SPT4_ACLK_I);
|
AddRoute(SourceSignal::DAI1_PB19_O, DestSignal::SPT4_BCLK_I);
|
AddRoute(SourceSignal::DAI1_PB19_O, DestSignal::SPT5_ACLK_I);
|
AddRoute(SourceSignal::DAI1_PB19_O, DestSignal::SPT5_BCLK_I);
|
AddRoute(SourceSignal::DAI1_PB20_O, DestSignal::SPT4_AFS_I);
|
AddRoute(SourceSignal::DAI1_PB20_O, DestSignal::SPT4_BFS_I);
|
AddRoute(SourceSignal::DAI1_PB20_O, DestSignal::SPT5_AFS_I);
|
AddRoute(SourceSignal::DAI1_PB20_O, DestSignal::SPT5_BFS_I);
|
|
AddRoute(SourceSignal::DAI1_PB11_O, DestSignal::SPT4_AD0_I);
|
AddRoute(SourceSignal::DAI1_PB09_O, DestSignal::SPT4_BD0_I);
|
// AddRoute(SourceSignal::DAI1_PB07_O, DestSignal::SPT4_AD0_I);
|
// AddRoute(SourceSignal::DAI1_PB05_O, DestSignal::SPT4_BD0_I);
|
|
AddRoute(SourceSignal::LOGIC_HIGH, DestSignal::DAI1_PBEN12_I);
|
AddRoute(SourceSignal::SPT5_AD0_O, DestSignal::DAI1_PB12_I);
|
AddRoute(SourceSignal::LOGIC_HIGH, DestSignal::DAI1_PBEN10_I);
|
AddRoute(SourceSignal::SPT5_BD0_O, DestSignal::DAI1_PB10_I);
|
// AddRoute(SourceSignal::LOGIC_HIGH, DestSignal::DAI1_PBEN08_I);
|
// AddRoute(SourceSignal::SPT5_AD0_O, DestSignal::DAI1_PB08_I);
|
// AddRoute(SourceSignal::LOGIC_HIGH, DestSignal::DAI1_PBEN06_I);
|
// AddRoute(SourceSignal::SPT5_BD0_O, DestSignal::DAI1_PB06_I);
|
/* TDM8
|
for(i = 8 ;i < 12 ;i ++) {
|
conf->sports[i].spid = i;
|
conf->sports[i].clke = utrue;
|
conf->sports[i].enable = utrue;
|
conf->sports[i].enable_sec = utrue;
|
conf->sports[i].lfs = ufalse;
|
conf->sports[i].mfd = 1;
|
conf->sports[i].opmode = 0 ; //tdm
|
conf->sports[i].rx = ufalse;
|
conf->sports[i].slots = 8;
|
conf->sports[i].vld = 8;
|
conf->sports[i].follow_intr_no = intr_sport_no(8);
|
}
|
conf->sports[8].interrupt = utrue;
|
conf->sports[8].rx = conf->sports[9].rx = utrue;
|
|
AddRoute(SourceSignal::DAI1_PB19_O, DestSignal::SPT4_ACLK_I);
|
AddRoute(SourceSignal::DAI1_PB19_O, DestSignal::SPT4_BCLK_I);
|
AddRoute(SourceSignal::DAI1_PB19_O, DestSignal::SPT5_ACLK_I);
|
AddRoute(SourceSignal::DAI1_PB19_O, DestSignal::SPT5_BCLK_I);
|
AddRoute(SourceSignal::DAI1_PB20_O, DestSignal::SPT4_AFS_I);
|
AddRoute(SourceSignal::DAI1_PB20_O, DestSignal::SPT4_BFS_I);
|
AddRoute(SourceSignal::DAI1_PB20_O, DestSignal::SPT5_AFS_I);
|
AddRoute(SourceSignal::DAI1_PB20_O, DestSignal::SPT5_BFS_I);
|
|
AddRoute(SourceSignal::DAI1_PB11_O, DestSignal::SPT4_AD0_I);
|
AddRoute(SourceSignal::DAI1_PB09_O, DestSignal::SPT4_AD1_I);
|
AddRoute(SourceSignal::DAI1_PB07_O, DestSignal::SPT4_BD0_I);
|
AddRoute(SourceSignal::DAI1_PB05_O, DestSignal::SPT4_BD1_I);
|
|
AddRoute(SourceSignal::LOGIC_HIGH, DestSignal::DAI1_PBEN12_I);
|
AddRoute(SourceSignal::SPT5_AD0_O, DestSignal::DAI1_PB12_I);
|
AddRoute(SourceSignal::LOGIC_HIGH, DestSignal::DAI1_PBEN10_I);
|
AddRoute(SourceSignal::SPT5_AD1_O, DestSignal::DAI1_PB10_I);
|
AddRoute(SourceSignal::LOGIC_HIGH, DestSignal::DAI1_PBEN08_I);
|
AddRoute(SourceSignal::SPT5_BD0_O, DestSignal::DAI1_PB08_I);
|
AddRoute(SourceSignal::LOGIC_HIGH, DestSignal::DAI1_PBEN06_I);
|
AddRoute(SourceSignal::SPT5_BD1_O, DestSignal::DAI1_PB06_I);*/
|
}
|