#include #include "tg_config.h" #include "tg_adapter.h" 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 ; 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 { s32 output_num = ana_output_num + dante_output_num ; //output if(logic_channel < ana_output_num) { return logic_channel +1; } else if(logic_channel < output_num) { return 19 + (logic_channel-ana_output_num); } else { 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);*/ }