/* * board.h * * Created on: 2021Äê9ÔÂ1ÈÕ * Author: graydon */ #ifndef DRV_BOARD_H_ #define DRV_BOARD_H_ #ifdef __cplusplus extern "C" { #endif #include "typedefs.h" #include "sru_dai.h" /* * ΪÁ˺Í21489 ±£³Ö¼æÈÝ£¬ ЭÒ鶨ÒåÈ«²¿²ÉÓÃshortÀàÐÍ * */ ////for dsp-21569 ,sport 0a,0b, sport 1a ,1b, .... ,sport 7a,7b. ////for dsp-21489 ,sport 0,sport 1,...,sport7. struct SportDef{ short spid; short enable; short enable_sec; short interrupt; //clock config. short rx; //rx or tx. short opmode; //0-tdm ,1 - IIS mode short clke; //0-Clock falling edge sample.,1-Clock rising edge sample short lfs; //0-active high Frame sync ,1- Active-Low Frame Sync short mfd; //Frame Delay. short slots; short vld; //valid channel. short vld_b; //for 21489... }; //for PCG A B C D. struct PCGDef{ short enable; short opmode ; //0-iis, 1 -tdm. //invert clock input, only in bypass mode. when fs_div = 0 is in bypass mode. short invert; /*sets the number of input clock periods for which the frame sync output is high. Pulse width should be less than the divisor of the frame sync*/ short width; short sclk_div; //0 or 1: PCG is in bypass mode short fs_div; }; struct SRCDef{ short enable; short format ; //0-left-justified ,1-iis,2-tdm,3-right justified. short wordLen; //0-24bit,1-16bit. short ratio; //output / input ,Q11. }; struct RouteDef{ unsigned short source; unsigned short dest; }; struct DSPConfig{ unsigned short mDualDsp; unsigned short mDspIndex; unsigned short mLevelReportInt; //µçƽÉϱ¨Ê±¼ä unsigned short mLocalTxNum; //unused unsigned short mDanteRxNum; //unused unsigned short mDanteTxNum; //unused unsigned short mConvertUnit; //ת»»µ¥Î», DSPĬÈÏÊÇÌî0-dBFS£¬×ª»»µ½ÆäËûµ¥Î»£¬Ðè¼ÓÉÏ»ò¼õÈ¥¶àÉÙ unsigned short pad[5]; unsigned short mRouteNum; unsigned short mSampleNum; unsigned int mSampleRate; struct SportDef sports[16]; struct PCGDef pcgs[4]; struct RouteDef routes[96]; //variable struct SRCDef srcs[8]; //src0. }; void spu_config(void); void pinmux_config(void); int DDR_config(void); void DAI_config(void); void RouteConfig(struct RouteDef* items, u32 nItems); void SportsConfig(struct SportDef sports[8]); void PCGsConfig(struct PCGDef pcgs[4]); void SRCsConfig(int group , struct SRCDef src[8]); #ifdef __cplusplus } #endif #endif /* DRV_BOARD_H_ */