[Feature]Upload Modem source code

Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/driver/audio/src/v1/inc/media.h b/mcu/driver/audio/src/v1/inc/media.h
new file mode 100644
index 0000000..beac009
--- /dev/null
+++ b/mcu/driver/audio/src/v1/inc/media.h
@@ -0,0 +1,342 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2012
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. 
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+
+/*******************************************************************************
+ *
+ * Filename:
+ * ---------
+ * media.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   Media file recording/playback
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+
+#ifndef __MEDIA_H
+#define __MEDIA_H
+
+#include "fs_type.h"
+#include "fsal.h"
+
+#include "l1audio.h"
+#include "l1aud_common_def.h"
+
+
+/*****************************************************************************
+* Function Declaration
+*****************************************************************************/
+// void  mediaHisr( uint16 flag );
+
+
+/* L1Audio_IDMA*/
+//void IDMA_WriteToDSP(volatile kal_uint16 *dst, kal_uint16 *src, kal_uint32 length);
+//void IDMA_FillToDSP(volatile kal_uint16 *dst, kal_uint16 value, kal_uint32 length);
+//void IDMA_ReadFromDSP(kal_uint16 *dst, volatile kal_uint16 *src, kal_uint32 length);
+//void IDMA_ReadFromDSP_Skip_1(kal_uint16 *dst, volatile kal_uint16 *src, kal_uint32 length);
+//void IDMA_WriteToDSP_Duplicate(volatile kal_uint16 *dst, kal_uint16 *src, kal_uint32 length);
+void EMI_ReadFromDSP(kal_uint16 *dst, volatile kal_uint16 *src, kal_uint32 length);
+void EMI_WriteToDSP(volatile kal_uint16 *dst, kal_uint16 *src, kal_uint32 length);
+
+/* For Ring Buffer Access */
+// void  rb_ClearRB( void );
+// int32 rb_GetByteCount( void );
+// int32 rb_GetFreeSpace( void );
+// bool  rb_GetByte( uint8* data_8 );
+// bool  rb_GetWord( uint16* data_16 );
+// bool  rb_GetDWord( uint32* data_32 );
+// bool  rb_PeekByte( uint8* data_8 );
+// bool  rb_PeekWord( uint16* data_16 );
+// bool  rb_PeekDWord( uint32* data_32 );
+// bool  rb_PutByte( uint8 data_8 );
+// bool  rb_PutWord( uint16 data_16 );
+// bool  rb_PutDWord( uint32 data_32 );
+// uint32 rb_SkipNByte( uint32 skip_count );
+// uint32 rb_SkipNWord( uint32 skip_count );
+// uint32 rb_GetWriteIndex( void );
+// uint32 rb_GetReadIndex( void );
+// uint32 rb_GetSize( void );
+// uint16 rb_GetOBFlag( void );
+// uint16 rb_GetOddByte( void );
+//int rb_PutNByte( const uint8 *buffer, int len );
+// nint rb_GetNByte( uint8 *buffer, int len );
+/* For Ring Buffer Access */
+
+
+void  ktInit( uint16 aud_id, uint16 id_num );
+void  ktLock( void );
+void  ktUnlock( void );
+void  toneInit( uint16 aud_id, uint16 id_num );
+
+#define VERIFY_DATA_TO_DSP 0
+
+/* L1CTM interface */ 
+void l1ctm_init( void );
+
+int32        rbGetDataCount( AUD_RB_INFO *rb );
+//kal_uint8    rbGetByte(AUD_RB_INFO *srcRB);
+void         rbGetWriteBuffer( AUD_RB_INFO *rb, kal_uint8 **buffer, kal_uint32 *buf_len );// in bytes
+void         rbGetReadBuffer( AUD_RB_INFO *rb, kal_uint8 **buffer, kal_uint32 *buf_len );// in bytes
+void         rbWriteDataDone( AUD_RB_INFO *rb, kal_uint32 len ); // in bytes
+void         rbReadDataDone( AUD_RB_INFO *rb, kal_uint32 len ); // in bytes
+int32        rbGetFreeSpace( AUD_RB_INFO *rb );
+
+
+// speech enhancement control functions
+// #define SPE_ES_FLAG     (1 << 0) 
+//#define SPE_AEC_FLAG    (1 << 1) 
+// #define SPE_EES_FLAG    (1 << 2) 
+//#define SPE_UL_NR_FLAG  (1 << 3) 
+//#define SPE_DL_NR_FLAG  (1 << 4) 
+//#define SPE_TDDNC_FLAG  (1 << 5)
+//#define SPE_DMNR_FLAG   (1 << 6)
+//#define SPE_AGC_FLAG    (1 << 7)
+#define NUM_OF_SPH_FLAG 8 // if you add new SPE, please remind to revind the table define from uint8 to uint 16
+
+//speech enhancement mask for l1sp.spe_mask usage
+// #define SPH_ENH_MASK_ES    SPE_ES_FLAG
+//#define SPH_ENH_MASK_AEC   SPE_AEC_FLAG
+// #define SPH_ENH_MASK_EES   SPE_EES_FLAG
+//#define SPH_ENH_MASK_ULNR  SPE_UL_NR_FLAG
+//#define SPH_ENH_MASK_DLNR  SPE_DL_NR_FLAG
+//#define SPH_ENH_MASK_TDDNC SPE_TDDNC_FLAG
+//#define SPH_ENH_MASK_DMNR  SPE_DMNR_FLAG
+//#define SPH_ENH_MASK_AGC  SPE_AGC_FLAG
+// #define SPH_ENH_MASK_SIDETONE (1 << NUM_OF_SPH_FLAG) removed
+//#define SPH_ENH_MASK_NOTCH_FILTER (1 << (NUM_OF_SPH_FLAG+1))
+//#define SPH_ENH_MASK_ECHO_REF (1 << (NUM_OF_SPH_FLAG+2))
+
+#define SPE_DMNR_SUPPORT     (1 << 0) 
+#define SPE_TDNC_SUPPORT    (1 << 1) 
+#define SPE_MAGI_CON_SUPPORT (2 << 1) 
+
+
+
+void SPE_Init( void );
+void SPE_ENHCtrlSwitch(uint16 state);
+
+
+void SPE_Clear_DLL_Entry();
+//void SPE_SetULNR( bool ec );
+void SPE_LoadLimiterPara(uint16 para);
+#if defined(_SPE_ENH_MD_PARSE_)
+void SPE_LoadDmnrCoeffs(kal_int16 dmnr_para[NUM_DMNR_PARAM]); 
+void SPE_LoadWbDmnrCoeffs(kal_int16 wb_dmnr_para[NUM_WB_DMNR_PARAM]); 
+void SPE_LoadDmnrLspCoeffs(kal_int16 dmnr_para[NUM_DMNR_PARAM]);
+void SPE_LoadWbDmnrLspCoeffs(kal_int16 wb_dmnr_para[NUM_WB_DMNR_PARAM]);
+void SPE_LoadSWbLspDmnrCoeffs(kal_int16 swb_dmnr_para[NUM_SWB_DMNR_PARAM]);
+void SPE_LoadSWbDmnrCoeffs(kal_int16 swb_dmnr_para[NUM_SWB_DMNR_PARAM]);
+#endif
+
+
+
+/* L1SP interface */ 
+void L1SP_Init( void );
+void SPE_Enable_DLL_Entry(void);
+bool isSPEEnable(void);
+
+#if defined(_SPE_ENH_MD_PARSE_)
+void SetDynamicParToDSP(uint32 IDnumber);
+void L1SP_LoadSpeechPara( void );
+void Set2GDynPar(void);
+void Set3GDynPar(void);
+void Set4GDynPar(void);
+void SetC2KDynPar(void)	;
+void SPE_SetDynamicStatemachine(void);
+#else  // for 95,97
+void SPE_SetDynamicStatemachine(kal_uint32 Offset, kal_uint32 Len); 
+#endif
+
+
+
+
+void L1SP_SetState(kal_uint8 state);
+kal_uint8 L1SP_GetState( void );
+void L1SP_Set_isStandByMode(bool RAB_status);
+bool L1SP_Get_isStandByMode( void );
+void L1SP_Reload_SPE_Para( void );
+void L1SP_Register_Pcm4WayService(void (*onHandler)(void *), void (*offHandler)(void *));
+void L1SP_UnRegister_Pcm4Way_Service( void );
+bool L1SP_isC2KSO_Connected();
+
+kal_bool L1SP_TCH_State( void );
+
+enum{ // RIMIND: please keep following same as em_speech_info_SpeechNetworkType in audio_enum.h
+   L1SP_STATE_IDLE = 0, 
+   L1SP_STATE_2G_SPEECH_ON,
+   L1SP_STATE_3G_SPEECH_ON,
+   L1SP_STATE_3G324M_SPEECH_ON,
+   L1SP_STATE_3G_SPEECH_CLOSING,    
+   L1SP_STATE_4G_SPEECH_ON,
+   L1SP_STATE_4G_SPEECH_CLOSING,   
+   L1SP_STATE_C2K_SPEECH_ON,
+   L1SP_STATE_C2K_SPEECH_CLOSING,      
+   //L1SP_STATE_3G_SPEECH_CLOSED 
+}; 
+
+void sp3g_speech_init( uint8 RAT_Mode );
+void sp3g_speech_close( bool IsInterRAT );
+void sp3g_init( void );//boot up init
+kal_bool   SP3G_Rab_State( void );
+kal_uint32 SP3G_Rab_Id( void );
+void       SP3G_Reset( void );
+void       SP3G_SetRxTypeToNoData( void );
+kal_bool   SP3G_IsDTXOn( void );
+void       SP3G_GetSyncDelayRW( kal_uint16 *u16DelayR, kal_uint16 *u16DelayW, kal_uint16 *u16DelayM, kal_uint32 *u32CurTime64us);
+void       SP3G_UpdateL1AInFo_P( kal_uint8 bitmap, kal_uint8 value );
+kal_uint32 SP3G_GetCodecMode(void);
+
+void sp4g_speech_init( uint8 RAT_Mode );
+void sp4g_speech_close( void );
+void sp4g_init( void );//boot up init
+kal_bool   SP4G_Rab_State( void );
+kal_uint32 SP4G_Rab_Id( void );
+void       SP4G_Reset( void );
+void       SP4G_SetRxTypeToNoData( void );
+kal_bool   SP4G_IsDTXOn( void );
+void       SP4G_GetSyncDelayRW( kal_uint16 *u16DelayR, kal_uint16 *u16DelayW, kal_uint16 *u16DelayM, kal_uint32 *u32CurTime64us);
+
+void      SPC2K_GetSyncDelayRW( uint16 *u2DelR, uint16 *u2DelW, uint16 *u2DelM);
+void      SPC2K_ConSSO_Done( void );
+void      SPC2K_DisconSSO_Done( void );
+
+void      L1SP_C2K_Est(int codec);
+void      L1SP_C2K_DeEst( void );
+void      L1SP_C2K_IntraRAT(int codec);
+
+void      L1SP_SetOpenDSPFlag(kal_uint8 flag);
+kal_uint8 L1SP_GetOpenDSPFlag(void);
+
+kal_uint32 L1Audio_GetEventGroup( void );
+void L1Audio_ExeEventHandler( kal_uint32 event );
+void L1Audio_ActivateHisrHandler(kal_uint16 magic_no, void *userData);
+
+
+// For In Process Call
+void L1Audio_InProcCall(in_proc_call_type func, kal_uint32 func_arg1, void* func_arg2);
+void L1Audio_InProcCall2(in_proc_call_type func, kal_uint32 func_arg1, void* func_arg2);
+
+
+
+// uint32 PCM2Way_GetBandInfo(void);
+
+// Speech related
+void SP_Strm_Init(void);
+
+#endif /* __MEDIA_H */
+
+