#define MSP_DSP_ADDRESS 0x12 #define MSP_DEMOD_ADDRESS 0x10 #define MSP_CONTROL_ADDRESS 0x0 #define WRITE_ADDRESS 1 // DSP Register #define MSP_VOL 0x0 #define MSP_BALANCE 0x1 #define MSP_BASS 0x2 #define MSP_TREBLE 0x3 #define MSP_ACB_REG 0x13 #define MSP_VENDOR 0x1e #define MSP_PRODUCT 0x1f #define MSP_MAIN_SRC 0x08 #define MSP_I2S_SRC 0x0B #define MSP_SPDIF_SRC 0x50 #define MSP_SURROUND_SRC 0x4e #define MSP_AUDIO_DELAY 0x58 #define MSP_FM_AM_PRESCALE 0x0E #define MSP_SCART_PRESCALE 0x0D #define MSP_I2S3_PRESCALE 0x11 #define MSP_TH_FOR_CLIP 0x6f #define MSP_AVC 0x29 #define MSP_SUBWOOFER 0x2d #define MSP_MB_STR 0x68 #define MSP_XT_PROCESSING 0x6e #define MSP_DOWNMIX 0x36 #define MSP_SRS_CONF 0x4B #define MSP_MB_HIGH_PASS 0x6c #define MSP_MB_LOW_PASS 0x6b #define MSP_MB_AMP_LIMIT 0x69 #define MSP_MB_WOOFER_LEV 0x2c #define MSP_MB_HMC 0x6a // other register #define MSP_STATUS 0x0200 #define MSP_STANDARD_SEL 0x20 #define MSP_MODUS 0x30 #define MSP_I2S_CONF 0x40 #define MSP_SPDIF_CONF 0x50 #define MSP_RESET 0x0 // Demod register #define MSP_CARRIER_MUTE_THRESHOLD 0x24 #define MSP_AD_CV 0xBB #define MSP_MUTE_DELAY 80 #define FAST_MUTE 0xFF00 #define VOLUME_MASK 0xFF00 #define BALANCE_MASK 0xFF00 #define CLIPPING_MODE_MASK 0x0003 #define UPPER_BYTE_MASK 0xFF00 // TRUBASS RELATIVE DEFINITION #define CORNER_FREQ 0x900 #define MB_ADD 0x2 #define MB_UNFILTER 0x0 #define MB_OFF 0x0 #define DEFAUL_DC_LEVEL 0x4000 #define MB_HIGH_CORNER_FREQUENCY 0x600 #define MB_LOW_CORNER_FREQUENCY 0x900 // DC RELATIVE DEFINITION #define SRS_INPUT_MONO 0x10 #define SRS_FRONT_INPUT_PASSIVE_MATRIX 0 #define DC_OFF 0x0000 typedef enum { AUD_AUTO_STANDARD_DETECTION = 1, AUD_AUTO_M_DUAL_FM_STEREO, AUD_BG_DUAL_FM_STEREO, AUD_DK1_DUAL_FM_STEREO, AUD_DK2_DUAL_FM_STEREO, AUD_DK_FM_MONO_HDEV3, AUD_DK3_DUAL_FM_STEREO, AUD_BG_NICAM_FM, AUD_L_NICAM_AM, AUD_I_NICAM_FM, AUD_DK_NICAM_FM, AUD_DK_FM_MONO_HDEV2, AUD_ID, AUD_BTSC_STEREO = 0x20, AUD_BTSC_MONO_SAP, AUD_M_EIA_J_JAP_STEREO = 0x30, AUD_FM_STEREO_RADIO = 0x40, AUD_SAT_MONO = 0x50, AUD_SAT_STEREO }AUD_AUDIO_STANDARD; typedef struct tag_AUD_SAP{ char sap; char stereo; char signal; }AUD_SAP; typedef enum { AUD_I2S_8_THROUGH = 0, AUD_I2S_8_STRAIGHT, AUD_I2S_8_L_R_EIGHT, AUD_I2S_6_L_R_SIX, AUD_I2S_4_L_R_FOUR, AUD_I2S_2_THROUGH = 0x10 }AUD_I2S_IN; typedef enum { AUD_NO_MATRIX = 0, AUD_GERMAN_STEREO, AUD_KOREAN_STEREO, AUD_SOUNDA_MONO, AUD_SOUNDB_MONO }AUD_SOUND_FOR_FM; typedef enum { AUD_HEAD_PHONE = 0, AUD_LARGE, AUD_MEDIUM, AUD_SMALL, AUD_VERY_SMALL_150, AUD_VERY_SMALL_200 }AUD_SPEAKER; typedef enum{ AUD_SUBW_FREQ = 0, AUD_MP_HP, AUD_MP_LP, AUD_MB_LIM, AUD_MB_HMC, AUD_SUBW_LEVEL }TRUBASS_PARAM; typedef enum { AUD_NO_ERROR = 0, AUD_ERROR_BAD_PARAM, AUD_ERROR_COMMUNICATION }AUD_RESULT; typedef enum { AUD_MAIN_LR = 0, AUD_AUX_LR, AUD_SCART1, AUD_SCART2, AUD_I2S, AUD_QUASI_PEAK_DETECTOR, AUD_SURROUND_PROCESSING_INPUT, AUD_SURROUND_PROCESSING_OUTPUT, AUD_SPDIF_OUTPUT, AUD_OUT_MAX }AUD_OUTPUT; typedef enum { STANDARD_M_KOREA = 0, STANDARD_M_BTSC, STANDARD_M_JAP }AUDIO_STANDARD; typedef enum { AUD_FM_AM = 0, AUD_STEREO_AB, AUD_SCART, AUD_STEREO_A, AUD_STEREO_B, AUD_I2S_1, AUD_I2S_2, AUD_I2S_3_12, AUD_I2S_3_34, AUD_I2S_3_56, AUD_I2S_3_78, AUD_PAD1, AUD_AVC, AUD_MAIN_BASEBAND, AUD_AUX_BASEBAND, AUD_PAD2, AUD_INTERNAL_DELAYED_1, AUD_INTERNAL_DELAYED_2, AUD_EXTERNAL_DELAYED_3, AUD_EXTERNAL_DELAYED_4, AUD_STEREO_A_DELAYED, AUD_STEREO_B_DELAYED, AUD_INPUT_MAX }AUD_SOURCE; typedef enum{ AUD_TH_3DBFS = 0, AUD_TH_2DBFS , AUD_TH_1DBFS , AUD_TH_0DBFS , AUD_TH_N1DBFS, AUD_TH_N2DBFS, AUD_TH_N3DBFS, AUD_TH_N4DBFS, AUD_TH_N5DBFS, AUD_TH_N6DBFS }AUD_TH; typedef enum { CLIPPING_WITH_VOLUME = 0, CLIPPING_WITH_TONE, CLIPPING_WITH_COMPROMISE, CLIPPING_WITH_DYNAMIC }AUD_ANTICLIPPING_Mode; typedef enum { LEFT_ALIGN, RIGHT_ALIGN }I2S_ALIGN; typedef enum { HIGH_LEFT = 0, LOW_LEFT = 1 }I2S_POLARITY; typedef enum { SAMPLE_2 = 0, SAMPLE_MULTI }I2S_SAMPLE; typedef enum { I2S_INPUT = 0, I2S_OUTPUT }I2S_MODE; typedef enum { INPUT_32 = 0, INPUT_16, }I2S_WORD; typedef enum { ONE_DELAY = 0, NO_DELAY }I2S_DELAY; typedef struct tag_AUD_I2S_Config{ I2S_ALIGN align; I2S_POLARITY pol; I2S_SAMPLE mode; I2S_DELAY delay; I2S_WORD bit_word; I2S_MODE in_out; }AUD_I2S_Config; typedef enum{ GPIO_IN = 0, GPIO_OUT }AUD_GPIO_DIRECTION; typedef struct tag_AUD_GPIO_Config{ AUD_GPIO_DIRECTION direction; }AUD_GPIO_Config; AUD_RESULT MSP_Mute(DS_BOOL enable); AUD_RESULT MSP_VolumeSet(int inDB); AUD_RESULT MSP_BalanceSet(char Percentage); AUD_RESULT MSP_SetAntiClipping(AUD_ANTICLIPPING_Mode mode); AUD_RESULT MSP_SetEQ(char trebledb, char bassdb); AUD_RESULT MSP_PrintChipInfo(void); AUD_RESULT MSP_SetGPIO(int num, int val); int MSP_GetGPIO(int num); AUD_RESULT MSP_PreConfigGPIO(AUD_GPIO_Config config); AUD_RESULT MSP_SetAudioMatrix(AUD_OUTPUT out,AUD_SOURCE src); AUD_RESULT MSP_SetScartToDSP(int num); AUD_RESULT MSP_AudioDelaySet(unsigned int Delay); AUD_RESULT MSP_SetPrescale(AUD_SOURCE src, short valuedb); AUD_RESULT MSP_SPDIF_ON_OFF(DS_BOOL enable); AUD_RESULT MSP_SetSVC(DS_BOOL enable); AUD_RESULT MSP_SetSRS(DS_BOOL enable); AUD_RESULT MSP_DemodSet(AUD_AUDIO_STANDARD std); AUD_RESULT MSP_SetSoundForFM(AUD_SOUND_FOR_FM src); AUD_RESULT MSP_Reset(void); AUD_RESULT MSP_Start(void); AUD_RESULT MSP_PresetAudioStandard(AUDIO_STANDARD std); AUD_RESULT MSP_SetI2SInputConfig(AUD_I2S_Config config); AUD_RESULT MSP_GetBTSC(AUD_SAP *src); AUD_RESULT MSP_SetClippingThreshold(AUD_TH th); AUD_RESULT MSP_ChangeTruBassLevel(short val); AUD_RESULT MSP_SetI2S3Matrix(AUD_I2S_IN mode); AUD_RESULT MSP_SetTruBass(DS_BOOL enable,AUD_SPEAKER spk_size, int str); AUD_RESULT MSP_SetDCLevel(short val); AUD_RESULT MSP_SetDC(DS_BOOL enable); AUD_RESULT MSP_AudioDelayPath(AUD_SOURCE src); AUD_RESULT MSP_ChangeTruBassLevel(short val); AUD_RESULT MSP_PresetASS(DS_BOOL enable); AUD_RESULT MSP_SetI2SSync(DS_BOOL enable); AUD_RESULT MSP_SetI2SOutput(int bI2S); AUD_RESULT MSP_SetCarrierMute(DS_BOOL bEn); int test(void); int red(void); int getb(void);