/*
|
* 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_ */
|